blob: e6747adcfdb6f3d16486d458510a3fbab75af0c1 [file] [log] [blame]
Girish Palya5c3d1e32025-04-22 19:52:16 +02001*builtin.txt* For Vim version 9.1. Last change: 2025 Apr 23
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002
3
4 VIM REFERENCE MANUAL by Bram Moolenaar
5
6
7Builtin functions *builtin-functions*
8
Bram Moolenaarf269eab2022-10-03 18:04:35 +01009Note: Expression evaluation can be disabled at compile time, the builtin
10functions are not available then. See |+eval| and |no-eval-feature|.
11
12For functions grouped by what they are used for see |function-list|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000013
141. Overview |builtin-function-list|
152. Details |builtin-function-details|
163. Feature list |feature-list|
174. Matching a pattern in a String |string-match|
18
19==============================================================================
201. Overview *builtin-function-list*
21
22Use CTRL-] on the function name to jump to the full explanation.
23
24USAGE RESULT DESCRIPTION ~
25
26abs({expr}) Float or Number absolute value of {expr}
27acos({expr}) Float arc cosine of {expr}
28add({object}, {item}) List/Blob append {item} to {object}
29and({expr}, {expr}) Number bitwise AND
30append({lnum}, {text}) Number append {text} below line {lnum}
erraelf0837ba2024-06-24 12:27:01 -070031appendbufline({buf}, {lnum}, {text})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000032 Number append {text} below line {lnum}
erraelf0837ba2024-06-24 12:27:01 -070033 in buffer {buf}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000034argc([{winid}]) Number number of files in the argument list
35argidx() Number current index in the argument list
36arglistid([{winnr} [, {tabnr}]]) Number argument list id
37argv({nr} [, {winid}]) String {nr} entry of the argument list
38argv([-1, {winid}]) List the argument list
39asin({expr}) Float arc sine of {expr}
40assert_beeps({cmd}) Number assert {cmd} causes a beep
41assert_equal({exp}, {act} [, {msg}])
42 Number assert {exp} is equal to {act}
43assert_equalfile({fname-one}, {fname-two} [, {msg}])
44 Number assert file contents are equal
45assert_exception({error} [, {msg}])
46 Number assert {error} is in v:exception
47assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
48 Number assert {cmd} fails
49assert_false({actual} [, {msg}])
50 Number assert {actual} is false
51assert_inrange({lower}, {upper}, {actual} [, {msg}])
52 Number assert {actual} is inside the range
53assert_match({pat}, {text} [, {msg}])
54 Number assert {pat} matches {text}
55assert_nobeep({cmd}) Number assert {cmd} does not cause a beep
56assert_notequal({exp}, {act} [, {msg}])
57 Number assert {exp} is not equal {act}
58assert_notmatch({pat}, {text} [, {msg}])
59 Number assert {pat} not matches {text}
60assert_report({msg}) Number report a test failure
61assert_true({actual} [, {msg}]) Number assert {actual} is true
62atan({expr}) Float arc tangent of {expr}
63atan2({expr1}, {expr2}) Float arc tangent of {expr1} / {expr2}
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +010064autocmd_add({acmds}) Bool add a list of autocmds and groups
65autocmd_delete({acmds}) Bool delete a list of autocmds and groups
66autocmd_get([{opts}]) List return a list of autocmds
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000067balloon_gettext() String current text in the balloon
68balloon_show({expr}) none show {expr} inside the balloon
69balloon_split({msg}) List split {msg} as used for a balloon
h-easte80f3452025-01-02 10:40:29 +010070base64_decode({string}) Blob base64 decode {string} characters
71base64_encode({blob}) String base64 encode the bytes in {blob}
Christ van Willegence0ef912024-06-20 23:41:59 +020072bindtextdomain({package}, {path})
Christ van Willegen8252ef12024-07-11 21:36:21 +020073 Bool bind text domain to specified path
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000074blob2list({blob}) List convert {blob} into a list of numbers
Yegappan Lakshmanan166b1752025-01-17 11:48:12 +010075blob2str({blob} [, {options}]) List convert {blob} into a list of strings
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000076browse({save}, {title}, {initdir}, {default})
77 String put up a file requester
78browsedir({title}, {initdir}) String put up a directory requester
79bufadd({name}) Number add a buffer to the buffer list
80bufexists({buf}) Number |TRUE| if buffer {buf} exists
81buflisted({buf}) Number |TRUE| if buffer {buf} is listed
82bufload({buf}) Number load buffer {buf} if not loaded yet
83bufloaded({buf}) Number |TRUE| if buffer {buf} is loaded
84bufname([{buf}]) String Name of the buffer {buf}
85bufnr([{buf} [, {create}]]) Number Number of the buffer {buf}
86bufwinid({buf}) Number window ID of buffer {buf}
87bufwinnr({buf}) Number window number of buffer {buf}
88byte2line({byte}) Number line number at byte count {byte}
Christian Brabandt67672ef2023-04-24 21:09:54 +010089byteidx({expr}, {nr} [, {utf16}])
90 Number byte index of {nr}'th char in {expr}
91byteidxcomp({expr}, {nr} [, {utf16}])
92 Number byte index of {nr}'th char in {expr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000093call({func}, {arglist} [, {dict}])
94 any call {func} with arguments {arglist}
95ceil({expr}) Float round {expr} up
96ch_canread({handle}) Number check if there is something to read
97ch_close({handle}) none close {handle}
98ch_close_in({handle}) none close in part of {handle}
99ch_evalexpr({handle}, {expr} [, {options}])
100 any evaluate {expr} on JSON {handle}
101ch_evalraw({handle}, {string} [, {options}])
102 any evaluate {string} on raw {handle}
103ch_getbufnr({handle}, {what}) Number get buffer number for {handle}/{what}
104ch_getjob({channel}) Job get the Job of {channel}
105ch_info({handle}) String info about channel {handle}
106ch_log({msg} [, {handle}]) none write {msg} in the channel log file
107ch_logfile({fname} [, {mode}]) none start logging channel activity
108ch_open({address} [, {options}])
109 Channel open a channel to {address}
110ch_read({handle} [, {options}]) String read from {handle}
111ch_readblob({handle} [, {options}])
112 Blob read Blob from {handle}
113ch_readraw({handle} [, {options}])
114 String read raw from {handle}
115ch_sendexpr({handle}, {expr} [, {options}])
116 any send {expr} over JSON {handle}
117ch_sendraw({handle}, {expr} [, {options}])
118 any send {expr} over raw {handle}
119ch_setoptions({handle}, {options})
120 none set options for {handle}
121ch_status({handle} [, {options}])
122 String status of channel {handle}
123changenr() Number current change number
124char2nr({expr} [, {utf8}]) Number ASCII/UTF-8 value of first char in {expr}
125charclass({string}) Number character class of {string}
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +0000126charcol({expr} [, {winid}]) Number column number of cursor or mark
Christian Brabandt67672ef2023-04-24 21:09:54 +0100127charidx({string}, {idx} [, {countcc} [, {utf16}]])
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000128 Number char index of byte {idx} in {string}
129chdir({dir}) String change current working directory
130cindent({lnum}) Number C indent for line {lnum}
131clearmatches([{win}]) none clear all matches
Girish Palya92f68e22025-04-21 11:12:41 +0200132cmdcomplete_info() Dict get current cmdline completion
133 information
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +0000134col({expr} [, {winid}]) Number column byte index of cursor or mark
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000135complete({startcol}, {matches}) none set Insert mode completion
136complete_add({expr}) Number add completion match
137complete_check() Number check for key typed during completion
138complete_info([{what}]) Dict get current completion information
139confirm({msg} [, {choices} [, {default} [, {type}]]])
140 Number number of choice picked by user
141copy({expr}) any make a shallow copy of {expr}
142cos({expr}) Float cosine of {expr}
143cosh({expr}) Float hyperbolic cosine of {expr}
144count({comp}, {expr} [, {ic} [, {start}]])
145 Number count how many {expr} are in {comp}
146cscope_connection([{num}, {dbpath} [, {prepend}]])
147 Number checks existence of cscope connection
148cursor({lnum}, {col} [, {off}])
149 Number move cursor to {lnum}, {col}, {off}
150cursor({list}) Number move cursor to position in {list}
151debugbreak({pid}) Number interrupt process being debugged
152deepcopy({expr} [, {noref}]) any make a full copy of {expr}
153delete({fname} [, {flags}]) Number delete the file or directory {fname}
154deletebufline({buf}, {first} [, {last}])
155 Number delete lines from buffer {buf}
156did_filetype() Number |TRUE| if FileType autocmd event used
Yegappan Lakshmananfa378352024-02-01 22:05:27 +0100157diff({fromlist}, {tolist} [, {options}])
158 List diff two Lists of strings
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000159diff_filler({lnum}) Number diff filler lines about {lnum}
160diff_hlID({lnum}, {col}) Number diff highlighting at {lnum}/{col}
161digraph_get({chars}) String get the |digraph| of {chars}
162digraph_getlist([{listall}]) List get all |digraph|s
Christian Brabandtfbc37f12024-06-18 20:50:58 +0200163digraph_set({chars}, {digraph}) Bool register |digraph|
164digraph_setlist({digraphlist}) Bool register multiple |digraph|s
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000165echoraw({expr}) none output {expr} as-is
166empty({expr}) Number |TRUE| if {expr} is empty
167environ() Dict return environment variables
Sean Dewarb0efa492023-07-08 10:35:19 +0100168err_teapot([{expr}]) none give E418, or E503 if {expr} is |TRUE|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000169escape({string}, {chars}) String escape {chars} in {string} with '\'
170eval({string}) any evaluate {string} into its value
171eventhandler() Number |TRUE| if inside an event handler
172executable({expr}) Number 1 if executable {expr} exists
173execute({command}) String execute {command} and get the output
174exepath({expr}) String full path of the command {expr}
175exists({expr}) Number |TRUE| if {expr} exists
176exists_compiled({expr}) Number |TRUE| if {expr} exists at compile time
177exp({expr}) Float exponential of {expr}
178expand({expr} [, {nosuf} [, {list}]])
179 any expand special keywords in {expr}
Yegappan Lakshmanan2b74b682022-04-03 21:30:32 +0100180expandcmd({string} [, {options}])
181 String expand {string} like with `:edit`
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000182extend({expr1}, {expr2} [, {expr3}])
183 List/Dict insert items of {expr2} into {expr1}
184extendnew({expr1}, {expr2} [, {expr3}])
185 List/Dict like |extend()| but creates a new
186 List or Dictionary
187feedkeys({string} [, {mode}]) Number add key sequence to typeahead buffer
Shougo Matsushita60c87432024-06-03 22:59:27 +0200188filecopy({from}, {to}) Number |TRUE| if copying file {from} to {to}
189 worked
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000190filereadable({file}) Number |TRUE| if {file} is a readable file
191filewritable({file}) Number |TRUE| if {file} is a writable file
192filter({expr1}, {expr2}) List/Dict/Blob/String
193 remove items from {expr1} where
194 {expr2} is 0
195finddir({name} [, {path} [, {count}]])
196 String find directory {name} in {path}
197findfile({name} [, {path} [, {count}]])
198 String find file {name} in {path}
199flatten({list} [, {maxdepth}]) List flatten {list} up to {maxdepth} levels
200flattennew({list} [, {maxdepth}])
201 List flatten a copy of {list}
202float2nr({expr}) Number convert Float {expr} to a Number
203floor({expr}) Float round {expr} down
204fmod({expr1}, {expr2}) Float remainder of {expr1} / {expr2}
205fnameescape({fname}) String escape special characters in {fname}
206fnamemodify({fname}, {mods}) String modify file name
207foldclosed({lnum}) Number first line of fold at {lnum} if closed
208foldclosedend({lnum}) Number last line of fold at {lnum} if closed
209foldlevel({lnum}) Number fold level at {lnum}
210foldtext() String line displayed for closed fold
211foldtextresult({lnum}) String text for closed fold at {lnum}
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +0100212foreach({expr1}, {expr2}) List/Tuple/Dict/Blob/String
Ernie Raele79e2072024-01-13 11:47:33 +0100213 for each item in {expr1} call {expr2}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000214foreground() Number bring the Vim window to the foreground
Bram Moolenaaraa534142022-09-15 21:46:02 +0100215fullcommand({name} [, {vim9}]) String get full command from {name}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000216funcref({name} [, {arglist}] [, {dict}])
217 Funcref reference to function {name}
218function({name} [, {arglist}] [, {dict}])
219 Funcref named reference to function {name}
220garbagecollect([{atexit}]) none free memory, breaking cyclic references
221get({list}, {idx} [, {def}]) any get item {idx} from {list} or {def}
222get({dict}, {key} [, {def}]) any get item {key} from {dict} or {def}
223get({func}, {what}) any get property of funcref/partial {func}
224getbufinfo([{buf}]) List information about buffers
225getbufline({buf}, {lnum} [, {end}])
226 List lines {lnum} to {end} of buffer {buf}
Bram Moolenaarce30ccc2022-11-21 19:57:04 +0000227getbufoneline({buf}, {lnum}) String line {lnum} of buffer {buf}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000228getbufvar({buf}, {varname} [, {def}])
229 any variable {varname} in buffer {buf}
mikoto20001083cae2024-11-11 21:24:14 +0100230getcellpixels() List get character cell pixel size
Kota Kato66bb9ae2023-01-17 18:31:56 +0000231getcellwidths() List get character cell width overrides
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000232getchangelist([{buf}]) List list of change list items
zeertzjqe0a2ab32025-02-02 09:14:35 +0100233getchar([{expr} [, {opts}]]) Number or String
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000234 get one character from the user
235getcharmod() Number modifiers for the last typed character
236getcharpos({expr}) List position of cursor, mark, etc.
237getcharsearch() Dict last character search
zeertzjqe0a2ab32025-02-02 09:14:35 +0100238getcharstr([{expr} [, {opts}]]) String get one character from the user
Ruslan Russkikh0407d622024-10-08 22:21:05 +0200239getcmdcomplpat() String return the completion pattern of the
240 current command-line completion
Shougo Matsushita79d599b2022-05-07 12:48:29 +0100241getcmdcompltype() String return the type of the current
242 command-line completion
Shougo Matsushita69084282024-09-23 20:34:47 +0200243getcmdline() String return the current command-line input
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000244getcmdpos() Number return cursor position in command-line
Shougo Matsushita69084282024-09-23 20:34:47 +0200245getcmdprompt() String return the current command-line prompt
Shougo Matsushita79d599b2022-05-07 12:48:29 +0100246getcmdscreenpos() Number return cursor screen position in
247 command-line
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000248getcmdtype() String return current command-line type
249getcmdwintype() String return current command-line window type
250getcompletion({pat}, {type} [, {filtered}])
251 List list of cmdline completion matches
252getcurpos([{winnr}]) List position of the cursor
253getcursorcharpos([{winnr}]) List character position of the cursor
254getcwd([{winnr} [, {tabnr}]]) String get the current working directory
255getenv({name}) String return environment variable
256getfontname([{name}]) String name of font being used
257getfperm({fname}) String file permissions of file {fname}
258getfsize({fname}) Number size in bytes of file {fname}
259getftime({fname}) Number last modification time of file
260getftype({fname}) String description of type of file {fname}
261getimstatus() Number |TRUE| if the IME status is active
262getjumplist([{winnr} [, {tabnr}]])
263 List list of jump list items
264getline({lnum}) String line {lnum} of current buffer
265getline({lnum}, {end}) List lines {lnum} to {end} of current buffer
266getloclist({nr}) List list of location list items
267getloclist({nr}, {what}) Dict get specific location list properties
268getmarklist([{buf}]) List list of global/local marks
269getmatches([{win}]) List list of current matches
270getmousepos() Dict last known mouse position
Bram Moolenaar24dc19c2022-11-14 19:49:15 +0000271getmouseshape() String current mouse shape name
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000272getpid() Number process ID of Vim
273getpos({expr}) List position of cursor, mark, etc.
274getqflist() List list of quickfix items
275getqflist({what}) Dict get specific quickfix list properties
276getreg([{regname} [, 1 [, {list}]]])
277 String or List contents of a register
278getreginfo([{regname}]) Dict information about a register
Shougo Matsushita19b71882024-02-28 22:48:12 +0100279getregion({pos1}, {pos2} [, {opts}])
Shougo Matsushita3f905ab2024-02-21 00:02:45 +0100280 List get the text from {pos1} to {pos2}
Shougo Matsushitab4757e62024-05-07 20:49:24 +0200281getregionpos({pos1}, {pos2} [, {opts}])
282 List get a list of positions for a region
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000283getregtype([{regname}]) String type of a register
Yegappan Lakshmanan520f6ef2022-08-25 17:40:40 +0100284getscriptinfo([{opts}]) List list of sourced scripts
ichizok663d18d2025-01-02 18:06:00 +0100285getstacktrace() List get current stack trace of Vim scripts
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000286gettabinfo([{expr}]) List list of tab pages
287gettabvar({nr}, {varname} [, {def}])
288 any variable {varname} in tab {nr} or {def}
289gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
290 any {name} in {winnr} in tab page {tabnr}
291gettagstack([{nr}]) Dict get the tag stack of window {nr}
h-east52e7cc22024-07-28 17:03:29 +0200292gettext({text} [, {package}]) String lookup translation of {text}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000293getwininfo([{winid}]) List list of info about each window
Bram Moolenaar938ae282023-02-20 20:44:55 +0000294getwinpos([{timeout}]) List X and Y coord in pixels of Vim window
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000295getwinposx() Number X coord in pixels of the Vim window
296getwinposy() Number Y coord in pixels of the Vim window
297getwinvar({nr}, {varname} [, {def}])
298 any variable {varname} in window {nr}
299glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])
300 any expand file wildcards in {expr}
301glob2regpat({expr}) String convert a glob pat into a search pat
302globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
303 String do glob({expr}) for all dirs in {path}
304has({feature} [, {check}]) Number |TRUE| if feature {feature} supported
305has_key({dict}, {key}) Number |TRUE| if {dict} has entry {key}
306haslocaldir([{winnr} [, {tabnr}]])
307 Number |TRUE| if the window executed |:lcd|
308 or |:tcd|
309hasmapto({what} [, {mode} [, {abbr}]])
310 Number |TRUE| if mapping to {what} exists
311histadd({history}, {item}) Number add an item to a history
312histdel({history} [, {item}]) Number remove an item from a history
313histget({history} [, {index}]) String get the item {index} from a history
314histnr({history}) Number highest index of a history
315hlID({name}) Number syntax ID of highlight group {name}
316hlexists({name}) Number |TRUE| if highlight group {name} exists
317hlget([{name} [, {resolve}]]) List get highlight group attributes
318hlset({list}) Number set highlight group attributes
319hostname() String name of the machine Vim is running on
320iconv({expr}, {from}, {to}) String convert encoding of {expr}
Ernie Rael05124252024-07-11 22:10:45 +0200321id({item}) String get unique identity string of item
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000322indent({lnum}) Number indent of line {lnum}
323index({object}, {expr} [, {start} [, {ic}]])
324 Number index in {object} where {expr} appears
Yegappan Lakshmananb2186552022-08-13 13:09:20 +0100325indexof({object}, {expr} [, {opts}]])
326 Number index in {object} where {expr} is true
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000327input({prompt} [, {text} [, {completion}]])
328 String get input from the user
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100329inputdialog({prompt} [, {text} [, {cancelreturn}]])
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000330 String like input() but in a GUI dialog
331inputlist({textlist}) Number let the user pick from a choice list
332inputrestore() Number restore typeahead
333inputsave() Number save and clear typeahead
334inputsecret({prompt} [, {text}]) String like input() but hiding the text
335insert({object}, {item} [, {idx}]) List insert {item} in {object} [before {idx}]
LemonBoyafe04662023-08-23 21:08:11 +0200336instanceof({object}, {class}) Number |TRUE| if {object} is an instance of {class}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000337interrupt() none interrupt script execution
338invert({expr}) Number bitwise invert
LemonBoydca1d402022-04-28 15:26:33 +0100339isabsolutepath({path}) Number |TRUE| if {path} is an absolute path
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000340isdirectory({directory}) Number |TRUE| if {directory} is a directory
341isinf({expr}) Number determine if {expr} is infinity value
342 (positive or negative)
343islocked({expr}) Number |TRUE| if {expr} is locked
344isnan({expr}) Number |TRUE| if {expr} is NaN
345items({dict}) List key-value pairs in {dict}
346job_getchannel({job}) Channel get the channel handle for {job}
347job_info([{job}]) Dict get information about {job}
348job_setoptions({job}, {options}) none set options for {job}
349job_start({command} [, {options}])
350 Job start a job
351job_status({job}) String get the status of {job}
352job_stop({job} [, {how}]) Number stop {job}
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +0100353join({expr} [, {sep}]) String join items in {expr} into one String
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000354js_decode({string}) any decode JS style JSON
355js_encode({expr}) String encode JS style JSON
356json_decode({string}) any decode JSON
357json_encode({expr}) String encode JSON
358keys({dict}) List keys in {dict}
zeertzjqcdc83932022-09-12 13:38:41 +0100359keytrans({string}) String translate internal keycodes to a form
360 that can be used by |:map|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000361len({expr}) Number the length of {expr}
362libcall({lib}, {func}, {arg}) String call {func} in library {lib} with {arg}
363libcallnr({lib}, {func}, {arg}) Number idem, but return a Number
364line({expr} [, {winid}]) Number line nr of cursor, last line or mark
365line2byte({lnum}) Number byte count of line {lnum}
366lispindent({lnum}) Number Lisp indent for line {lnum}
367list2blob({list}) Blob turn {list} of numbers into a Blob
368list2str({list} [, {utf8}]) String turn {list} of numbers into a String
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +0100369list2tuple({list}) Tuple turn {list} of items into a tuple
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000370listener_add({callback} [, {buf}])
371 Number add a callback to listen to changes
372listener_flush([{buf}]) none invoke listener callbacks
373listener_remove({id}) none remove a listener callback
374localtime() Number current time
375log({expr}) Float natural logarithm (base e) of {expr}
376log10({expr}) Float logarithm of Float {expr} to base 10
377luaeval({expr} [, {expr}]) any evaluate |Lua| expression
378map({expr1}, {expr2}) List/Dict/Blob/String
379 change each item in {expr1} to {expr2}
380maparg({name} [, {mode} [, {abbr} [, {dict}]]])
381 String or Dict
382 rhs of mapping {name} in mode {mode}
383mapcheck({name} [, {mode} [, {abbr}]])
384 String check for mappings matching {name}
Ernie Rael09661202022-04-25 14:40:44 +0100385maplist([{abbr}]) List list of all mappings, a dict for each
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000386mapnew({expr1}, {expr2}) List/Dict/Blob/String
387 like |map()| but creates a new List or
388 Dictionary
389mapset({mode}, {abbr}, {dict}) none restore mapping from |maparg()| result
390match({expr}, {pat} [, {start} [, {count}]])
391 Number position where {pat} matches in {expr}
392matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
393 Number highlight {pattern} with {group}
394matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
395 Number highlight positions with {group}
396matcharg({nr}) List arguments of |:match|
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +0100397matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict})
398 List all the {pat} matches in buffer {buf}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000399matchdelete({id} [, {win}]) Number delete match identified by {id}
400matchend({expr}, {pat} [, {start} [, {count}]])
401 Number position where {pat} ends in {expr}
402matchfuzzy({list}, {str} [, {dict}])
403 List fuzzy match {str} in {list}
404matchfuzzypos({list}, {str} [, {dict}])
405 List fuzzy match {str} in {list}
406matchlist({expr}, {pat} [, {start} [, {count}]])
407 List match and submatches of {pat} in {expr}
408matchstr({expr}, {pat} [, {start} [, {count}]])
409 String {count}'th match of {pat} in {expr}
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +0100410matchstrlist({list}, {pat} [, {dict})
411 List all the {pat} matches in {list}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000412matchstrpos({expr}, {pat} [, {start} [, {count}]])
413 List {count}'th match of {pat} in {expr}
414max({expr}) Number maximum value of items in {expr}
415menu_info({name} [, {mode}]) Dict get menu item information
416min({expr}) Number minimum value of items in {expr}
Bram Moolenaar938ae282023-02-20 20:44:55 +0000417mkdir({name} [, {flags} [, {prot}]])
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000418 Number create directory {name}
Doug Kearns9cd9e752024-04-07 17:42:17 +0200419mode([{expr}]) String current editing mode
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000420mzeval({expr}) any evaluate |MzScheme| expression
421nextnonblank({lnum}) Number line nr of non-blank line >= {lnum}
Christ van Willegenc0786752025-02-01 15:42:16 +0100422ngettext({single}, {plural}, {number}[, {domain}])
423 String translate text based on {number}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000424nr2char({expr} [, {utf8}]) String single char with ASCII/UTF-8 value {expr}
425or({expr}, {expr}) Number bitwise OR
426pathshorten({expr} [, {len}]) String shorten directory names in a path
427perleval({expr}) any evaluate |Perl| expression
428popup_atcursor({what}, {options}) Number create popup window near the cursor
429popup_beval({what}, {options}) Number create popup window for 'ballooneval'
430popup_clear() none close all popup windows
431popup_close({id} [, {result}]) none close popup window {id}
432popup_create({what}, {options}) Number create a popup window
433popup_dialog({what}, {options}) Number create a popup window used as a dialog
434popup_filter_menu({id}, {key}) Number filter for a menu popup window
435popup_filter_yesno({id}, {key}) Number filter for a dialog popup window
Bram Moolenaarbdc09a12022-10-07 14:31:45 +0100436popup_findecho() Number get window ID of popup for `:echowin`
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000437popup_findinfo() Number get window ID of info popup window
438popup_findpreview() Number get window ID of preview popup window
439popup_getoptions({id}) Dict get options of popup window {id}
440popup_getpos({id}) Dict get position of popup window {id}
441popup_hide({id}) none hide popup menu {id}
442popup_list() List get a list of window IDs of all popups
443popup_locate({row}, {col}) Number get window ID of popup at position
444popup_menu({what}, {options}) Number create a popup window used as a menu
445popup_move({id}, {options}) none set position of popup window {id}
446popup_notification({what}, {options})
447 Number create a notification popup window
Christian Brabandtfbc37f12024-06-18 20:50:58 +0200448popup_setbuf({id}, {buf}) Bool set the buffer for the popup window {id}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000449popup_setoptions({id}, {options})
450 none set options for popup window {id}
451popup_settext({id}, {text}) none set the text of popup window {id}
452popup_show({id}) none unhide popup window {id}
453pow({x}, {y}) Float {x} to the power of {y}
454prevnonblank({lnum}) Number line nr of non-blank line <= {lnum}
455printf({fmt}, {expr1}...) String format text
456prompt_getprompt({buf}) String get prompt text
457prompt_setcallback({buf}, {expr}) none set prompt callback function
458prompt_setinterrupt({buf}, {text}) none set prompt interrupt function
459prompt_setprompt({buf}, {text}) none set prompt text
460prop_add({lnum}, {col}, {props}) none add one text property
461prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
462 none add multiple text properties
463prop_clear({lnum} [, {lnum-end} [, {props}]])
464 none remove all text properties
465prop_find({props} [, {direction}])
466 Dict search for a text property
467prop_list({lnum} [, {props}]) List text properties in {lnum}
468prop_remove({props} [, {lnum} [, {lnum-end}]])
469 Number remove a text property
470prop_type_add({name}, {props}) none define a new property type
471prop_type_change({name}, {props})
472 none change an existing property type
473prop_type_delete({name} [, {props}])
474 none delete a property type
475prop_type_get({name} [, {props}])
476 Dict get property type values
477prop_type_list([{props}]) List get list of property types
478pum_getpos() Dict position and size of pum if visible
479pumvisible() Number whether popup menu is visible
zeertzjq7c515282024-11-10 20:26:12 +0100480py3eval({expr} [, {locals}]) any evaluate |python3| expression
481pyeval({expr} [, {locals}]) any evaluate |Python| expression
482pyxeval({expr} [, {locals}]) any evaluate |python_x| expression
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000483rand([{expr}]) Number get pseudo-random number
484range({expr} [, {max} [, {stride}]])
485 List items from {expr} to {max}
K.Takata11df3ae2022-10-19 14:02:40 +0100486readblob({fname} [, {offset} [, {size}]])
487 Blob read a |Blob| from {fname}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000488readdir({dir} [, {expr} [, {dict}]])
489 List file names in {dir} selected by {expr}
490readdirex({dir} [, {expr} [, {dict}]])
491 List file info in {dir} selected by {expr}
492readfile({fname} [, {type} [, {max}]])
493 List get list of lines from file {fname}
494reduce({object}, {func} [, {initial}])
495 any reduce {object} using {func}
496reg_executing() String get the executing register name
497reg_recording() String get the recording register name
498reltime([{start} [, {end}]]) List get time value
499reltimefloat({time}) Float turn the time value into a Float
500reltimestr({time}) String turn time value into a String
501remote_expr({server}, {string} [, {idvar} [, {timeout}]])
502 String send expression
503remote_foreground({server}) Number bring Vim server to the foreground
504remote_peek({serverid} [, {retvar}])
505 Number check for reply string
506remote_read({serverid} [, {timeout}])
507 String read reply string
508remote_send({server}, {string} [, {idvar}])
509 String send key sequence
510remote_startserver({name}) none become server {name}
511remove({list}, {idx} [, {end}]) any/List
512 remove items {idx}-{end} from {list}
513remove({blob}, {idx} [, {end}]) Number/Blob
514 remove bytes {idx}-{end} from {blob}
515remove({dict}, {key}) any remove entry {key} from {dict}
516rename({from}, {to}) Number rename (move) file from {from} to {to}
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +0100517repeat({expr}, {count}) List/Tuple/Blob/String
Bakudankun375141e2022-09-09 18:46:47 +0100518 repeat {expr} {count} times
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000519resolve({filename}) String get filename a shortcut points to
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +0100520reverse({obj}) List/Tuple/Blob/String
Yegappan Lakshmanan03ff1c22023-05-06 14:08:21 +0100521 reverse {obj}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000522round({expr}) Float round off {expr}
523rubyeval({expr}) any evaluate |Ruby| expression
524screenattr({row}, {col}) Number attribute at screen position
525screenchar({row}, {col}) Number character at screen position
526screenchars({row}, {col}) List List of characters at screen position
527screencol() Number current cursor column
528screenpos({winid}, {lnum}, {col}) Dict screen row and col of a text character
529screenrow() Number current cursor row
530screenstring({row}, {col}) String characters at screen position
531search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
532 Number search for {pattern}
533searchcount([{options}]) Dict get or update search stats
534searchdecl({name} [, {global} [, {thisblock}]])
535 Number search for variable declaration
536searchpair({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
537 Number search for other end of start/end pair
538searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
539 List search for other end of start/end pair
540searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
541 List search for {pattern}
542server2client({clientid}, {string})
543 Number send reply string
544serverlist() String get a list of available servers
erraelf0837ba2024-06-24 12:27:01 -0700545setbufline({buf}, {lnum}, {text})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000546 Number set line {lnum} to {text} in buffer
erraelf0837ba2024-06-24 12:27:01 -0700547 {buf}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000548setbufvar({buf}, {varname}, {val})
549 none set {varname} in buffer {buf} to {val}
550setcellwidths({list}) none set character cell width overrides
551setcharpos({expr}, {list}) Number set the {expr} position to {list}
552setcharsearch({dict}) Dict set character search from {dict}
Shougo Matsushita07ea5f12022-08-27 12:22:25 +0100553setcmdline({str} [, {pos}]) Number set command-line
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000554setcmdpos({pos}) Number set cursor position in command-line
555setcursorcharpos({list}) Number move cursor to position in {list}
556setenv({name}, {val}) none set environment variable
557setfperm({fname}, {mode}) Number set {fname} file permissions to {mode}
558setline({lnum}, {line}) Number set line {lnum} to {line}
559setloclist({nr}, {list} [, {action}])
560 Number modify location list using {list}
561setloclist({nr}, {list}, {action}, {what})
562 Number modify specific location list props
563setmatches({list} [, {win}]) Number restore a list of matches
564setpos({expr}, {list}) Number set the {expr} position to {list}
565setqflist({list} [, {action}]) Number modify quickfix list using {list}
566setqflist({list}, {action}, {what})
567 Number modify specific quickfix list props
568setreg({n}, {v} [, {opt}]) Number set register to value and type
569settabvar({nr}, {varname}, {val}) none set {varname} in tab page {nr} to {val}
570settabwinvar({tabnr}, {winnr}, {varname}, {val})
571 none set {varname} in window {winnr} in tab
572 page {tabnr} to {val}
573settagstack({nr}, {dict} [, {action}])
574 Number modify tag stack using {dict}
575setwinvar({nr}, {varname}, {val}) none set {varname} in window {nr} to {val}
576sha256({string}) String SHA256 checksum of {string}
577shellescape({string} [, {special}])
578 String escape {string} for use as shell
579 command argument
580shiftwidth([{col}]) Number effective value of 'shiftwidth'
581sign_define({name} [, {dict}]) Number define or update a sign
582sign_define({list}) List define or update a list of signs
583sign_getdefined([{name}]) List get a list of defined signs
584sign_getplaced([{buf} [, {dict}]])
585 List get a list of placed signs
586sign_jump({id}, {group}, {buf})
587 Number jump to a sign
588sign_place({id}, {group}, {name}, {buf} [, {dict}])
589 Number place a sign
590sign_placelist({list}) List place a list of signs
591sign_undefine([{name}]) Number undefine a sign
592sign_undefine({list}) List undefine a list of signs
593sign_unplace({group} [, {dict}])
594 Number unplace a sign
595sign_unplacelist({list}) List unplace a list of signs
596simplify({filename}) String simplify filename as much as possible
597sin({expr}) Float sine of {expr}
598sinh({expr}) Float hyperbolic sine of {expr}
599slice({expr}, {start} [, {end}]) String, List or Blob
600 slice of a String, List or Blob
Bram Moolenaar2007dd42022-02-23 13:17:47 +0000601sort({list} [, {how} [, {dict}]])
602 List sort {list}, compare with {how}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000603sound_clear() none stop playing all sounds
604sound_playevent({name} [, {callback}])
605 Number play an event sound
606sound_playfile({path} [, {callback}])
607 Number play sound file {path}
608sound_stop({id}) none stop playing sound {id}
609soundfold({word}) String sound-fold {word}
610spellbadword() String badly spelled word at cursor
611spellsuggest({word} [, {max} [, {capital}]])
612 List spelling suggestions
613split({expr} [, {pat} [, {keepempty}]])
614 List make |List| from {pat} separated {expr}
615sqrt({expr}) Float square root of {expr}
616srand([{expr}]) List get seed for |rand()|
617state([{what}]) String current state of Vim
Hirohito Higashi195fcc92025-02-01 10:26:58 +0100618str2blob({list} [, {options}]) Blob convert list of strings into a Blob
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000619str2float({expr} [, {quoted}]) Float convert String to Float
620str2list({expr} [, {utf8}]) List convert each character of {expr} to
621 ASCII/UTF-8 value
622str2nr({expr} [, {base} [, {quoted}]])
623 Number convert String to Number
624strcharlen({expr}) Number character length of the String {expr}
625strcharpart({str}, {start} [, {len} [, {skipcc}]])
626 String {len} characters of {str} at
627 character {start}
628strchars({expr} [, {skipcc}]) Number character count of the String {expr}
629strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
630strftime({format} [, {time}]) String format time with a specified format
631strgetchar({str}, {index}) Number get char {index} from {str}
632stridx({haystack}, {needle} [, {start}])
633 Number index of {needle} in {haystack}
634string({expr}) String String representation of {expr} value
635strlen({expr}) Number length of the String {expr}
636strpart({str}, {start} [, {len} [, {chars}]])
637 String {len} bytes/chars of {str} at
638 byte {start}
639strptime({format}, {timestring})
640 Number Convert {timestring} to unix timestamp
641strridx({haystack}, {needle} [, {start}])
642 Number last index of {needle} in {haystack}
643strtrans({expr}) String translate string to make it printable
Christian Brabandt67672ef2023-04-24 21:09:54 +0100644strutf16len({string} [, {countcc}])
645 Number number of UTF-16 code units in {string}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000646strwidth({expr}) Number display cell length of the String {expr}
647submatch({nr} [, {list}]) String or List
648 specific match in ":s" or substitute()
649substitute({expr}, {pat}, {sub}, {flags})
650 String all {pat} in {expr} replaced with {sub}
Bram Moolenaarc216a7a2022-12-05 13:50:55 +0000651swapfilelist() List swap files found in 'directory'
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000652swapinfo({fname}) Dict information about swap file {fname}
653swapname({buf}) String swap file of buffer {buf}
654synID({lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col}
655synIDattr({synID}, {what} [, {mode}])
656 String attribute {what} of syntax ID {synID}
657synIDtrans({synID}) Number translated syntax ID of {synID}
658synconcealed({lnum}, {col}) List info about concealing
659synstack({lnum}, {col}) List stack of syntax IDs at {lnum} and {col}
660system({expr} [, {input}]) String output of shell command/filter {expr}
661systemlist({expr} [, {input}]) List output of shell command/filter {expr}
662tabpagebuflist([{arg}]) List list of buffer numbers in tab page
663tabpagenr([{arg}]) Number number of current or last tab page
664tabpagewinnr({tabarg} [, {arg}]) Number number of current window in tab page
665tagfiles() List tags files used
666taglist({expr} [, {filename}]) List list of tags matching {expr}
667tan({expr}) Float tangent of {expr}
668tanh({expr}) Float hyperbolic tangent of {expr}
669tempname() String name for a temporary file
670term_dumpdiff({filename}, {filename} [, {options}])
671 Number display difference between two dumps
672term_dumpload({filename} [, {options}])
673 Number displaying a screen dump
674term_dumpwrite({buf}, {filename} [, {options}])
675 none dump terminal window contents
676term_getaltscreen({buf}) Number get the alternate screen flag
677term_getansicolors({buf}) List get ANSI palette in GUI color mode
678term_getattr({attr}, {what}) Number get the value of attribute {what}
679term_getcursor({buf}) List get the cursor position of a terminal
680term_getjob({buf}) Job get the job associated with a terminal
681term_getline({buf}, {row}) String get a line of text from a terminal
682term_getscrolled({buf}) Number get the scroll count of a terminal
683term_getsize({buf}) List get the size of a terminal
684term_getstatus({buf}) String get the status of a terminal
685term_gettitle({buf}) String get the title of a terminal
686term_gettty({buf}, [{input}]) String get the tty name of a terminal
687term_list() List get the list of terminal buffers
688term_scrape({buf}, {row}) List get row of a terminal screen
689term_sendkeys({buf}, {keys}) none send keystrokes to a terminal
690term_setansicolors({buf}, {colors})
691 none set ANSI palette in GUI color mode
692term_setapi({buf}, {expr}) none set |terminal-api| function name prefix
693term_setkill({buf}, {how}) none set signal to stop job in terminal
694term_setrestore({buf}, {command}) none set command to restore terminal
695term_setsize({buf}, {rows}, {cols})
696 none set the size of a terminal
697term_start({cmd} [, {options}]) Number open a terminal window and run a job
698term_wait({buf} [, {time}]) Number wait for screen to be updated
699terminalprops() Dict properties of the terminal
700test_alloc_fail({id}, {countdown}, {repeat})
701 none make memory allocation fail
702test_autochdir() none enable 'autochdir' during startup
703test_feedinput({string}) none add key sequence to input buffer
704test_garbagecollect_now() none free memory right now for testing
705test_garbagecollect_soon() none free memory soon for testing
706test_getvalue({string}) any get value of an internal variable
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000707test_gui_event({event}, {args}) bool generate a GUI event for testing
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000708test_ignore_error({expr}) none ignore a specific error
Christopher Plewright20b795e2022-12-20 20:01:58 +0000709test_mswin_event({event}, {args})
710 bool generate MS-Windows event for testing
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000711test_null_blob() Blob null value for testing
712test_null_channel() Channel null value for testing
713test_null_dict() Dict null value for testing
714test_null_function() Funcref null value for testing
715test_null_job() Job null value for testing
716test_null_list() List null value for testing
717test_null_partial() Funcref null value for testing
718test_null_string() String null value for testing
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +0100719test_null_tuple() Tuple null value for testing
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000720test_option_not_set({name}) none reset flag indicating option was set
721test_override({expr}, {val}) none test with Vim internal overrides
722test_refcount({expr}) Number get the reference count of {expr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000723test_setmouse({row}, {col}) none set the mouse position for testing
724test_settime({expr}) none set current time for testing
Doug Kearns9cd9e752024-04-07 17:42:17 +0200725test_srand_seed([{seed}]) none set seed for testing srand()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000726test_unknown() any unknown value for testing
727test_void() any void value for testing
728timer_info([{id}]) List information about timers
729timer_pause({id}, {pause}) none pause or unpause a timer
730timer_start({time}, {callback} [, {options}])
731 Number create a timer
732timer_stop({timer}) none stop a timer
733timer_stopall() none stop all timers
734tolower({expr}) String the String {expr} switched to lowercase
735toupper({expr}) String the String {expr} switched to uppercase
736tr({src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr}
737 to chars in {tostr}
738trim({text} [, {mask} [, {dir}]])
739 String trim characters in {mask} from {text}
740trunc({expr}) Float truncate Float {expr}
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +0100741tuple2list({tuple}) List turn {tuple} of items into a list
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000742type({expr}) Number type of value {expr}
743typename({expr}) String representation of the type of {expr}
744undofile({name}) String undo file name for {name}
Devin J. Pohly5fee1112023-04-23 20:26:59 -0500745undotree([{buf}]) List undo file tree for buffer {buf}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000746uniq({list} [, {func} [, {dict}]])
747 List remove adjacent duplicates from a list
Christian Brabandt67672ef2023-04-24 21:09:54 +0100748utf16idx({string}, {idx} [, {countcc} [, {charidx}]])
749 Number UTF-16 index of byte {idx} in {string}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000750values({dict}) List values in {dict}
zeertzjq825cf812023-08-17 22:55:25 +0200751virtcol({expr} [, {list} [, {winid}])
752 Number or List
LemonBoy0f7a3e12022-05-26 12:10:37 +0100753 screen column of cursor or mark
Bram Moolenaar5a6ec102022-05-27 21:58:00 +0100754virtcol2col({winid}, {lnum}, {col})
755 Number byte index of a character on screen
Doug Kearns9cd9e752024-04-07 17:42:17 +0200756visualmode([{expr}]) String last visual mode used
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000757wildmenumode() Number whether 'wildmenu' mode is active
758win_execute({id}, {command} [, {silent}])
759 String execute {command} in window {id}
760win_findbuf({bufnr}) List find windows containing {bufnr}
761win_getid([{win} [, {tab}]]) Number get window ID for {win} in {tab}
762win_gettype([{nr}]) String type of window {nr}
763win_gotoid({expr}) Number go to window with ID {expr}
764win_id2tabwin({expr}) List get tab and window nr from window ID
765win_id2win({expr}) Number get window nr from window ID
Daniel Steinbergee630312022-01-10 13:36:34 +0000766win_move_separator({nr}) Number move window vertical separator
767win_move_statusline({nr}) Number move window status line
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000768win_screenpos({nr}) List get screen position of window {nr}
769win_splitmove({nr}, {target} [, {options}])
770 Number move window {nr} to split of {target}
771winbufnr({nr}) Number buffer number of window {nr}
772wincol() Number window column of the cursor
773windowsversion() String MS-Windows OS version
774winheight({nr}) Number height of window {nr}
775winlayout([{tabnr}]) List layout of windows in tab {tabnr}
776winline() Number window line of the cursor
777winnr([{expr}]) Number number of current window
778winrestcmd() String returns command to restore window sizes
779winrestview({dict}) none restore view of current window
780winsaveview() Dict save view of current window
781winwidth({nr}) Number width of window {nr}
782wordcount() Dict get byte/char/word statistics
783writefile({object}, {fname} [, {flags}])
784 Number write |Blob| or |List| of lines to file
785xor({expr}, {expr}) Number bitwise XOR
786
787==============================================================================
7882. Details *builtin-function-details*
789
790Not all functions are here, some have been moved to a help file covering the
791specific functionality.
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200792Return type specifies the type for |Vim9-script|, see |vim9-types|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000793
794abs({expr}) *abs()*
795 Return the absolute value of {expr}. When {expr} evaluates to
796 a |Float| abs() returns a |Float|. When {expr} can be
797 converted to a |Number| abs() returns a |Number|. Otherwise
798 abs() gives an error message and returns -1.
799 Examples: >
800 echo abs(1.456)
801< 1.456 >
802 echo abs(-5.456)
803< 5.456 >
804 echo abs(-4)
805< 4
806
807 Can also be used as a |method|: >
808 Compute()->abs()
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200809<
810 Return type: |Number| or |Float| depending on {expr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000811
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000812
813acos({expr}) *acos()*
814 Return the arc cosine of {expr} measured in radians, as a
815 |Float| in the range of [0, pi].
816 {expr} must evaluate to a |Float| or a |Number| in the range
Bram Moolenaar016188f2022-06-06 20:52:59 +0100817 [-1, 1]. Otherwise acos() returns "nan".
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000818 Examples: >
819 :echo acos(0)
820< 1.570796 >
821 :echo acos(-0.5)
822< 2.094395
823
824 Can also be used as a |method|: >
825 Compute()->acos()
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200826<
827 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000828
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000829
830add({object}, {expr}) *add()*
831 Append the item {expr} to |List| or |Blob| {object}. Returns
832 the resulting |List| or |Blob|. Examples: >
833 :let alist = add([1, 2, 3], item)
834 :call add(mylist, "woodstock")
835< Note that when {expr} is a |List| it is appended as a single
836 item. Use |extend()| to concatenate |Lists|.
837 When {object} is a |Blob| then {expr} must be a number.
838 Use |insert()| to add an item at another position.
Bram Moolenaar016188f2022-06-06 20:52:59 +0100839 Returns 1 if {object} is not a |List| or a |Blob|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000840
841 Can also be used as a |method|: >
842 mylist->add(val1)->add(val2)
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200843<
844 Return type: list<{type}> (depending on the given |List|) or
845 |Blob|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000846
847
848and({expr}, {expr}) *and()*
849 Bitwise AND on the two arguments. The arguments are converted
850 to a number. A List, Dict or Float argument causes an error.
LemonBoy0f7a3e12022-05-26 12:10:37 +0100851 Also see `or()` and `xor()`.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000852 Example: >
853 :let flag = and(bits, 0x80)
854< Can also be used as a |method|: >
855 :let flag = bits->and(0x80)
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200856<
857 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000858
859
860append({lnum}, {text}) *append()*
861 When {text} is a |List|: Append each item of the |List| as a
862 text line below line {lnum} in the current buffer.
863 Otherwise append {text} as one text line below line {lnum} in
864 the current buffer.
865 Any type of item is accepted and converted to a String.
866 {lnum} can be zero to insert a line before the first one.
867 {lnum} is used like with |getline()|.
868 Returns 1 for failure ({lnum} out of range or out of memory),
Bram Moolenaarcd9c8d42022-11-05 23:46:43 +0000869 0 for success. When {text} is an empty list zero is returned,
870 no matter the value of {lnum}.
871 In |Vim9| script an invalid argument or negative number
872 results in an error. Example: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000873 :let failed = append(line('$'), "# THE END")
874 :let failed = append(0, ["Chapter 1", "the beginning"])
875
876< Can also be used as a |method| after a List, the base is
877 passed as the second argument: >
878 mylist->append(lnum)
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200879<
880 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000881
882
883appendbufline({buf}, {lnum}, {text}) *appendbufline()*
884 Like |append()| but append the text in buffer {buf}.
885
886 This function works only for loaded buffers. First call
887 |bufload()| if needed.
888
889 For the use of {buf}, see |bufname()|.
890
Bram Moolenaar8b6256f2021-12-28 11:24:49 +0000891 {lnum} is the line number to append below. Note that using
892 |line()| would use the current buffer, not the one appending
893 to. Use "$" to append at the end of the buffer. Other string
894 values are not supported.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000895
896 On success 0 is returned, on failure 1 is returned.
897 In |Vim9| script an error is given for an invalid {lnum}.
898
899 If {buf} is not a valid buffer or {lnum} is not valid, an
900 error message is given. Example: >
901 :let failed = appendbufline(13, 0, "# THE START")
Bram Moolenaarcd9c8d42022-11-05 23:46:43 +0000902< However, when {text} is an empty list then no error is given
903 for an invalid {lnum}, since {lnum} isn't actually used.
904
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000905 Can also be used as a |method| after a List, the base is
906 passed as the second argument: >
907 mylist->appendbufline(buf, lnum)
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200908<
909 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000910
911
912argc([{winid}]) *argc()*
913 The result is the number of files in the argument list. See
914 |arglist|.
915 If {winid} is not supplied, the argument list of the current
916 window is used.
917 If {winid} is -1, the global argument list is used.
918 Otherwise {winid} specifies the window of which the argument
919 list is used: either the window number or the window ID.
920 Returns -1 if the {winid} argument is invalid.
921
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200922 Return type: |Number|
923
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000924 *argidx()*
925argidx() The result is the current index in the argument list. 0 is
926 the first file. argc() - 1 is the last one. See |arglist|.
927
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200928 Return type: |Number|
929
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000930 *arglistid()*
931arglistid([{winnr} [, {tabnr}]])
932 Return the argument list ID. This is a number which
933 identifies the argument list being used. Zero is used for the
934 global argument list. See |arglist|.
935 Returns -1 if the arguments are invalid.
936
937 Without arguments use the current window.
938 With {winnr} only use this window in the current tab page.
939 With {winnr} and {tabnr} use the window in the specified tab
940 page.
941 {winnr} can be the window number or the |window-ID|.
942
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200943 Return type: |Number|
944
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000945 *argv()*
946argv([{nr} [, {winid}]])
947 The result is the {nr}th file in the argument list. See
948 |arglist|. "argv(0)" is the first one. Example: >
949 :let i = 0
950 :while i < argc()
951 : let f = escape(fnameescape(argv(i)), '.')
Bram Moolenaarc51cf032022-02-26 12:25:45 +0000952 : exe 'amenu Arg.' .. f .. ' :e ' .. f .. '<CR>'
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000953 : let i = i + 1
954 :endwhile
955< Without the {nr} argument, or when {nr} is -1, a |List| with
956 the whole |arglist| is returned.
957
958 The {winid} argument specifies the window ID, see |argc()|.
959 For the Vim command line arguments see |v:argv|.
960
Bram Moolenaar016188f2022-06-06 20:52:59 +0100961 Returns an empty string if {nr}th argument is not present in
962 the argument list. Returns an empty List if the {winid}
963 argument is invalid.
964
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200965 Return type: |String|
966
967
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000968asin({expr}) *asin()*
969 Return the arc sine of {expr} measured in radians, as a |Float|
970 in the range of [-pi/2, pi/2].
971 {expr} must evaluate to a |Float| or a |Number| in the range
972 [-1, 1].
Bram Moolenaar016188f2022-06-06 20:52:59 +0100973 Returns "nan" if {expr} is outside the range [-1, 1]. Returns
974 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000975 Examples: >
976 :echo asin(0.8)
977< 0.927295 >
978 :echo asin(-0.5)
979< -0.523599
980
981 Can also be used as a |method|: >
982 Compute()->asin()
Christian Brabandt5674c9a2024-06-09 00:13:43 +0200983<
984 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000985
986assert_ functions are documented here: |assert-functions-details|
987
988
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000989atan({expr}) *atan()*
990 Return the principal value of the arc tangent of {expr}, in
991 the range [-pi/2, +pi/2] radians, as a |Float|.
992 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +0100993 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000994 Examples: >
995 :echo atan(100)
996< 1.560797 >
997 :echo atan(-4.01)
998< -1.326405
999
1000 Can also be used as a |method|: >
1001 Compute()->atan()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001002<
1003 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001004
1005
1006atan2({expr1}, {expr2}) *atan2()*
1007 Return the arc tangent of {expr1} / {expr2}, measured in
1008 radians, as a |Float| in the range [-pi, pi].
1009 {expr1} and {expr2} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01001010 Returns 0.0 if {expr1} or {expr2} is not a |Float| or a
1011 |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001012 Examples: >
1013 :echo atan2(-1, 1)
1014< -0.785398 >
1015 :echo atan2(1, -1)
1016< 2.356194
1017
1018 Can also be used as a |method|: >
1019 Compute()->atan2(1)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001020<
1021 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001022
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001023
1024autocmd_add({acmds}) *autocmd_add()*
1025 Adds a List of autocmds and autocmd groups.
1026
1027 The {acmds} argument is a List where each item is a Dict with
1028 the following optional items:
1029 bufnr buffer number to add a buffer-local autocmd.
1030 If this item is specified, then the "pattern"
1031 item is ignored.
1032 cmd Ex command to execute for this autocmd event
1033 event autocmd event name. Refer to |autocmd-events|.
Yegappan Lakshmanane0ff3a72022-05-27 18:05:33 +01001034 This can be either a String with a single
1035 event name or a List of event names.
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001036 group autocmd group name. Refer to |autocmd-groups|.
1037 If this group doesn't exist then it is
1038 created. If not specified or empty, then the
1039 default group is used.
Yegappan Lakshmanan971f6822022-05-24 11:40:11 +01001040 nested boolean flag, set to v:true to add a nested
1041 autocmd. Refer to |autocmd-nested|.
LemonBoy0f7a3e12022-05-26 12:10:37 +01001042 once boolean flag, set to v:true to add an autocmd
Yegappan Lakshmanan971f6822022-05-24 11:40:11 +01001043 which executes only once. Refer to
1044 |autocmd-once|.
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001045 pattern autocmd pattern string. Refer to
1046 |autocmd-patterns|. If "bufnr" item is
Yegappan Lakshmanane0ff3a72022-05-27 18:05:33 +01001047 present, then this item is ignored. This can
1048 be a String with a single pattern or a List of
1049 patterns.
Yegappan Lakshmanan971f6822022-05-24 11:40:11 +01001050 replace boolean flag, set to v:true to remove all the
1051 commands associated with the specified autocmd
1052 event and group and add the {cmd}. This is
1053 useful to avoid adding the same command
LemonBoy0f7a3e12022-05-26 12:10:37 +01001054 multiple times for an autocmd event in a group.
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001055
1056 Returns v:true on success and v:false on failure.
1057 Examples: >
1058 " Create a buffer-local autocmd for buffer 5
1059 let acmd = {}
1060 let acmd.group = 'MyGroup'
1061 let acmd.event = 'BufEnter'
1062 let acmd.bufnr = 5
1063 let acmd.cmd = 'call BufEnterFunc()'
1064 call autocmd_add([acmd])
Bram Moolenaarcd9c8d42022-11-05 23:46:43 +00001065<
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001066 Can also be used as a |method|: >
1067 GetAutocmdList()->autocmd_add()
1068<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001069 Return type: |vim9-boolean|
1070
1071
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001072autocmd_delete({acmds}) *autocmd_delete()*
1073 Deletes a List of autocmds and autocmd groups.
1074
1075 The {acmds} argument is a List where each item is a Dict with
1076 the following optional items:
1077 bufnr buffer number to delete a buffer-local autocmd.
1078 If this item is specified, then the "pattern"
1079 item is ignored.
1080 cmd Ex command for this autocmd event
1081 event autocmd event name. Refer to |autocmd-events|.
1082 If '*' then all the autocmd events in this
1083 group are deleted.
1084 group autocmd group name. Refer to |autocmd-groups|.
1085 If not specified or empty, then the default
1086 group is used.
1087 nested set to v:true for a nested autocmd.
1088 Refer to |autocmd-nested|.
1089 once set to v:true for an autocmd which executes
1090 only once. Refer to |autocmd-once|.
1091 pattern autocmd pattern string. Refer to
1092 |autocmd-patterns|. If "bufnr" item is
1093 present, then this item is ignored.
1094
1095 If only {group} is specified in a {acmds} entry and {event},
1096 {pattern} and {cmd} are not specified, then that autocmd group
1097 is deleted.
1098
Bram Moolenaar016188f2022-06-06 20:52:59 +01001099 Returns |v:true| on success and |v:false| on failure.
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001100 Examples: >
1101 " :autocmd! BufLeave *.vim
1102 let acmd = #{event: 'BufLeave', pattern: '*.vim'}
1103 call autocmd_delete([acmd]})
1104 " :autocmd! MyGroup1 BufLeave
1105 let acmd = #{group: 'MyGroup1', event: 'BufLeave'}
1106 call autocmd_delete([acmd])
1107 " :autocmd! MyGroup2 BufEnter *.c
1108 let acmd = #{group: 'MyGroup2', event: 'BufEnter',
1109 \ pattern: '*.c'}
1110 " :autocmd! MyGroup2 * *.c
1111 let acmd = #{group: 'MyGroup2', event: '*',
1112 \ pattern: '*.c'}
1113 call autocmd_delete([acmd])
1114 " :autocmd! MyGroup3
1115 let acmd = #{group: 'MyGroup3'}
1116 call autocmd_delete([acmd])
1117<
1118 Can also be used as a |method|: >
1119 GetAutocmdList()->autocmd_delete()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001120<
1121 Return type: |vim9-boolean|
1122
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001123
1124autocmd_get([{opts}]) *autocmd_get()*
1125 Returns a |List| of autocmds. If {opts} is not supplied, then
1126 returns the autocmds for all the events in all the groups.
1127
1128 The optional {opts} Dict argument supports the following
1129 items:
1130 group Autocmd group name. If specified, returns only
1131 the autocmds defined in this group. If the
1132 specified group doesn't exist, results in an
1133 error message. If set to an empty string,
1134 then the default autocmd group is used.
1135 event Autocmd event name. If specified, returns only
1136 the autocmds defined for this event. If set
1137 to "*", then returns autocmds for all the
1138 events. If the specified event doesn't exist,
1139 results in an error message.
1140 pattern Autocmd pattern. If specified, returns only
1141 the autocmds defined for this pattern.
1142 A combination of the above three times can be supplied in
1143 {opts}.
1144
1145 Each Dict in the returned List contains the following items:
1146 bufnr For buffer-local autocmds, buffer number where
1147 the autocmd is defined.
1148 cmd Command executed for this autocmd.
1149 event Autocmd event name.
1150 group Autocmd group name.
Yegappan Lakshmanan971f6822022-05-24 11:40:11 +01001151 nested Boolean flag, set to v:true for a nested
1152 autocmd. See |autocmd-nested|.
1153 once Boolean flag, set to v:true, if the autocmd
1154 will be executed only once. See |autocmd-once|.
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001155 pattern Autocmd pattern. For a buffer-local
1156 autocmd, this will be of the form "<buffer=n>".
1157 If there are multiple commands for an autocmd event in a
1158 group, then separate items are returned for each command.
1159
Bram Moolenaar016188f2022-06-06 20:52:59 +01001160 Returns an empty List if an autocmd with the specified group
1161 or event or pattern is not found.
1162
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001163 Examples: >
1164 " :autocmd MyGroup
1165 echo autocmd_get(#{group: 'Mygroup'})
1166 " :autocmd G BufUnload
1167 echo autocmd_get(#{group: 'G', event: 'BufUnload'})
1168 " :autocmd G * *.ts
1169 let acmd = #{group: 'G', event: '*', pattern: '*.ts'}
1170 echo autocmd_get(acmd)
1171 " :autocmd Syntax
1172 echo autocmd_get(#{event: 'Syntax'})
1173 " :autocmd G BufEnter *.ts
1174 let acmd = #{group: 'G', event: 'BufEnter',
1175 \ pattern: '*.ts'}
1176 echo autocmd_get(acmd)
1177<
1178 Can also be used as a |method|: >
1179 Getopts()->autocmd_get()
1180<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001181 Return type: list<dict<any>>
1182
1183
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001184balloon_gettext() *balloon_gettext()*
1185 Return the current text in the balloon. Only for the string,
Bram Moolenaar016188f2022-06-06 20:52:59 +01001186 not used for the List. Returns an empty string if balloon
1187 is not present.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001188
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001189 Return type: |String|
1190
1191
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001192balloon_show({expr}) *balloon_show()*
1193 Show {expr} inside the balloon. For the GUI {expr} is used as
1194 a string. For a terminal {expr} can be a list, which contains
1195 the lines of the balloon. If {expr} is not a list it will be
1196 split with |balloon_split()|.
1197 If {expr} is an empty string any existing balloon is removed.
1198
1199 Example: >
1200 func GetBalloonContent()
1201 " ... initiate getting the content
1202 return ''
1203 endfunc
1204 set balloonexpr=GetBalloonContent()
1205
1206 func BalloonCallback(result)
1207 call balloon_show(a:result)
1208 endfunc
1209< Can also be used as a |method|: >
1210 GetText()->balloon_show()
1211<
1212 The intended use is that fetching the content of the balloon
1213 is initiated from 'balloonexpr'. It will invoke an
1214 asynchronous method, in which a callback invokes
1215 balloon_show(). The 'balloonexpr' itself can return an
Bram Moolenaar069a7d52022-06-27 22:16:08 +01001216 empty string or a placeholder, e.g. "loading...".
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001217
Bram Moolenaar069a7d52022-06-27 22:16:08 +01001218 When showing a balloon is not possible then nothing happens,
1219 no error message is given.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001220 {only available when compiled with the |+balloon_eval| or
1221 |+balloon_eval_term| feature}
1222
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001223 Return type: |Number|
1224
1225
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001226balloon_split({msg}) *balloon_split()*
1227 Split String {msg} into lines to be displayed in a balloon.
1228 The splits are made for the current window size and optimize
1229 to show debugger output.
Bram Moolenaar016188f2022-06-06 20:52:59 +01001230 Returns a |List| with the split lines. Returns an empty List
1231 on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001232 Can also be used as a |method|: >
1233 GetText()->balloon_split()->balloon_show()
1234
1235< {only available when compiled with the |+balloon_eval_term|
1236 feature}
1237
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001238 Return type: list<any> or list<string>
1239
h-easte80f3452025-01-02 10:40:29 +01001240base64_decode({string}) *base64_decode()*
1241 Return a Blob containing the bytes decoded from the base64
1242 encoded characters in {string}.
1243
1244 The {string} argument should contain only base64-encoded
1245 characters and should have a length that is a multiple of 4.
1246
1247 Returns an empty blob on error.
1248
1249 Examples: >
1250 " Write the decoded contents to a binary file
1251 call writefile(base64_decode(s), 'tools.bmp')
1252 " Decode a base64-encoded string
Maxim Kim6472e582025-01-15 18:31:05 +01001253 echo blob2str(base64_decode(encodedstr))
h-easte80f3452025-01-02 10:40:29 +01001254<
1255 Can also be used as a |method|: >
1256 GetEncodedString()->base64_decode()
1257<
1258 Return type: |Blob|
1259
1260
1261base64_encode({blob}) *base64_encode()*
1262 Return a base64-encoded String representing the bytes in
1263 {blob}. The base64 alphabet defined in RFC 4648 is used.
1264
1265 Examples: >
1266 " Encode the contents of a binary file
1267 echo base64_encode(readblob('somefile.bin'))
1268 " Encode a string
Yegappan Lakshmanana11b23c2025-01-16 19:16:42 +01001269 echo base64_encode(str2blob([somestr]))
h-easte80f3452025-01-02 10:40:29 +01001270<
1271 Can also be used as a |method|: >
1272 GetBinaryData()->base64_encode()
1273<
1274 Return type: |String|
1275
1276
Christ van Willegence0ef912024-06-20 23:41:59 +02001277bindtextdomain({package}, {path}) *bindtextdomain()*
1278 Bind a specific {package} to a {path} so that the
1279 |gettext()| function can be used to get language-specific
1280 translations for a package. {path} is the directory name
h-east52e7cc22024-07-28 17:03:29 +02001281 for the translations. See |package-translation|.
Christ van Willegence0ef912024-06-20 23:41:59 +02001282
Christ van Willegen8252ef12024-07-11 21:36:21 +02001283 Returns v:true on success and v:false on failure (out of
1284 memory).
1285
1286 Return type: |vim9-boolean|
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001287
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001288blob2list({blob}) *blob2list()*
1289 Return a List containing the number value of each byte in Blob
1290 {blob}. Examples: >
1291 blob2list(0z0102.0304) returns [1, 2, 3, 4]
1292 blob2list(0z) returns []
1293< Returns an empty List on error. |list2blob()| does the
1294 opposite.
1295
1296 Can also be used as a |method|: >
1297 GetBlob()->blob2list()
Bram Moolenaarb529cfb2022-07-25 15:42:07 +01001298<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001299 Return type: list<any> or list<number>
1300
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +01001301
1302blob2str({blob} [, {options}]) *blob2str()*
Yegappan Lakshmanana11b23c2025-01-16 19:16:42 +01001303 Return a List of Strings in the current 'encoding' by
1304 converting the bytes in {blob} into characters.
1305
1306 Each <NL> byte in the blob is interpreted as the end of a
1307 string and a new list item is added. Each <NUL> byte in the
1308 blob is converted into a <NL> character.
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +01001309
1310 If {options} is not supplied, the current 'encoding' value is
1311 used to decode the bytes in {blob}.
1312
1313 The argument {options} is a |Dict| and supports the following
1314 items:
1315 encoding Decode the bytes in {blob} using this
1316 encoding. The value is a |String|. See
Bakudankunb3854bf2025-02-23 20:29:21 +01001317 |encoding-names| for the supported values
1318 (plus the special value "none").
Christian Brabandtd5afc742025-03-18 20:55:42 +01001319 *E1515* *E1516*
Bakudankunb3854bf2025-02-23 20:29:21 +01001320 When current 'encoding' is "utf-8", an error is given and an
1321 empty List is returned if an invalid byte sequence is
1322 encountered in {blob}. To suppress this validation and get
1323 potentially invalid string, set "encoding" in {options} to
1324 "none".
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +01001325
Yegappan Lakshmanana11b23c2025-01-16 19:16:42 +01001326 Returns an empty List if blob is empty.
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +01001327
1328 See also |str2blob()|
1329
1330 Examples: >
Hirohito Higashi932a5352025-03-23 10:20:20 +01001331 blob2str(0z6162) returns ['ab']
1332 blob2str(0zC2ABC2BB) returns ['«»']
1333 blob2str(0z610A62) returns ['a', 'b']
1334 blob2str(0z610062) returns ['a\nb']
1335 blob2str(0zABBB, {'encoding': 'latin1'}) returns ['«»']
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +01001336<
1337 Can also be used as a |method|: >
1338 GetBlob()->blob2str()
1339<
Yegappan Lakshmanana11b23c2025-01-16 19:16:42 +01001340 Return type: list<string>
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +01001341
1342
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001343 *browse()*
1344browse({save}, {title}, {initdir}, {default})
1345 Put up a file requester. This only works when "has("browse")"
1346 returns |TRUE| (only in some GUI versions).
1347 The input fields are:
1348 {save} when |TRUE|, select file to write
1349 {title} title for the requester
1350 {initdir} directory to start browsing in
1351 {default} default file name
1352 An empty string is returned when the "Cancel" button is hit,
1353 something went wrong, or browsing is not possible.
1354
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001355 Return type: |String|
1356
1357
1358browsedir({title}, {initdir}) *browsedir()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001359 Put up a directory requester. This only works when
1360 "has("browse")" returns |TRUE| (only in some GUI versions).
1361 On systems where a directory browser is not supported a file
1362 browser is used. In that case: select a file in the directory
1363 to be used.
1364 The input fields are:
1365 {title} title for the requester
1366 {initdir} directory to start browsing in
1367 When the "Cancel" button is hit, something went wrong, or
1368 browsing is not possible, an empty string is returned.
1369
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001370 Return type: |String|
1371
1372
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001373bufadd({name}) *bufadd()*
Bram Moolenaar2eddbac2022-08-25 12:45:21 +01001374 Add a buffer to the buffer list with name {name} (must be a
1375 String).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001376 If a buffer for file {name} already exists, return that buffer
1377 number. Otherwise return the buffer number of the newly
1378 created buffer. When {name} is an empty string then a new
1379 buffer is always created.
1380 The buffer will not have 'buflisted' set and not be loaded
1381 yet. To add some text to the buffer use this: >
1382 let bufnr = bufadd('someName')
1383 call bufload(bufnr)
1384 call setbufline(bufnr, 1, ['some', 'text'])
Bram Moolenaar016188f2022-06-06 20:52:59 +01001385< Returns 0 on error.
1386 Can also be used as a |method|: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001387 let bufnr = 'somename'->bufadd()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001388<
1389 Return type: |Number|
1390
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001391
1392bufexists({buf}) *bufexists()*
1393 The result is a Number, which is |TRUE| if a buffer called
1394 {buf} exists.
1395 If the {buf} argument is a number, buffer numbers are used.
1396 Number zero is the alternate buffer for the current window.
1397
1398 If the {buf} argument is a string it must match a buffer name
1399 exactly. The name can be:
1400 - Relative to the current directory.
1401 - A full path.
1402 - The name of a buffer with 'buftype' set to "nofile".
1403 - A URL name.
1404 Unlisted buffers will be found.
1405 Note that help files are listed by their short name in the
1406 output of |:buffers|, but bufexists() requires using their
1407 long name to be able to find them.
1408 bufexists() may report a buffer exists, but to use the name
1409 with a |:buffer| command you may need to use |expand()|. Esp
1410 for MS-Windows 8.3 names in the form "c:\DOCUME~1"
1411 Use "bufexists(0)" to test for the existence of an alternate
1412 file name.
1413
1414 Can also be used as a |method|: >
1415 let exists = 'somename'->bufexists()
1416<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001417 Return type: |Number|
1418
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001419 Obsolete name: buffer_exists(). *buffer_exists()*
1420
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001421
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001422buflisted({buf}) *buflisted()*
1423 The result is a Number, which is |TRUE| if a buffer called
1424 {buf} exists and is listed (has the 'buflisted' option set).
1425 The {buf} argument is used like with |bufexists()|.
1426
1427 Can also be used as a |method|: >
1428 let listed = 'somename'->buflisted()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001429<
1430 Return type: |Number|
1431
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001432
1433bufload({buf}) *bufload()*
1434 Ensure the buffer {buf} is loaded. When the buffer name
1435 refers to an existing file then the file is read. Otherwise
1436 the buffer will be empty. If the buffer was already loaded
Bram Moolenaar2eddbac2022-08-25 12:45:21 +01001437 then there is no change. If the buffer is not related to a
Daniel Steinbergc2bd2052023-08-09 12:10:59 -04001438 file then no file is read (e.g., when 'buftype' is "nofile").
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001439 If there is an existing swap file for the file of the buffer,
1440 there will be no dialog, the buffer will be loaded anyway.
1441 The {buf} argument is used like with |bufexists()|.
1442
1443 Can also be used as a |method|: >
1444 eval 'somename'->bufload()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001445<
1446 Return type: |Number|
1447
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001448
1449bufloaded({buf}) *bufloaded()*
1450 The result is a Number, which is |TRUE| if a buffer called
1451 {buf} exists and is loaded (shown in a window or hidden).
1452 The {buf} argument is used like with |bufexists()|.
1453
1454 Can also be used as a |method|: >
1455 let loaded = 'somename'->bufloaded()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001456<
1457 Return type: |Number|
1458
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001459
1460bufname([{buf}]) *bufname()*
1461 The result is the name of a buffer. Mostly as it is displayed
1462 by the `:ls` command, but not using special names such as
1463 "[No Name]".
1464 If {buf} is omitted the current buffer is used.
1465 If {buf} is a Number, that buffer number's name is given.
1466 Number zero is the alternate buffer for the current window.
1467 If {buf} is a String, it is used as a |file-pattern| to match
1468 with the buffer names. This is always done like 'magic' is
1469 set and 'cpoptions' is empty. When there is more than one
1470 match an empty string is returned.
1471 "" or "%" can be used for the current buffer, "#" for the
1472 alternate buffer.
1473 A full match is preferred, otherwise a match at the start, end
1474 or middle of the buffer name is accepted. If you only want a
1475 full match then put "^" at the start and "$" at the end of the
1476 pattern.
1477 Listed buffers are found first. If there is a single match
1478 with a listed buffer, that one is returned. Next unlisted
1479 buffers are searched for.
1480 If the {buf} is a String, but you want to use it as a buffer
1481 number, force it to be a Number by adding zero to it: >
1482 :echo bufname("3" + 0)
1483< Can also be used as a |method|: >
1484 echo bufnr->bufname()
1485
1486< If the buffer doesn't exist, or doesn't have a name, an empty
1487 string is returned. >
1488 bufname("#") alternate buffer name
1489 bufname(3) name of buffer 3
1490 bufname("%") name of current buffer
1491 bufname("file2") name of buffer where "file2" matches.
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001492<
1493 Return type: |String|
1494 *buffer_name()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001495 Obsolete name: buffer_name().
1496
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001497
1498bufnr([{buf} [, {create}]]) *bufnr()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001499 The result is the number of a buffer, as it is displayed by
1500 the `:ls` command. For the use of {buf}, see |bufname()|
1501 above.
1502
1503 If the buffer doesn't exist, -1 is returned. Or, if the
1504 {create} argument is present and TRUE, a new, unlisted,
1505 buffer is created and its number is returned. Example: >
1506 let newbuf = bufnr('Scratch001', 1)
1507< Using an empty name uses the current buffer. To create a new
1508 buffer with an empty name use |bufadd()|.
1509
1510 bufnr("$") is the last buffer: >
1511 :let last_buffer = bufnr("$")
1512< The result is a Number, which is the highest buffer number
1513 of existing buffers. Note that not all buffers with a smaller
1514 number necessarily exist, because ":bwipeout" may have removed
1515 them. Use bufexists() to test for the existence of a buffer.
1516
1517 Can also be used as a |method|: >
1518 echo bufref->bufnr()
1519<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001520 Return type: |Number|
1521
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001522 Obsolete name: buffer_number(). *buffer_number()*
1523 *last_buffer_nr()*
1524 Obsolete name for bufnr("$"): last_buffer_nr().
1525
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001526
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001527bufwinid({buf}) *bufwinid()*
1528 The result is a Number, which is the |window-ID| of the first
1529 window associated with buffer {buf}. For the use of {buf},
1530 see |bufname()| above. If buffer {buf} doesn't exist or
1531 there is no such window, -1 is returned. Example: >
1532
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001533 echo "A window containing buffer 1 is " .. (bufwinid(1))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001534<
Bram Moolenaar76db9e02022-11-09 21:21:04 +00001535 Only deals with the current tab page. See |win_findbuf()| for
1536 finding more.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001537
1538 Can also be used as a |method|: >
1539 FindBuffer()->bufwinid()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001540<
1541 Return type: |Number|
1542
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001543
1544bufwinnr({buf}) *bufwinnr()*
1545 Like |bufwinid()| but return the window number instead of the
1546 |window-ID|.
1547 If buffer {buf} doesn't exist or there is no such window, -1
1548 is returned. Example: >
1549
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001550 echo "A window containing buffer 1 is " .. (bufwinnr(1))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001551
1552< The number can be used with |CTRL-W_w| and ":wincmd w"
1553 |:wincmd|.
1554
1555 Can also be used as a |method|: >
1556 FindBuffer()->bufwinnr()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001557<
1558 Return type: |Number|
1559
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001560
1561byte2line({byte}) *byte2line()*
1562 Return the line number that contains the character at byte
1563 count {byte} in the current buffer. This includes the
1564 end-of-line character, depending on the 'fileformat' option
1565 for the current buffer. The first character has byte count
1566 one.
1567 Also see |line2byte()|, |go| and |:goto|.
1568
Bram Moolenaar016188f2022-06-06 20:52:59 +01001569 Returns -1 if the {byte} value is invalid.
1570
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001571 Can also be used as a |method|: >
1572 GetOffset()->byte2line()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001573<
1574 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001575
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001576 {not available when compiled without the |+byte_offset|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001577 feature}
1578
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001579
Christian Brabandt67672ef2023-04-24 21:09:54 +01001580byteidx({expr}, {nr} [, {utf16}]) *byteidx()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001581 Return byte index of the {nr}'th character in the String
1582 {expr}. Use zero for the first character, it then returns
1583 zero.
1584 If there are no multibyte characters the returned value is
1585 equal to {nr}.
1586 Composing characters are not counted separately, their byte
1587 length is added to the preceding base character. See
1588 |byteidxcomp()| below for counting composing characters
1589 separately.
Christian Brabandt67672ef2023-04-24 21:09:54 +01001590 When {utf16} is present and TRUE, {nr} is used as the UTF-16
1591 index in the String {expr} instead of as the character index.
1592 The UTF-16 index is the index in the string when it is encoded
1593 with 16-bit words. If the specified UTF-16 index is in the
1594 middle of a character (e.g. in a 4-byte character), then the
1595 byte index of the first byte in the character is returned.
1596 Refer to |string-offset-encoding| for more information.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001597 Example : >
1598 echo matchstr(str, ".", byteidx(str, 3))
1599< will display the fourth character. Another way to do the
1600 same: >
1601 let s = strpart(str, byteidx(str, 3))
1602 echo strpart(s, 0, byteidx(s, 1))
1603< Also see |strgetchar()| and |strcharpart()|.
1604
1605 If there are less than {nr} characters -1 is returned.
1606 If there are exactly {nr} characters the length of the string
1607 in bytes is returned.
Christian Brabandt67672ef2023-04-24 21:09:54 +01001608 See |charidx()| and |utf16idx()| for getting the character and
1609 UTF-16 index respectively from the byte index.
1610 Examples: >
1611 echo byteidx('a😊😊', 2) returns 5
1612 echo byteidx('a😊😊', 2, 1) returns 1
1613 echo byteidx('a😊😊', 3, 1) returns 5
1614<
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001615 Can also be used as a |method|: >
1616 GetName()->byteidx(idx)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001617<
1618 Return type: |Number|
1619
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001620
Christian Brabandt67672ef2023-04-24 21:09:54 +01001621byteidxcomp({expr}, {nr} [, {utf16}]) *byteidxcomp()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001622 Like byteidx(), except that a composing character is counted
1623 as a separate character. Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001624 let s = 'e' .. nr2char(0x301)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001625 echo byteidx(s, 1)
1626 echo byteidxcomp(s, 1)
1627 echo byteidxcomp(s, 2)
1628< The first and third echo result in 3 ('e' plus composing
1629 character is 3 bytes), the second echo results in 1 ('e' is
1630 one byte).
1631 Only works differently from byteidx() when 'encoding' is set
1632 to a Unicode encoding.
1633
1634 Can also be used as a |method|: >
1635 GetName()->byteidxcomp(idx)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001636<
1637 Return type: |Number|
1638
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001639
1640call({func}, {arglist} [, {dict}]) *call()* *E699*
1641 Call function {func} with the items in |List| {arglist} as
1642 arguments.
1643 {func} can either be a |Funcref| or the name of a function.
1644 a:firstline and a:lastline are set to the cursor line.
1645 Returns the return value of the called function.
1646 {dict} is for functions with the "dict" attribute. It will be
1647 used to set the local variable "self". |Dictionary-function|
1648
1649 Can also be used as a |method|: >
1650 GetFunc()->call([arg, arg], dict)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001651<
1652 Return type: any, depending on {func}
1653
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001654
1655ceil({expr}) *ceil()*
1656 Return the smallest integral value greater than or equal to
1657 {expr} as a |Float| (round up).
1658 {expr} must evaluate to a |Float| or a |Number|.
1659 Examples: >
1660 echo ceil(1.456)
1661< 2.0 >
1662 echo ceil(-5.456)
1663< -5.0 >
1664 echo ceil(4.0)
1665< 4.0
1666
Bram Moolenaar016188f2022-06-06 20:52:59 +01001667 Returns 0.0 if {expr} is not a |Float| or a |Number|.
1668
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001669 Can also be used as a |method|: >
1670 Compute()->ceil()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001671<
1672 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001673
1674
1675ch_ functions are documented here: |channel-functions-details|
1676
1677
1678changenr() *changenr()*
1679 Return the number of the most recent change. This is the same
1680 number as what is displayed with |:undolist| and can be used
1681 with the |:undo| command.
1682 When a change was made it is the number of that change. After
1683 redo it is the number of the redone change. After undo it is
1684 one less than the number of the undone change.
Bram Moolenaar016188f2022-06-06 20:52:59 +01001685 Returns 0 if the undo list is empty.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001686
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001687 Return type: |Number|
1688
1689
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001690char2nr({string} [, {utf8}]) *char2nr()*
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01001691 Return Number value of the first char in {string}.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001692 Examples: >
1693 char2nr(" ") returns 32
1694 char2nr("ABC") returns 65
1695< When {utf8} is omitted or zero, the current 'encoding' is used.
1696 Example for "utf-8": >
1697 char2nr("á") returns 225
1698 char2nr("á"[0]) returns 195
1699< When {utf8} is TRUE, always treat as UTF-8 characters.
1700 A combining character is a separate character.
1701 |nr2char()| does the opposite.
1702 To turn a string into a list of character numbers: >
1703 let str = "ABC"
1704 let list = map(split(str, '\zs'), {_, val -> char2nr(val)})
1705< Result: [65, 66, 67]
1706
Bram Moolenaar016188f2022-06-06 20:52:59 +01001707 Returns 0 if {string} is not a |String|.
1708
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001709 Can also be used as a |method|: >
1710 GetChar()->char2nr()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001711<
1712 Return type: |Number|
1713
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001714
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001715charclass({string}) *charclass()*
1716 Return the character class of the first character in {string}.
1717 The character class is one of:
1718 0 blank
1719 1 punctuation
Christian Brabandtb5e7da12024-11-01 09:33:00 +01001720 2 word character (depends on 'iskeyword')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001721 3 emoji
1722 other specific Unicode class
1723 The class is used in patterns and word motions.
Bram Moolenaar016188f2022-06-06 20:52:59 +01001724 Returns 0 if {string} is not a |String|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001725
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001726 Return type: |Number|
1727
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001728
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +00001729charcol({expr} [, {winid}]) *charcol()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001730 Same as |col()| but returns the character index of the column
1731 position given with {expr} instead of the byte position.
1732
1733 Example:
1734 With the cursor on '세' in line 5 with text "여보세요": >
1735 charcol('.') returns 3
1736 col('.') returns 7
1737
1738< Can also be used as a |method|: >
1739 GetPos()->col()
1740<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001741 Return type: |Number|
1742
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001743 *charidx()*
Christian Brabandt67672ef2023-04-24 21:09:54 +01001744charidx({string}, {idx} [, {countcc} [, {utf16}]])
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001745 Return the character index of the byte at {idx} in {string}.
1746 The index of the first character is zero.
1747 If there are no multibyte characters the returned value is
1748 equal to {idx}.
Christian Brabandt67672ef2023-04-24 21:09:54 +01001749
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001750 When {countcc} is omitted or |FALSE|, then composing characters
Christian Brabandt67672ef2023-04-24 21:09:54 +01001751 are not counted separately, their byte length is added to the
1752 preceding base character.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001753 When {countcc} is |TRUE|, then composing characters are
1754 counted as separate characters.
Christian Brabandt67672ef2023-04-24 21:09:54 +01001755
1756 When {utf16} is present and TRUE, {idx} is used as the UTF-16
1757 index in the String {expr} instead of as the byte index.
1758
Yegappan Lakshmanan577922b2023-06-08 17:09:45 +01001759 Returns -1 if the arguments are invalid or if there are less
1760 than {idx} bytes. If there are exactly {idx} bytes the length
1761 of the string in characters is returned.
1762
1763 An error is given and -1 is returned if the first argument is
1764 not a string, the second argument is not a number or when the
1765 third argument is present and is not zero or one.
Christian Brabandt67672ef2023-04-24 21:09:54 +01001766
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001767 See |byteidx()| and |byteidxcomp()| for getting the byte index
Christian Brabandt67672ef2023-04-24 21:09:54 +01001768 from the character index and |utf16idx()| for getting the
1769 UTF-16 index from the character index.
1770 Refer to |string-offset-encoding| for more information.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001771 Examples: >
1772 echo charidx('áb́ć', 3) returns 1
1773 echo charidx('áb́ć', 6, 1) returns 4
1774 echo charidx('áb́ć', 16) returns -1
Christian Brabandt67672ef2023-04-24 21:09:54 +01001775 echo charidx('a😊😊', 4, 0, 1) returns 2
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001776<
1777 Can also be used as a |method|: >
1778 GetName()->charidx(idx)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001779<
1780 Return type: |Number|
1781
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001782
1783chdir({dir}) *chdir()*
1784 Change the current working directory to {dir}. The scope of
1785 the directory change depends on the directory of the current
1786 window:
1787 - If the current window has a window-local directory
1788 (|:lcd|), then changes the window local directory.
1789 - Otherwise, if the current tabpage has a local
1790 directory (|:tcd|) then changes the tabpage local
1791 directory.
1792 - Otherwise, changes the global directory.
1793 {dir} must be a String.
1794 If successful, returns the previous working directory. Pass
1795 this to another chdir() to restore the directory.
1796 On failure, returns an empty string.
1797
1798 Example: >
1799 let save_dir = chdir(newdir)
1800 if save_dir != ""
1801 " ... do some work
1802 call chdir(save_dir)
1803 endif
1804
1805< Can also be used as a |method|: >
1806 GetDir()->chdir()
1807<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001808 Return type: |String|
1809
1810
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001811cindent({lnum}) *cindent()*
1812 Get the amount of indent for line {lnum} according the C
1813 indenting rules, as with 'cindent'.
1814 The indent is counted in spaces, the value of 'tabstop' is
1815 relevant. {lnum} is used just like in |getline()|.
Bram Moolenaar8e145b82022-05-21 20:17:31 +01001816 When {lnum} is invalid -1 is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001817 See |C-indenting|.
1818
1819 Can also be used as a |method|: >
1820 GetLnum()->cindent()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001821<
1822 Return type: |Number|
1823
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001824
1825clearmatches([{win}]) *clearmatches()*
1826 Clears all matches previously defined for the current window
1827 by |matchadd()| and the |:match| commands.
1828 If {win} is specified, use the window with this number or
1829 window ID instead of the current window.
1830
1831 Can also be used as a |method|: >
1832 GetWin()->clearmatches()
1833<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001834 Return type: |Number|
1835
1836
Girish Palya5c3d1e32025-04-22 19:52:16 +02001837cmdcomplete_info() *cmdcomplete_info()*
Girish Palya92f68e22025-04-21 11:12:41 +02001838 Returns a |Dictionary| with information about cmdline
1839 completion. See |cmdline-completion|.
1840 The items are:
1841 cmdline_orig The original command-line string before
1842 completion began.
1843 pum_visible |TRUE| if popup menu is visible.
1844 See |pumvisible()|.
1845 matches List of all completion candidates. Each item
1846 is a string.
1847 selected Selected item index. First index is zero.
1848 Index is -1 if no item is selected (showing
1849 typed text only, or the last completion after
1850 no item is selected when using the <Up> or
1851 <Down> keys)
1852
1853 Returns an empty |Dictionary| if no completion was attempted,
1854 if there was only one candidate and it was fully completed, or
1855 if an error occurred.
1856
1857 Return type: dict<any>
1858
1859
Bram Moolenaar10e8ff92023-06-10 21:40:39 +01001860col({expr} [, {winid}]) *col()*
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +00001861 The result is a Number, which is the byte index of the column
zeertzjq02f3eba2024-06-12 20:45:24 +02001862 position given with {expr}.
1863 For accepted positions see |getpos()|.
zeertzjqd353d272024-06-13 23:00:25 +08001864 When {expr} is "$", it means the end of the cursor line, so
1865 the result is the number of bytes in the cursor line plus one.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001866 Additionally {expr} can be [lnum, col]: a |List| with the line
1867 and column number. Most useful when the column is "$", to get
1868 the last column of a specific line. When "lnum" or "col" is
1869 out of range then col() returns zero.
zeertzjq02f3eba2024-06-12 20:45:24 +02001870
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +00001871 With the optional {winid} argument the values are obtained for
1872 that window instead of the current window.
zeertzjq02f3eba2024-06-12 20:45:24 +02001873
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001874 To get the line number use |line()|. To get both use
1875 |getpos()|.
1876 For the screen column position use |virtcol()|. For the
1877 character position use |charcol()|.
zeertzjq02f3eba2024-06-12 20:45:24 +02001878
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001879 Note that only marks in the current file can be used.
zeertzjq02f3eba2024-06-12 20:45:24 +02001880
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001881 Examples: >
1882 col(".") column of cursor
1883 col("$") length of cursor line plus one
1884 col("'t") column of mark t
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001885 col("'" .. markname) column of mark markname
zeertzjq02f3eba2024-06-12 20:45:24 +02001886<
1887 The first column is 1. Returns 0 if {expr} is invalid or when
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +00001888 the window with ID {winid} is not found.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001889 For an uppercase mark the column may actually be in another
1890 buffer.
1891 For the cursor position, when 'virtualedit' is active, the
1892 column is one higher if the cursor is after the end of the
Bram Moolenaar6ebe4f92022-10-28 20:47:54 +01001893 line. Also, when using a <Cmd> mapping the cursor isn't
1894 moved, this can be used to obtain the column in Insert mode: >
Bram Moolenaar76db9e02022-11-09 21:21:04 +00001895 :imap <F2> <Cmd>echowin col(".")<CR>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001896
1897< Can also be used as a |method|: >
1898 GetPos()->col()
1899<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001900 Return type: |Number|
1901
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001902
1903complete({startcol}, {matches}) *complete()* *E785*
1904 Set the matches for Insert mode completion.
1905 Can only be used in Insert mode. You need to use a mapping
1906 with CTRL-R = (see |i_CTRL-R|). It does not work after CTRL-O
1907 or with an expression mapping.
1908 {startcol} is the byte offset in the line where the completed
1909 text start. The text up to the cursor is the original text
1910 that will be replaced by the matches. Use col('.') for an
1911 empty string. "col('.') - 1" will replace one character by a
1912 match.
1913 {matches} must be a |List|. Each |List| item is one match.
1914 See |complete-items| for the kind of items that are possible.
1915 "longest" in 'completeopt' is ignored.
1916 Note that the after calling this function you need to avoid
1917 inserting anything that would cause completion to stop.
1918 The match can be selected with CTRL-N and CTRL-P as usual with
1919 Insert mode completion. The popup menu will appear if
1920 specified, see |ins-completion-menu|.
1921 Example: >
1922 inoremap <F5> <C-R>=ListMonths()<CR>
1923
Bram Moolenaar10e8ff92023-06-10 21:40:39 +01001924 func ListMonths()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001925 call complete(col('.'), ['January', 'February', 'March',
1926 \ 'April', 'May', 'June', 'July', 'August', 'September',
1927 \ 'October', 'November', 'December'])
1928 return ''
1929 endfunc
1930< This isn't very useful, but it shows how it works. Note that
1931 an empty string is returned to avoid a zero being inserted.
1932
1933 Can also be used as a |method|, the base is passed as the
1934 second argument: >
1935 GetMatches()->complete(col('.'))
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001936<
1937 Return type: |Number|
1938
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001939
1940complete_add({expr}) *complete_add()*
1941 Add {expr} to the list of matches. Only to be used by the
1942 function specified with the 'completefunc' option.
1943 Returns 0 for failure (empty string or out of memory),
1944 1 when the match was added, 2 when the match was already in
1945 the list.
1946 See |complete-functions| for an explanation of {expr}. It is
1947 the same as one item in the list that 'omnifunc' would return.
1948
1949 Can also be used as a |method|: >
1950 GetMoreMatches()->complete_add()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001951<
1952 Return type: |Number|
1953
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001954
1955complete_check() *complete_check()*
1956 Check for a key typed while looking for completion matches.
1957 This is to be used when looking for matches takes some time.
1958 Returns |TRUE| when searching for matches is to be aborted,
1959 zero otherwise.
1960 Only to be used by the function specified with the
1961 'completefunc' option.
1962
Christian Brabandt5674c9a2024-06-09 00:13:43 +02001963 Return type: |Number|
1964
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001965
1966complete_info([{what}]) *complete_info()*
1967 Returns a |Dictionary| with information about Insert mode
1968 completion. See |ins-completion|.
1969 The items are:
1970 mode Current completion mode name string.
1971 See |complete_info_mode| for the values.
1972 pum_visible |TRUE| if popup menu is visible.
1973 See |pumvisible()|.
glepnird4088ed2024-12-31 10:55:22 +01001974 items List of all completion candidates. Each item
1975 is a dictionary containing the entries "word",
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001976 "abbr", "menu", "kind", "info" and "user_data".
1977 See |complete-items|.
glepnird4088ed2024-12-31 10:55:22 +01001978 matches Same as "items", but only returns items that
1979 are matching current query. If both "matches"
1980 and "items" are in "what", the returned list
1981 will still be named "items", but each item
1982 will have an additional "match" field.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001983 selected Selected item index. First index is zero.
1984 Index is -1 if no item is selected (showing
1985 typed text only, or the last completion after
1986 no item is selected when using the <Up> or
1987 <Down> keys)
glepnir037b0282025-01-16 14:37:44 +01001988 completed Return a dictionary containing the entries of
1989 the currently selected index item.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001990
1991 *complete_info_mode*
1992 mode values are:
1993 "" Not in completion mode
1994 "keyword" Keyword completion |i_CTRL-X_CTRL-N|
1995 "ctrl_x" Just pressed CTRL-X |i_CTRL-X|
1996 "scroll" Scrolling with |i_CTRL-X_CTRL-E| or
1997 |i_CTRL-X_CTRL-Y|
1998 "whole_line" Whole lines |i_CTRL-X_CTRL-L|
1999 "files" File names |i_CTRL-X_CTRL-F|
2000 "tags" Tags |i_CTRL-X_CTRL-]|
2001 "path_defines" Definition completion |i_CTRL-X_CTRL-D|
2002 "path_patterns" Include completion |i_CTRL-X_CTRL-I|
2003 "dictionary" Dictionary |i_CTRL-X_CTRL-K|
2004 "thesaurus" Thesaurus |i_CTRL-X_CTRL-T|
2005 "cmdline" Vim Command line |i_CTRL-X_CTRL-V|
2006 "function" User defined completion |i_CTRL-X_CTRL-U|
2007 "omni" Omni completion |i_CTRL-X_CTRL-O|
2008 "spell" Spelling suggestions |i_CTRL-X_s|
2009 "eval" |complete()| completion
2010 "unknown" Other internal modes
2011
2012 If the optional {what} list argument is supplied, then only
2013 the items listed in {what} are returned. Unsupported items in
2014 {what} are silently ignored.
2015
2016 To get the position and size of the popup menu, see
2017 |pum_getpos()|. It's also available in |v:event| during the
2018 |CompleteChanged| event.
2019
Bram Moolenaar016188f2022-06-06 20:52:59 +01002020 Returns an empty |Dictionary| on error.
2021
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002022 Examples: >
2023 " Get all items
2024 call complete_info()
2025 " Get only 'mode'
2026 call complete_info(['mode'])
2027 " Get only 'mode' and 'pum_visible'
2028 call complete_info(['mode', 'pum_visible'])
2029
2030< Can also be used as a |method|: >
2031 GetItems()->complete_info()
2032<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002033 Return type: dict<any>
2034
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002035 *confirm()*
2036confirm({msg} [, {choices} [, {default} [, {type}]]])
2037 confirm() offers the user a dialog, from which a choice can be
2038 made. It returns the number of the choice. For the first
2039 choice this is 1.
2040 Note: confirm() is only supported when compiled with dialog
glepnirdf461152024-04-04 22:23:29 +02002041 support, see |+dialog_con| |+dialog_con_gui| and |+dialog_gui|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002042
2043 {msg} is displayed in a |dialog| with {choices} as the
2044 alternatives. When {choices} is missing or empty, "&OK" is
2045 used (and translated).
2046 {msg} is a String, use '\n' to include a newline. Only on
2047 some systems the string is wrapped when it doesn't fit.
2048
2049 {choices} is a String, with the individual choices separated
2050 by '\n', e.g. >
2051 confirm("Save changes?", "&Yes\n&No\n&Cancel")
2052< The letter after the '&' is the shortcut key for that choice.
2053 Thus you can type 'c' to select "Cancel". The shortcut does
2054 not need to be the first letter: >
2055 confirm("file has been modified", "&Save\nSave &All")
2056< For the console, the first letter of each choice is used as
2057 the default shortcut key. Case is ignored.
2058
2059 The optional {default} argument is the number of the choice
2060 that is made if the user hits <CR>. Use 1 to make the first
2061 choice the default one. Use 0 to not set a default. If
2062 {default} is omitted, 1 is used.
2063
2064 The optional {type} String argument gives the type of dialog.
2065 This is only used for the icon of the GTK, Mac, Motif and
2066 Win32 GUI. It can be one of these values: "Error",
2067 "Question", "Info", "Warning" or "Generic". Only the first
2068 character is relevant. When {type} is omitted, "Generic" is
2069 used.
2070
2071 If the user aborts the dialog by pressing <Esc>, CTRL-C,
2072 or another valid interrupt key, confirm() returns 0.
2073
2074 An example: >
Bram Moolenaar46eea442022-03-30 10:51:39 +01002075 let choice = confirm("What do you want?",
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01002076 \ "&Apples\n&Oranges\n&Bananas", 2)
Bram Moolenaar46eea442022-03-30 10:51:39 +01002077 if choice == 0
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01002078 echo "make up your mind!"
Bram Moolenaar46eea442022-03-30 10:51:39 +01002079 elseif choice == 3
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01002080 echo "tasteful"
Bram Moolenaar46eea442022-03-30 10:51:39 +01002081 else
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01002082 echo "I prefer bananas myself."
Bram Moolenaar46eea442022-03-30 10:51:39 +01002083 endif
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002084< In a GUI dialog, buttons are used. The layout of the buttons
2085 depends on the 'v' flag in 'guioptions'. If it is included,
2086 the buttons are always put vertically. Otherwise, confirm()
2087 tries to put the buttons in one horizontal line. If they
2088 don't fit, a vertical layout is used anyway. For some systems
2089 the horizontal layout is always used.
2090
2091 Can also be used as a |method|in: >
2092 BuildMessage()->confirm("&Yes\n&No")
2093<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002094 Return type: |Number|
2095
2096
2097copy({expr}) *copy()*
2098 Make a copy of {expr}. For Numbers and Strings this isn't
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002099 different from using {expr} directly.
2100 When {expr} is a |List| a shallow copy is created. This means
2101 that the original |List| can be changed without changing the
2102 copy, and vice versa. But the items are identical, thus
2103 changing an item changes the contents of both |Lists|.
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01002104 A |Tuple| or |Dictionary| is copied in a similar way as a
2105 |List|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002106 Also see |deepcopy()|.
2107 Can also be used as a |method|: >
2108 mylist->copy()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002109<
2110 Return type: any, depending on {expr}
2111
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002112
2113cos({expr}) *cos()*
2114 Return the cosine of {expr}, measured in radians, as a |Float|.
2115 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01002116 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002117 Examples: >
2118 :echo cos(100)
2119< 0.862319 >
2120 :echo cos(-4.01)
2121< -0.646043
2122
2123 Can also be used as a |method|: >
2124 Compute()->cos()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002125<
2126 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002127
2128
2129cosh({expr}) *cosh()*
2130 Return the hyperbolic cosine of {expr} as a |Float| in the range
2131 [1, inf].
2132 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01002133 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002134 Examples: >
2135 :echo cosh(0.5)
2136< 1.127626 >
2137 :echo cosh(-0.5)
2138< -1.127626
2139
2140 Can also be used as a |method|: >
2141 Compute()->cosh()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002142<
2143 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002144
2145
Yegappan Lakshmanancd39b692023-10-02 12:50:45 -07002146count({comp}, {expr} [, {ic} [, {start}]]) *count()* *E706*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002147 Return the number of times an item with value {expr} appears
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01002148 in |String|, |List|, |Tuple| or |Dictionary| {comp}.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002149
2150 If {start} is given then start with the item with this index.
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01002151 {start} can only be used with a |List| or a |Tuple|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002152
2153 When {ic} is given and it's |TRUE| then case is ignored.
2154
2155 When {comp} is a string then the number of not overlapping
2156 occurrences of {expr} is returned. Zero is returned when
2157 {expr} is an empty string.
2158
2159 Can also be used as a |method|: >
2160 mylist->count(val)
2161<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002162 Return type: |Number|
2163
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002164 *cscope_connection()*
2165cscope_connection([{num} , {dbpath} [, {prepend}]])
2166 Checks for the existence of a |cscope| connection. If no
2167 parameters are specified, then the function returns:
2168 0, if cscope was not available (not compiled in), or
2169 if there are no cscope connections;
2170 1, if there is at least one cscope connection.
2171
2172 If parameters are specified, then the value of {num}
2173 determines how existence of a cscope connection is checked:
2174
2175 {num} Description of existence check
2176 ----- ------------------------------
2177 0 Same as no parameters (e.g., "cscope_connection()").
2178 1 Ignore {prepend}, and use partial string matches for
2179 {dbpath}.
2180 2 Ignore {prepend}, and use exact string matches for
2181 {dbpath}.
2182 3 Use {prepend}, use partial string matches for both
2183 {dbpath} and {prepend}.
2184 4 Use {prepend}, use exact string matches for both
2185 {dbpath} and {prepend}.
2186
2187 Note: All string comparisons are case sensitive!
2188
2189 Examples. Suppose we had the following (from ":cs show"): >
2190
2191 # pid database name prepend path
2192 0 27664 cscope.out /usr/local
2193<
2194 Invocation Return Val ~
2195 ---------- ---------- >
2196 cscope_connection() 1
2197 cscope_connection(1, "out") 1
2198 cscope_connection(2, "out") 0
2199 cscope_connection(3, "out") 0
2200 cscope_connection(3, "out", "local") 1
2201 cscope_connection(4, "out") 0
2202 cscope_connection(4, "out", "local") 0
2203 cscope_connection(4, "cscope.out", "/usr/local") 1
2204<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002205 Return type: |Number|
2206
2207
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002208cursor({lnum}, {col} [, {off}]) *cursor()*
2209cursor({list})
2210 Positions the cursor at the column (byte count) {col} in the
2211 line {lnum}. The first column is one.
2212
2213 When there is one argument {list} this is used as a |List|
2214 with two, three or four item:
2215 [{lnum}, {col}]
2216 [{lnum}, {col}, {off}]
2217 [{lnum}, {col}, {off}, {curswant}]
2218 This is like the return value of |getpos()| or |getcurpos()|,
2219 but without the first item.
2220
Bram Moolenaar10e8ff92023-06-10 21:40:39 +01002221 To position the cursor using {col} as the character count, use
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002222 |setcursorcharpos()|.
2223
2224 Does not change the jumplist.
Bram Moolenaar7c6cd442022-10-11 21:54:04 +01002225 {lnum} is used like with |getline()|, except that if {lnum} is
2226 zero, the cursor will stay in the current line.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002227 If {lnum} is greater than the number of lines in the buffer,
2228 the cursor will be positioned at the last line in the buffer.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002229 If {col} is greater than the number of bytes in the line,
2230 the cursor will be positioned at the last character in the
2231 line.
2232 If {col} is zero, the cursor will stay in the current column.
2233 If {curswant} is given it is used to set the preferred column
2234 for vertical movement. Otherwise {col} is used.
2235
2236 When 'virtualedit' is used {off} specifies the offset in
2237 screen columns from the start of the character. E.g., a
2238 position within a <Tab> or after the last character.
2239 Returns 0 when the position could be set, -1 otherwise.
2240
2241 Can also be used as a |method|: >
2242 GetCursorPos()->cursor()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002243<
2244 Return type: |Number|
2245
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002246
2247debugbreak({pid}) *debugbreak()*
2248 Specifically used to interrupt a program being debugged. It
2249 will cause process {pid} to get a SIGTRAP. Behavior for other
2250 processes is undefined. See |terminal-debugger|.
2251 {only available on MS-Windows}
2252
Bram Moolenaar016188f2022-06-06 20:52:59 +01002253 Returns |TRUE| if successfully interrupted the program.
2254 Otherwise returns |FALSE|.
2255
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002256 Can also be used as a |method|: >
2257 GetPid()->debugbreak()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002258<
2259 Return type: |Number|
2260
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002261
2262deepcopy({expr} [, {noref}]) *deepcopy()* *E698*
2263 Make a copy of {expr}. For Numbers and Strings this isn't
2264 different from using {expr} directly.
2265 When {expr} is a |List| a full copy is created. This means
2266 that the original |List| can be changed without changing the
2267 copy, and vice versa. When an item is a |List| or
2268 |Dictionary|, a copy for it is made, recursively. Thus
2269 changing an item in the copy does not change the contents of
2270 the original |List|.
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01002271 A |Tuple| or |Dictionary| is copied in a similar way as a
2272 |List|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002273
2274 When {noref} is omitted or zero a contained |List| or
2275 |Dictionary| is only copied once. All references point to
2276 this single copy. With {noref} set to 1 every occurrence of a
2277 |List| or |Dictionary| results in a new copy. This also means
2278 that a cyclic reference causes deepcopy() to fail.
2279 *E724*
2280 Nesting is possible up to 100 levels. When there is an item
2281 that refers back to a higher level making a deep copy with
2282 {noref} set to 1 will fail.
2283 Also see |copy()|.
2284
2285 Can also be used as a |method|: >
2286 GetObject()->deepcopy()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002287<
2288 Return type: any, depending on {expr}
2289
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002290
2291delete({fname} [, {flags}]) *delete()*
2292 Without {flags} or with {flags} empty: Deletes the file by the
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01002293 name {fname}.
2294
2295 This also works when {fname} is a symbolic link. The symbolic
2296 link itself is deleted, not what it points to.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002297
2298 When {flags} is "d": Deletes the directory by the name
2299 {fname}. This fails when directory {fname} is not empty.
2300
2301 When {flags} is "rf": Deletes the directory by the name
2302 {fname} and everything in it, recursively. BE CAREFUL!
2303 Note: on MS-Windows it is not possible to delete a directory
2304 that is being used.
2305
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002306 The result is a Number, which is 0/false if the delete
2307 operation was successful and -1/true when the deletion failed
2308 or partly failed.
2309
2310 Use |remove()| to delete an item from a |List|.
2311 To delete a line from the buffer use |:delete| or
2312 |deletebufline()|.
2313
2314 Can also be used as a |method|: >
2315 GetName()->delete()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002316<
2317 Return type: |Number|
2318
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002319
2320deletebufline({buf}, {first} [, {last}]) *deletebufline()*
2321 Delete lines {first} to {last} (inclusive) from buffer {buf}.
2322 If {last} is omitted then delete line {first} only.
2323 On success 0 is returned, on failure 1 is returned.
2324
2325 This function works only for loaded buffers. First call
2326 |bufload()| if needed.
2327
2328 For the use of {buf}, see |bufname()| above.
2329
2330 {first} and {last} are used like with |getline()|. Note that
2331 when using |line()| this refers to the current buffer. Use "$"
2332 to refer to the last line in buffer {buf}.
2333
2334 Can also be used as a |method|: >
2335 GetBuffer()->deletebufline(1)
2336<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002337 Return type: |Number|
2338
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002339 *did_filetype()*
2340did_filetype() Returns |TRUE| when autocommands are being executed and the
2341 FileType event has been triggered at least once. Can be used
2342 to avoid triggering the FileType event again in the scripts
2343 that detect the file type. |FileType|
2344 Returns |FALSE| when `:setf FALLBACK` was used.
2345 When editing another file, the counter is reset, thus this
2346 really checks if the FileType event has been triggered for the
2347 current buffer. This allows an autocommand that starts
2348 editing another buffer to set 'filetype' and load a syntax
2349 file.
2350
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002351 Return type: |Number|
2352
2353
Yegappan Lakshmananfa378352024-02-01 22:05:27 +01002354diff({fromlist}, {tolist} [, {options}]) *diff()*
2355 Returns a String or a List containing the diff between the
2356 strings in {fromlist} and {tolist}. Uses the Vim internal
2357 diff library to compute the diff.
2358
2359 *E106*
2360 The optional "output" item in {options} specifies the returned
2361 diff format. The following values are supported:
2362 indices Return a List of the starting and ending
2363 indices and a count of the strings in each
2364 diff hunk.
2365 unified Return the unified diff output as a String.
2366 This is the default.
2367
2368 If the "output" item in {options} is "indices", then a List is
2369 returned. Each List item contains a Dict with the following
2370 items for each diff hunk:
2371 from_idx start index in {fromlist} for this diff hunk.
2372 from_count number of strings in {fromlist} that are
2373 added/removed/modified in this diff hunk.
2374 to_idx start index in {tolist} for this diff hunk.
2375 to_count number of strings in {tolist} that are
2376 added/removed/modified in this diff hunk.
2377
2378 The {options} Dict argument also specifies diff options
2379 (similar to 'diffopt') and supports the following items:
Yegappan Lakshmananbe156a32024-02-11 17:08:29 +01002380 algorithm Dict specifying the diff algorithm to
2381 use. Supported boolean items are
2382 "myers", "minimal", "patience" and
2383 "histogram".
Yegappan Lakshmanana0010a12024-02-12 20:21:26 +01002384 context diff context length. Default is 0.
Yegappan Lakshmananfa378352024-02-01 22:05:27 +01002385 iblank ignore changes where lines are all
2386 blank.
2387 icase ignore changes in case of text.
Yegappan Lakshmananbe156a32024-02-11 17:08:29 +01002388 indent-heuristic use the indent heuristic for the
2389 internal diff library.
Yegappan Lakshmananfa378352024-02-01 22:05:27 +01002390 iwhite ignore changes in amount of white
2391 space.
2392 iwhiteall ignore all white space changes.
2393 iwhiteeol ignore white space changes at end of
2394 line.
Yegappan Lakshmananfa378352024-02-01 22:05:27 +01002395 For more information about these options, refer to 'diffopt'.
2396
Yegappan Lakshmanana0010a12024-02-12 20:21:26 +01002397 To compute the unified diff, all the items in {fromlist} are
2398 concatenated into a string using a newline separator and the
2399 same for {tolist}. The unified diff output uses line numbers.
2400
Yegappan Lakshmananfa378352024-02-01 22:05:27 +01002401 Returns an empty List or String if {fromlist} and {tolist} are
2402 identical.
2403
Yegappan Lakshmanan1af35632024-02-06 11:03:36 +01002404 Examples: >
Yegappan Lakshmananfa378352024-02-01 22:05:27 +01002405 :echo diff(['abc'], ['xxx'])
2406 @@ -1 +1 @@
2407 -abc
2408 +xxx
2409
2410 :echo diff(['abc'], ['xxx'], {'output': 'indices'})
2411 [{'from_idx': 0, 'from_count': 1, 'to_idx': 0, 'to_count': 1}]
2412 :echo diff(readfile('oldfile'), readfile('newfile'))
2413 :echo diff(getbufline(5, 1, '$'), getbufline(6, 1, '$'))
Yegappan Lakshmanan1af35632024-02-06 11:03:36 +01002414<
Yegappan Lakshmananfa378352024-02-01 22:05:27 +01002415 For more examples, refer to |diff-func-examples|
2416
2417 Can also be used as a |method|: >
2418 GetFromList->diff(to_list)
2419<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002420 Return type: |String| or list<dict<number>> or list<any>
2421 depending on {options}
2422
2423
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002424diff_filler({lnum}) *diff_filler()*
2425 Returns the number of filler lines above line {lnum}.
2426 These are the lines that were inserted at this point in
2427 another diff'ed window. These filler lines are shown in the
2428 display but don't exist in the buffer.
2429 {lnum} is used like with |getline()|. Thus "." is the current
2430 line, "'m" mark m, etc.
2431 Returns 0 if the current window is not in diff mode.
2432
2433 Can also be used as a |method|: >
2434 GetLnum()->diff_filler()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002435<
2436 Return type: |Number|
2437
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002438
2439diff_hlID({lnum}, {col}) *diff_hlID()*
2440 Returns the highlight ID for diff mode at line {lnum} column
2441 {col} (byte index). When the current line does not have a
2442 diff change zero is returned.
2443 {lnum} is used like with |getline()|. Thus "." is the current
2444 line, "'m" mark m, etc.
2445 {col} is 1 for the leftmost column, {lnum} is 1 for the first
2446 line.
2447 The highlight ID can be used with |synIDattr()| to obtain
2448 syntax information about the highlighting.
2449
2450 Can also be used as a |method|: >
2451 GetLnum()->diff_hlID(col)
2452<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002453 Return type: |Number|
2454
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002455
2456digraph_get({chars}) *digraph_get()* *E1214*
2457 Return the digraph of {chars}. This should be a string with
2458 exactly two characters. If {chars} are not just two
2459 characters, or the digraph of {chars} does not exist, an error
2460 is given and an empty string is returned.
2461
2462 The character will be converted from Unicode to 'encoding'
2463 when needed. This does require the conversion to be
2464 available, it might fail.
2465
2466 Also see |digraph_getlist()|.
2467
2468 Examples: >
2469 " Get a built-in digraph
2470 :echo digraph_get('00') " Returns '∞'
2471
2472 " Get a user-defined digraph
2473 :call digraph_set('aa', 'あ')
2474 :echo digraph_get('aa') " Returns 'あ'
2475<
2476 Can also be used as a |method|: >
2477 GetChars()->digraph_get()
2478<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002479 Return type: |String|
2480
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002481 This function works only when compiled with the |+digraphs|
2482 feature. If this feature is disabled, this function will
2483 display an error message.
2484
2485
2486digraph_getlist([{listall}]) *digraph_getlist()*
2487 Return a list of digraphs. If the {listall} argument is given
2488 and it is TRUE, return all digraphs, including the default
2489 digraphs. Otherwise, return only user-defined digraphs.
2490
2491 The characters will be converted from Unicode to 'encoding'
2492 when needed. This does require the conservation to be
2493 available, it might fail.
2494
2495 Also see |digraph_get()|.
2496
2497 Examples: >
2498 " Get user-defined digraphs
2499 :echo digraph_getlist()
2500
2501 " Get all the digraphs, including default digraphs
2502 :echo digraph_getlist(1)
2503<
2504 Can also be used as a |method|: >
2505 GetNumber()->digraph_getlist()
2506<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002507 Return type: list<list<string>>
2508
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002509 This function works only when compiled with the |+digraphs|
2510 feature. If this feature is disabled, this function will
2511 display an error message.
2512
2513
Bram Moolenaara2baa732022-02-04 16:09:54 +00002514digraph_set({chars}, {digraph}) *digraph_set()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002515 Add digraph {chars} to the list. {chars} must be a string
2516 with two characters. {digraph} is a string with one UTF-8
Bram Moolenaara2baa732022-02-04 16:09:54 +00002517 encoded character. *E1215*
2518 Be careful, composing characters are NOT ignored. This
2519 function is similar to |:digraphs| command, but useful to add
2520 digraphs start with a white space.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002521
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002522 The function returns v:true if |digraph| is registered. If
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002523 this fails an error message is given and v:false is returned.
2524
2525 If you want to define multiple digraphs at once, you can use
2526 |digraph_setlist()|.
2527
2528 Example: >
2529 call digraph_set(' ', 'あ')
2530<
2531 Can be used as a |method|: >
2532 GetString()->digraph_set('あ')
2533<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002534 Return type: |vim9-boolean|
2535
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002536 This function works only when compiled with the |+digraphs|
2537 feature. If this feature is disabled, this function will
2538 display an error message.
2539
2540
2541digraph_setlist({digraphlist}) *digraph_setlist()*
2542 Similar to |digraph_set()| but this function can add multiple
2543 digraphs at once. {digraphlist} is a list composed of lists,
2544 where each list contains two strings with {chars} and
Bram Moolenaara2baa732022-02-04 16:09:54 +00002545 {digraph} as in |digraph_set()|. *E1216*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002546 Example: >
2547 call digraph_setlist([['aa', 'あ'], ['ii', 'い']])
2548<
2549 It is similar to the following: >
2550 for [chars, digraph] in [['aa', 'あ'], ['ii', 'い']]
2551 call digraph_set(chars, digraph)
2552 endfor
2553< Except that the function returns after the first error,
2554 following digraphs will not be added.
2555
2556 Can be used as a |method|: >
2557 GetList()->digraph_setlist()
2558<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002559 Return type: |vim9-boolean|
2560
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002561 This function works only when compiled with the |+digraphs|
2562 feature. If this feature is disabled, this function will
2563 display an error message.
2564
2565
2566echoraw({string}) *echoraw()*
2567 Output {string} as-is, including unprintable characters.
2568 This can be used to output a terminal code. For example, to
2569 disable modifyOtherKeys: >
2570 call echoraw(&t_TE)
2571< and to enable it again: >
2572 call echoraw(&t_TI)
2573< Use with care, you can mess up the terminal this way.
2574
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002575 Return type: |Number|
2576
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002577
2578empty({expr}) *empty()*
2579 Return the Number 1 if {expr} is empty, zero otherwise.
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01002580 - A |List|, |Tuple| or |Dictionary| is empty when it does
2581 not have any items.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002582 - A |String| is empty when its length is zero.
2583 - A |Number| and |Float| are empty when their value is zero.
2584 - |v:false|, |v:none| and |v:null| are empty, |v:true| is not.
2585 - A |Job| is empty when it failed to start.
2586 - A |Channel| is empty when it is closed.
2587 - A |Blob| is empty when its length is zero.
mityu7f0bba22024-03-29 10:14:41 +01002588 - An |Object| is empty, when the empty() method in the object
2589 (if present) returns true. |object-empty()|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002590
2591 For a long |List| this is much faster than comparing the
2592 length with zero.
2593
2594 Can also be used as a |method|: >
2595 mylist->empty()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002596<
2597 Return type: |Number|
2598
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002599
2600environ() *environ()*
2601 Return all of environment variables as dictionary. You can
2602 check if an environment variable exists like this: >
2603 :echo has_key(environ(), 'HOME')
2604< Note that the variable name may be CamelCase; to ignore case
2605 use this: >
2606 :echo index(keys(environ()), 'HOME', 0, 1) != -1
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002607<
2608 Return type: dict<string>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002609
Bram Moolenaar416bd912023-07-07 23:19:18 +01002610
2611err_teapot([{expr}]) *err_teapot()*
2612 Produce an error with number 418, needed for implementation of
Christian Brabandtee17b6f2023-09-09 11:23:50 +02002613 RFC 2324.
Bram Moolenaar416bd912023-07-07 23:19:18 +01002614 If {expr} is present and it is TRUE error 503 is given,
2615 indicating that coffee is temporarily not available.
2616 If {expr} is present it must be a String.
2617
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002618 Return type: |Number|
2619
Bram Moolenaar416bd912023-07-07 23:19:18 +01002620
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002621escape({string}, {chars}) *escape()*
2622 Escape the characters in {chars} that occur in {string} with a
2623 backslash. Example: >
2624 :echo escape('c:\program files\vim', ' \')
2625< results in: >
2626 c:\\program\ files\\vim
2627< Also see |shellescape()| and |fnameescape()|.
2628
2629 Can also be used as a |method|: >
2630 GetText()->escape(' \')
2631<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002632 Return type: |String|
2633
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002634 *eval()*
2635eval({string}) Evaluate {string} and return the result. Especially useful to
2636 turn the result of |string()| back into the original value.
2637 This works for Numbers, Floats, Strings, Blobs and composites
2638 of them. Also works for |Funcref|s that refer to existing
Aliaksei Budavei95740222024-04-04 23:05:33 +03002639 functions. In |Vim9| script, it can be used to obtain |enum|
2640 values from their fully qualified names.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002641
2642 Can also be used as a |method|: >
2643 argv->join()->eval()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002644<
2645 Return type: any, depending on {string}
2646
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002647
2648eventhandler() *eventhandler()*
2649 Returns 1 when inside an event handler. That is that Vim got
2650 interrupted while waiting for the user to type a character,
2651 e.g., when dropping a file on Vim. This means interactive
2652 commands cannot be used. Otherwise zero is returned.
2653
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002654 Return type: |Number|
2655
2656
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002657executable({expr}) *executable()*
2658 This function checks if an executable with the name {expr}
2659 exists. {expr} must be the name of the program without any
2660 arguments.
zeertzjq0cc5dce2024-08-08 21:12:15 +02002661
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002662 executable() uses the value of $PATH and/or the normal
zeertzjq0cc5dce2024-08-08 21:12:15 +02002663 searchpath for programs.
2664 *PATHEXT*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002665 On MS-Windows the ".exe", ".bat", etc. can optionally be
2666 included. Then the extensions in $PATHEXT are tried. Thus if
2667 "foo.exe" does not exist, "foo.exe.bat" can be found. If
2668 $PATHEXT is not set then ".com;.exe;.bat;.cmd" is used. A dot
2669 by itself can be used in $PATHEXT to try using the name
2670 without an extension. When 'shell' looks like a Unix shell,
2671 then the name is also tried without adding an extension.
2672 On MS-Windows it only checks if the file exists and is not a
2673 directory, not if it's really executable.
zeertzjq0cc5dce2024-08-08 21:12:15 +02002674 On MS-Windows an executable in the same directory as the Vim
2675 executable is always found. Since this directory is added to
2676 $PATH it should also work to execute it |win32-PATH|.
2677 *NoDefaultCurrentDirectoryInExePath*
2678 On MS-Windows an executable in Vim's current working directory
2679 is also normally found, but this can be disabled by setting
2680 the $NoDefaultCurrentDirectoryInExePath environment variable.
2681
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002682 The result is a Number:
2683 1 exists
2684 0 does not exist
2685 -1 not implemented on this system
2686 |exepath()| can be used to get the full path of an executable.
2687
2688 Can also be used as a |method|: >
2689 GetCommand()->executable()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002690<
2691 Return type: |Number|
2692
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002693
2694execute({command} [, {silent}]) *execute()*
2695 Execute an Ex command or commands and return the output as a
2696 string.
2697 {command} can be a string or a List. In case of a List the
2698 lines are executed one by one.
Bram Moolenaarb7398fe2023-05-14 18:50:25 +01002699 This is more or less equivalent to: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002700 redir => var
2701 {command}
2702 redir END
Bram Moolenaar71badf92023-04-22 22:40:14 +01002703< Except that line continuation in {command} is not recognized.
2704
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002705 The optional {silent} argument can have these values:
2706 "" no `:silent` used
2707 "silent" `:silent` used
2708 "silent!" `:silent!` used
2709 The default is "silent". Note that with "silent!", unlike
2710 `:redir`, error messages are dropped. When using an external
2711 command the screen may be messed up, use `system()` instead.
2712 *E930*
2713 It is not possible to use `:redir` anywhere in {command}.
2714
Bram Moolenaarb7398fe2023-05-14 18:50:25 +01002715 To get a list of lines use `split()` on the result: >
Bram Moolenaar75ab5902022-04-18 15:36:40 +01002716 execute('args')->split("\n")
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002717
2718< To execute a command in another window than the current one
2719 use `win_execute()`.
2720
2721 When used recursively the output of the recursive call is not
2722 included in the output of the higher level call.
2723
2724 Can also be used as a |method|: >
2725 GetCommand()->execute()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002726<
Marius Gedminasc98bfb92024-06-19 19:59:23 +02002727 Return type: |String|
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002728
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002729
2730exepath({expr}) *exepath()*
2731 If {expr} is an executable and is either an absolute path, a
2732 relative path or found in $PATH, return the full path.
2733 Note that the current directory is used when {expr} starts
2734 with "./", which may be a problem for Vim: >
2735 echo exepath(v:progpath)
2736< If {expr} cannot be found in $PATH or is not executable then
2737 an empty string is returned.
2738
2739 Can also be used as a |method|: >
2740 GetCommand()->exepath()
2741<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002742 Return type: |String|
2743
2744
2745exists({expr}) *exists()*
2746 The result is a Number, which is |TRUE| if {expr} is defined,
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002747 zero otherwise.
2748
2749 Note: In a compiled |:def| function the evaluation is done at
2750 runtime. Use `exists_compiled()` to evaluate the expression
2751 at compile time.
2752
2753 For checking for a supported feature use |has()|.
2754 For checking if a file exists use |filereadable()|.
2755
2756 The {expr} argument is a string, which contains one of these:
Bram Moolenaarf10911e2022-01-29 22:20:48 +00002757 varname internal variable (see
2758 dict.key |internal-variables|). Also works
2759 list[i] for |curly-braces-names|, |Dictionary|
Yegappan Lakshmanana2ebb6e2024-02-25 08:40:10 +01002760 import.Func entries, |List| items, class and
2761 class.Func object methods, imported items, etc.
2762 object.Func Does not work for local variables in a
2763 class.varname compiled `:def` function.
2764 object.varname Also works for a function in |Vim9|
Bram Moolenaar944697a2022-02-20 19:48:20 +00002765 script, since it can be used as a
2766 function reference.
Bram Moolenaarf10911e2022-01-29 22:20:48 +00002767 Beware that evaluating an index may
2768 cause an error message for an invalid
2769 expression. E.g.: >
2770 :let l = [1, 2, 3]
2771 :echo exists("l[5]")
2772< 0 >
2773 :echo exists("l[xx]")
2774< E121: Undefined variable: xx
2775 0
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002776 &option-name Vim option (only checks if it exists,
2777 not if it really works)
2778 +option-name Vim option that works.
2779 $ENVNAME environment variable (could also be
2780 done by comparing with an empty
2781 string)
2782 *funcname built-in function (see |functions|)
2783 or user defined function (see
2784 |user-functions|) that is implemented.
2785 Also works for a variable that is a
2786 Funcref.
2787 ?funcname built-in function that could be
2788 implemented; to be used to check if
2789 "funcname" is valid
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002790 :cmdname Ex command: built-in command, user
2791 command or command modifier |:command|.
2792 Returns:
2793 1 for match with start of a command
2794 2 full match with a command
2795 3 matches several user commands
2796 To check for a supported command
2797 always check the return value to be 2.
2798 :2match The |:2match| command.
Bram Moolenaarb529cfb2022-07-25 15:42:07 +01002799 :3match The |:3match| command (but you
2800 probably should not use it, it is
2801 reserved for internal usage)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002802 #event autocommand defined for this event
2803 #event#pattern autocommand defined for this event and
2804 pattern (the pattern is taken
2805 literally and compared to the
2806 autocommand patterns character by
2807 character)
2808 #group autocommand group exists
2809 #group#event autocommand defined for this group and
2810 event.
2811 #group#event#pattern
2812 autocommand defined for this group,
2813 event and pattern.
2814 ##event autocommand for this event is
2815 supported.
2816
2817 Examples: >
2818 exists("&shortname")
2819 exists("$HOSTNAME")
2820 exists("*strftime")
Bram Moolenaar944697a2022-02-20 19:48:20 +00002821 exists("*s:MyFunc") " only for legacy script
2822 exists("*MyFunc")
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002823 exists("bufcount")
2824 exists(":Make")
2825 exists("#CursorHold")
2826 exists("#BufReadPre#*.gz")
2827 exists("#filetypeindent")
2828 exists("#filetypeindent#FileType")
2829 exists("#filetypeindent#FileType#*")
2830 exists("##ColorScheme")
2831< There must be no space between the symbol (&/$/*/#) and the
2832 name.
2833 There must be no extra characters after the name, although in
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01002834 a few cases this is ignored. That may become stricter in the
2835 future, thus don't count on it!
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002836 Working example: >
2837 exists(":make")
2838< NOT working example: >
2839 exists(":make install")
2840
2841< Note that the argument must be a string, not the name of the
2842 variable itself. For example: >
2843 exists(bufcount)
2844< This doesn't check for existence of the "bufcount" variable,
2845 but gets the value of "bufcount", and checks if that exists.
2846
2847 Can also be used as a |method|: >
2848 Varname()->exists()
2849<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002850 Return type: |String|
2851
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002852
2853exists_compiled({expr}) *exists_compiled()*
2854 Like `exists()` but evaluated at compile time. This is useful
2855 to skip a block where a function is used that would otherwise
2856 give an error: >
2857 if exists_compiled('*ThatFunction')
2858 ThatFunction('works')
2859 endif
2860< If `exists()` were used then a compilation error would be
2861 given if ThatFunction() is not defined.
2862
2863 {expr} must be a literal string. *E1232*
2864 Can only be used in a |:def| function. *E1233*
2865 This does not work to check for arguments or local variables.
2866
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002867 Return type: |String|
2868
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002869
2870exp({expr}) *exp()*
2871 Return the exponential of {expr} as a |Float| in the range
2872 [0, inf].
2873 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01002874 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002875 Examples: >
2876 :echo exp(2)
2877< 7.389056 >
2878 :echo exp(-1)
2879< 0.367879
2880
2881 Can also be used as a |method|: >
2882 Compute()->exp()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002883<
2884 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002885
2886
2887expand({string} [, {nosuf} [, {list}]]) *expand()*
2888 Expand wildcards and the following special keywords in
2889 {string}. 'wildignorecase' applies.
2890
2891 If {list} is given and it is |TRUE|, a List will be returned.
2892 Otherwise the result is a String and when there are several
2893 matches, they are separated by <NL> characters. [Note: in
2894 version 5.0 a space was used, which caused problems when a
2895 file name contains a space]
2896
2897 If the expansion fails, the result is an empty string. A name
2898 for a non-existing file is not included, unless {string} does
2899 not start with '%', '#' or '<', see below.
2900
Christian Brabandtec9c3262024-02-21 20:40:05 +01002901 For a |:terminal| window '%' expands to a '!' followed by
h-east53753f62024-05-05 18:42:31 +02002902 the command or shell that is run. |terminal-bufname|
Christian Brabandtec9c3262024-02-21 20:40:05 +01002903
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002904 When {string} starts with '%', '#' or '<', the expansion is
2905 done like for the |cmdline-special| variables with their
2906 associated modifiers. Here is a short overview:
2907
2908 % current file name
2909 # alternate file name
2910 #n alternate file name n
2911 <cfile> file name under the cursor
2912 <afile> autocmd file name
2913 <abuf> autocmd buffer number (as a String!)
2914 <amatch> autocmd matched name
2915 <cexpr> C expression under the cursor
2916 <sfile> sourced script file or function name
2917 <slnum> sourced script line number or function
2918 line number
2919 <sflnum> script file line number, also when in
2920 a function
2921 <SID> "<SNR>123_" where "123" is the
2922 current script ID |<SID>|
Bram Moolenaar75ab5902022-04-18 15:36:40 +01002923 <script> sourced script file, or script file
2924 where the current function was defined
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002925 <stack> call stack
2926 <cword> word under the cursor
2927 <cWORD> WORD under the cursor
2928 <client> the {clientid} of the last received
2929 message |server2client()|
2930 Modifiers:
2931 :p expand to full path
2932 :h head (last path component removed)
2933 :t tail (last path component only)
2934 :r root (one extension removed)
2935 :e extension only
2936
2937 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00002938 :let &tags = expand("%:p:h") .. "/tags"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002939< Note that when expanding a string that starts with '%', '#' or
2940 '<', any following text is ignored. This does NOT work: >
2941 :let doesntwork = expand("%:h.bak")
2942< Use this: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00002943 :let doeswork = expand("%:h") .. ".bak"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002944< Also note that expanding "<cfile>" and others only returns the
2945 referenced file name without further expansion. If "<cfile>"
2946 is "~/.cshrc", you need to do another expand() to have the
2947 "~/" expanded into the path of the home directory: >
2948 :echo expand(expand("<cfile>"))
2949<
2950 There cannot be white space between the variables and the
2951 following modifier. The |fnamemodify()| function can be used
2952 to modify normal file names.
2953
2954 When using '%' or '#', and the current or alternate file name
2955 is not defined, an empty string is used. Using "%:p" in a
2956 buffer with no name, results in the current directory, with a
2957 '/' added.
Bram Moolenaar57544522022-04-12 12:54:11 +01002958 When 'verbose' is set then expanding '%', '#' and <> items
2959 will result in an error message if the argument cannot be
2960 expanded.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002961
2962 When {string} does not start with '%', '#' or '<', it is
2963 expanded like a file name is expanded on the command line.
2964 'suffixes' and 'wildignore' are used, unless the optional
2965 {nosuf} argument is given and it is |TRUE|.
2966 Names for non-existing files are included. The "**" item can
2967 be used to search in a directory tree. For example, to find
2968 all "README" files in the current directory and below: >
2969 :echo expand("**/README")
2970<
2971 expand() can also be used to expand variables and environment
2972 variables that are only known in a shell. But this can be
2973 slow, because a shell may be used to do the expansion. See
2974 |expr-env-expand|.
2975 The expanded variable is still handled like a list of file
2976 names. When an environment variable cannot be expanded, it is
2977 left unchanged. Thus ":echo expand('$FOOBAR')" results in
2978 "$FOOBAR".
2979
2980 See |glob()| for finding existing files. See |system()| for
2981 getting the raw output of an external command.
2982
2983 Can also be used as a |method|: >
2984 Getpattern()->expand()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02002985<
2986 Return type: |String| or list<string> depending on {list}
2987
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002988
Yegappan Lakshmanan2b74b682022-04-03 21:30:32 +01002989expandcmd({string} [, {options}]) *expandcmd()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002990 Expand special items in String {string} like what is done for
2991 an Ex command such as `:edit`. This expands special keywords,
2992 like with |expand()|, and environment variables, anywhere in
2993 {string}. "~user" and "~/path" are only expanded at the
2994 start.
Yegappan Lakshmanan2b74b682022-04-03 21:30:32 +01002995
2996 The following items are supported in the {options} Dict
2997 argument:
2998 errmsg If set to TRUE, error messages are displayed
2999 if an error is encountered during expansion.
3000 By default, error messages are not displayed.
3001
Yegappan Lakshmanan5018a832022-04-02 21:12:21 +01003002 Returns the expanded string. If an error is encountered
3003 during expansion, the unmodified {string} is returned.
Yegappan Lakshmanan2b74b682022-04-03 21:30:32 +01003004
Yegappan Lakshmanan5018a832022-04-02 21:12:21 +01003005 Example: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003006 :echo expandcmd('make %<.o')
Yegappan Lakshmanan2b74b682022-04-03 21:30:32 +01003007 make /path/runtime/doc/builtin.o
3008 :echo expandcmd('make %<.o', {'errmsg': v:true})
3009<
Yegappan Lakshmanan5018a832022-04-02 21:12:21 +01003010 Can also be used as a |method|: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003011 GetCommand()->expandcmd()
3012<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003013 Return type: |String| or list<string> depending on {list}
3014
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003015extend({expr1}, {expr2} [, {expr3}]) *extend()*
3016 {expr1} and {expr2} must be both |Lists| or both
3017 |Dictionaries|.
3018
3019 If they are |Lists|: Append {expr2} to {expr1}.
3020 If {expr3} is given insert the items of {expr2} before the
3021 item with index {expr3} in {expr1}. When {expr3} is zero
3022 insert before the first item. When {expr3} is equal to
3023 len({expr1}) then {expr2} is appended.
3024 Examples: >
3025 :echo sort(extend(mylist, [7, 5]))
3026 :call extend(mylist, [2, 3], 1)
3027< When {expr1} is the same List as {expr2} then the number of
3028 items copied is equal to the original length of the List.
3029 E.g., when {expr3} is 1 you get N new copies of the first item
3030 (where N is the original length of the List).
3031 Use |add()| to concatenate one item to a list. To concatenate
3032 two lists into a new list use the + operator: >
3033 :let newlist = [1, 2, 3] + [4, 5]
3034<
3035 If they are |Dictionaries|:
3036 Add all entries from {expr2} to {expr1}.
3037 If a key exists in both {expr1} and {expr2} then {expr3} is
3038 used to decide what to do:
3039 {expr3} = "keep": keep the value of {expr1}
3040 {expr3} = "force": use the value of {expr2}
3041 {expr3} = "error": give an error message *E737*
3042 When {expr3} is omitted then "force" is assumed.
3043
3044 {expr1} is changed when {expr2} is not empty. If necessary
Christian Brabandt5647c912025-02-17 21:33:30 +01003045 make a copy of {expr1} first or use |extendnew()| to return a
3046 new List/Dictionary.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003047 {expr2} remains unchanged.
3048 When {expr1} is locked and {expr2} is not empty the operation
3049 fails.
Bram Moolenaar016188f2022-06-06 20:52:59 +01003050 Returns {expr1}. Returns 0 on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003051
3052 Can also be used as a |method|: >
3053 mylist->extend(otherlist)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003054<
3055 Return type: list<{type}> or dict<{type}> depending on {expr1}
3056 and {expr2}, in case of error: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003057
3058
3059extendnew({expr1}, {expr2} [, {expr3}]) *extendnew()*
3060 Like |extend()| but instead of adding items to {expr1} a new
3061 List or Dictionary is created and returned. {expr1} remains
Bram Moolenaardd60c362023-02-27 15:49:53 +00003062 unchanged.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003063
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003064 Return type: list<{type}> or dict<{type}> depending on {expr1}
3065 and {expr2}, in case of error: |Number|
3066
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003067
3068feedkeys({string} [, {mode}]) *feedkeys()*
3069 Characters in {string} are queued for processing as if they
3070 come from a mapping or were typed by the user.
3071
3072 By default the string is added to the end of the typeahead
3073 buffer, thus if a mapping is still being executed the
3074 characters come after them. Use the 'i' flag to insert before
3075 other characters, they will be executed next, before any
3076 characters from a mapping.
3077
3078 The function does not wait for processing of keys contained in
3079 {string}.
3080
3081 To include special keys into {string}, use double-quotes
3082 and "\..." notation |expr-quote|. For example,
3083 feedkeys("\<CR>") simulates pressing of the <Enter> key. But
3084 feedkeys('\<CR>') pushes 5 characters.
3085 A special code that might be useful is <Ignore>, it exits the
3086 wait for a character without doing anything. *<Ignore>*
3087
3088 {mode} is a String, which can contain these character flags:
3089 'm' Remap keys. This is default. If {mode} is absent,
3090 keys are remapped.
3091 'n' Do not remap keys.
3092 't' Handle keys as if typed; otherwise they are handled as
3093 if coming from a mapping. This matters for undo,
3094 opening folds, etc.
3095 'L' Lowlevel input. Only works for Unix or when using the
3096 GUI. Keys are used as if they were coming from the
3097 terminal. Other flags are not used. *E980*
3098 When a CTRL-C interrupts and 't' is included it sets
3099 the internal "got_int" flag.
3100 'i' Insert the string instead of appending (see above).
3101 'x' Execute commands until typeahead is empty. This is
3102 similar to using ":normal!". You can call feedkeys()
3103 several times without 'x' and then one time with 'x'
3104 (possibly with an empty {string}) to execute all the
3105 typeahead. Note that when Vim ends in Insert mode it
3106 will behave as if <Esc> is typed, to avoid getting
3107 stuck, waiting for a character to be typed before the
3108 script continues.
3109 Note that if you manage to call feedkeys() while
3110 executing commands, thus calling it recursively, then
3111 all typeahead will be consumed by the last call.
Bram Moolenaara9725222022-01-16 13:30:33 +00003112 'c' Remove any script context when executing, so that
3113 legacy script syntax applies, "s:var" does not work,
Bram Moolenaard899e512022-05-07 21:54:03 +01003114 etc. Note that if the string being fed sets a script
Bram Moolenaarce001a32022-04-27 15:25:03 +01003115 context this still applies.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003116 '!' When used with 'x' will not end Insert mode. Can be
3117 used in a test when a timer is set to exit Insert mode
3118 a little later. Useful for testing CursorHoldI.
3119
3120 Return value is always 0.
3121
3122 Can also be used as a |method|: >
3123 GetInput()->feedkeys()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003124<
3125 Return type: |String| or list<string> depending on {list}
3126
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003127
Shougo Matsushita60c87432024-06-03 22:59:27 +02003128filecopy({from}, {to}) *filecopy()*
3129 Copy the file pointed to by the name {from} to {to}. The
3130 result is a Number, which is |TRUE| if the file was copied
3131 successfully, and |FALSE| when it failed.
3132 If a file with name {to} already exists, it will fail.
3133 Note that it does not handle directories (yet).
3134
3135 This function is not available in the |sandbox|.
3136
3137 Can also be used as a |method|: >
3138 GetOldName()->filecopy(newname)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003139<
3140 Return type: |Number|
3141
Shougo Matsushita60c87432024-06-03 22:59:27 +02003142
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003143filereadable({file}) *filereadable()*
3144 The result is a Number, which is |TRUE| when a file with the
3145 name {file} exists, and can be read. If {file} doesn't exist,
3146 or is a directory, the result is |FALSE|. {file} is any
3147 expression, which is used as a String.
3148 If you don't care about the file being readable you can use
3149 |glob()|.
3150 {file} is used as-is, you may want to expand wildcards first: >
3151 echo filereadable('~/.vimrc')
3152 0
3153 echo filereadable(expand('~/.vimrc'))
3154 1
3155
3156< Can also be used as a |method|: >
3157 GetName()->filereadable()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003158<
3159 Return type: |Number|
3160
3161 *file_readable()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003162 Obsolete name: file_readable().
3163
3164
3165filewritable({file}) *filewritable()*
3166 The result is a Number, which is 1 when a file with the
3167 name {file} exists, and can be written. If {file} doesn't
3168 exist, or is not writable, the result is 0. If {file} is a
3169 directory, and we can write to it, the result is 2.
3170
3171 Can also be used as a |method|: >
3172 GetName()->filewritable()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003173<
3174 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003175
3176
3177filter({expr1}, {expr2}) *filter()*
3178 {expr1} must be a |List|, |String|, |Blob| or |Dictionary|.
3179 For each item in {expr1} evaluate {expr2} and when the result
3180 is zero or false remove the item from the |List| or
3181 |Dictionary|. Similarly for each byte in a |Blob| and each
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00003182 character in a |String|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003183
3184 {expr2} must be a |string| or |Funcref|.
3185
3186 If {expr2} is a |string|, inside {expr2} |v:val| has the value
3187 of the current item. For a |Dictionary| |v:key| has the key
3188 of the current item and for a |List| |v:key| has the index of
3189 the current item. For a |Blob| |v:key| has the index of the
3190 current byte. For a |String| |v:key| has the index of the
3191 current character.
3192 Examples: >
3193 call filter(mylist, 'v:val !~ "OLD"')
3194< Removes the items where "OLD" appears. >
3195 call filter(mydict, 'v:key >= 8')
3196< Removes the items with a key below 8. >
3197 call filter(var, 0)
3198< Removes all the items, thus clears the |List| or |Dictionary|.
3199
3200 Note that {expr2} is the result of expression and is then
3201 used as an expression again. Often it is good to use a
3202 |literal-string| to avoid having to double backslashes.
3203
3204 If {expr2} is a |Funcref| it must take two arguments:
3205 1. the key or the index of the current item.
3206 2. the value of the current item.
3207 The function must return |TRUE| if the item should be kept.
3208 Example that keeps the odd items of a list: >
3209 func Odd(idx, val)
3210 return a:idx % 2 == 1
3211 endfunc
3212 call filter(mylist, function('Odd'))
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00003213< It is shorter when using a |lambda|. In |Vim9| syntax: >
3214 call filter(myList, (idx, val) => idx * val <= 42)
3215< In legacy script syntax: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003216 call filter(myList, {idx, val -> idx * val <= 42})
3217< If you do not use "val" you can leave it out: >
3218 call filter(myList, {idx -> idx % 2 == 1})
3219<
3220 In |Vim9| script the result must be true, false, zero or one.
3221 Other values will result in a type error.
3222
3223 For a |List| and a |Dictionary| the operation is done
3224 in-place. If you want it to remain unmodified make a copy
3225 first: >
3226 :let l = filter(copy(mylist), 'v:val =~ "KEEP"')
3227
3228< Returns {expr1}, the |List| or |Dictionary| that was filtered,
naohiro ono56200ee2022-01-01 14:59:44 +00003229 or a new |Blob| or |String|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003230 When an error is encountered while evaluating {expr2} no
3231 further items in {expr1} are processed.
3232 When {expr2} is a Funcref errors inside a function are ignored,
3233 unless it was defined with the "abort" flag.
3234
3235 Can also be used as a |method|: >
3236 mylist->filter(expr2)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003237<
3238 Return type: |String|, |Blob|, list<{type}> or dict<{type}>
3239 depending on {expr1}
3240
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003241
3242finddir({name} [, {path} [, {count}]]) *finddir()*
3243 Find directory {name} in {path}. Supports both downwards and
3244 upwards recursive directory searches. See |file-searching|
3245 for the syntax of {path}.
3246
3247 Returns the path of the first found match. When the found
3248 directory is below the current directory a relative path is
3249 returned. Otherwise a full path is returned.
3250 If {path} is omitted or empty then 'path' is used.
3251
3252 If the optional {count} is given, find {count}'s occurrence of
3253 {name} in {path} instead of the first one.
3254 When {count} is negative return all the matches in a |List|.
3255
Bram Moolenaar016188f2022-06-06 20:52:59 +01003256 Returns an empty string if the directory is not found.
3257
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003258 This is quite similar to the ex-command `:find`.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003259
3260 Can also be used as a |method|: >
3261 GetName()->finddir()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003262<
Christian Brabandtb753d802025-04-21 11:31:58 +02003263 Return type: list<string> if {count} is negative, |String|
3264 otherwise
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003265
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003266
3267findfile({name} [, {path} [, {count}]]) *findfile()*
3268 Just like |finddir()|, but find a file instead of a directory.
3269 Uses 'suffixesadd'.
3270 Example: >
3271 :echo findfile("tags.vim", ".;")
3272< Searches from the directory of the current file upwards until
3273 it finds the file "tags.vim".
3274
3275 Can also be used as a |method|: >
3276 GetName()->findfile()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003277<
Christian Brabandtb753d802025-04-21 11:31:58 +02003278 Return type: list<string> if {count} is negative, |String|
3279 otherwise
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003280
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003281
3282flatten({list} [, {maxdepth}]) *flatten()*
3283 Flatten {list} up to {maxdepth} levels. Without {maxdepth}
3284 the result is a |List| without nesting, as if {maxdepth} is
3285 a very large number.
3286 The {list} is changed in place, use |flattennew()| if you do
3287 not want that.
3288 In Vim9 script flatten() cannot be used, you must always use
Bram Moolenaara2baa732022-02-04 16:09:54 +00003289 |flattennew()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003290 *E900*
3291 {maxdepth} means how deep in nested lists changes are made.
3292 {list} is not modified when {maxdepth} is 0.
3293 {maxdepth} must be positive number.
3294
3295 If there is an error the number zero is returned.
3296
3297 Example: >
3298 :echo flatten([1, [2, [3, 4]], 5])
3299< [1, 2, 3, 4, 5] >
3300 :echo flatten([1, [2, [3, 4]], 5], 1)
3301< [1, 2, [3, 4], 5]
3302
3303 Can also be used as a |method|: >
3304 mylist->flatten()
3305<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003306 Return type: list<{type}>
3307
3308
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003309flattennew({list} [, {maxdepth}]) *flattennew()*
3310 Like |flatten()| but first make a copy of {list}.
3311
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003312 Return type: list<{type}>
3313
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003314
3315float2nr({expr}) *float2nr()*
3316 Convert {expr} to a Number by omitting the part after the
3317 decimal point.
Bram Moolenaar76db9e02022-11-09 21:21:04 +00003318 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01003319 Returns 0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003320 When the value of {expr} is out of range for a |Number| the
3321 result is truncated to 0x7fffffff or -0x7fffffff (or when
3322 64-bit Number support is enabled, 0x7fffffffffffffff or
3323 -0x7fffffffffffffff). NaN results in -0x80000000 (or when
3324 64-bit Number support is enabled, -0x8000000000000000).
3325 Examples: >
3326 echo float2nr(3.95)
3327< 3 >
3328 echo float2nr(-23.45)
3329< -23 >
3330 echo float2nr(1.0e100)
3331< 2147483647 (or 9223372036854775807) >
3332 echo float2nr(-1.0e150)
3333< -2147483647 (or -9223372036854775807) >
3334 echo float2nr(1.0e-100)
3335< 0
3336
3337 Can also be used as a |method|: >
3338 Compute()->float2nr()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003339<
3340 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003341
3342
3343floor({expr}) *floor()*
3344 Return the largest integral value less than or equal to
3345 {expr} as a |Float| (round down).
3346 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01003347 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003348 Examples: >
3349 echo floor(1.856)
3350< 1.0 >
3351 echo floor(-5.456)
3352< -6.0 >
3353 echo floor(4.0)
3354< 4.0
3355
3356 Can also be used as a |method|: >
3357 Compute()->floor()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003358<
3359 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003360
3361
3362fmod({expr1}, {expr2}) *fmod()*
3363 Return the remainder of {expr1} / {expr2}, even if the
3364 division is not representable. Returns {expr1} - i * {expr2}
3365 for some integer i such that if {expr2} is non-zero, the
3366 result has the same sign as {expr1} and magnitude less than
3367 the magnitude of {expr2}. If {expr2} is zero, the value
3368 returned is zero. The value returned is a |Float|.
3369 {expr1} and {expr2} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01003370 Returns 0.0 if {expr1} or {expr2} is not a |Float| or a
3371 |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003372 Examples: >
3373 :echo fmod(12.33, 1.22)
3374< 0.13 >
3375 :echo fmod(-12.33, 1.22)
3376< -0.13
3377
3378 Can also be used as a |method|: >
3379 Compute()->fmod(1.22)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003380<
3381 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003382
3383
3384fnameescape({string}) *fnameescape()*
3385 Escape {string} for use as file name command argument. All
3386 characters that have a special meaning, such as '%' and '|'
3387 are escaped with a backslash.
3388 For most systems the characters escaped are
3389 " \t\n*?[{`$\\%#'\"|!<". For systems where a backslash
3390 appears in a filename, it depends on the value of 'isfname'.
3391 A leading '+' and '>' is also escaped (special after |:edit|
3392 and |:write|). And a "-" by itself (special after |:cd|).
Bram Moolenaar016188f2022-06-06 20:52:59 +01003393 Returns an empty string on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003394 Example: >
3395 :let fname = '+some str%nge|name'
Bram Moolenaarc51cf032022-02-26 12:25:45 +00003396 :exe "edit " .. fnameescape(fname)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003397< results in executing: >
3398 edit \+some\ str\%nge\|name
3399<
3400 Can also be used as a |method|: >
3401 GetName()->fnameescape()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003402<
3403 Return type: |String|
3404
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003405
3406fnamemodify({fname}, {mods}) *fnamemodify()*
3407 Modify file name {fname} according to {mods}. {mods} is a
3408 string of characters like it is used for file names on the
3409 command line. See |filename-modifiers|.
3410 Example: >
3411 :echo fnamemodify("main.c", ":p:h")
3412< results in: >
Bram Moolenaard799daa2022-06-20 11:17:32 +01003413 /home/user/vim/vim/src
Bram Moolenaar016188f2022-06-06 20:52:59 +01003414< If {mods} is empty or an unsupported modifier is used then
3415 {fname} is returned.
Bram Moolenaar5ed11532022-07-06 13:18:11 +01003416 When {fname} is empty then with {mods} ":h" returns ".", so
3417 that `:cd` can be used with it. This is different from
3418 expand('%:h') without a buffer name, which returns an empty
3419 string.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003420 Note: Environment variables don't work in {fname}, use
3421 |expand()| first then.
3422
3423 Can also be used as a |method|: >
3424 GetName()->fnamemodify(':p:h')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003425<
3426 Return type: |String|
3427
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003428
3429foldclosed({lnum}) *foldclosed()*
3430 The result is a Number. If the line {lnum} is in a closed
3431 fold, the result is the number of the first line in that fold.
3432 If the line {lnum} is not in a closed fold, -1 is returned.
3433 {lnum} is used like with |getline()|. Thus "." is the current
3434 line, "'m" mark m, etc.
3435
3436 Can also be used as a |method|: >
3437 GetLnum()->foldclosed()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003438<
3439 Return type: |Number|
3440
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003441
3442foldclosedend({lnum}) *foldclosedend()*
3443 The result is a Number. If the line {lnum} is in a closed
3444 fold, the result is the number of the last line in that fold.
3445 If the line {lnum} is not in a closed fold, -1 is returned.
3446 {lnum} is used like with |getline()|. Thus "." is the current
3447 line, "'m" mark m, etc.
3448
3449 Can also be used as a |method|: >
3450 GetLnum()->foldclosedend()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003451<
3452 Return type: |Number|
3453
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003454
3455foldlevel({lnum}) *foldlevel()*
3456 The result is a Number, which is the foldlevel of line {lnum}
3457 in the current buffer. For nested folds the deepest level is
3458 returned. If there is no fold at line {lnum}, zero is
3459 returned. It doesn't matter if the folds are open or closed.
3460 When used while updating folds (from 'foldexpr') -1 is
3461 returned for lines where folds are still to be updated and the
3462 foldlevel is unknown. As a special case the level of the
3463 previous line is usually available.
3464 {lnum} is used like with |getline()|. Thus "." is the current
3465 line, "'m" mark m, etc.
3466
3467 Can also be used as a |method|: >
3468 GetLnum()->foldlevel()
3469<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003470 Return type: |Number|
3471
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003472 *foldtext()*
3473foldtext() Returns a String, to be displayed for a closed fold. This is
3474 the default function used for the 'foldtext' option and should
3475 only be called from evaluating 'foldtext'. It uses the
3476 |v:foldstart|, |v:foldend| and |v:folddashes| variables.
3477 The returned string looks like this: >
3478 +-- 45 lines: abcdef
3479< The number of leading dashes depends on the foldlevel. The
3480 "45" is the number of lines in the fold. "abcdef" is the text
3481 in the first non-blank line of the fold. Leading white space,
3482 "//" or "/*" and the text from the 'foldmarker' and
3483 'commentstring' options is removed.
3484 When used to draw the actual foldtext, the rest of the line
3485 will be filled with the fold char from the 'fillchars'
3486 setting.
Bram Moolenaar016188f2022-06-06 20:52:59 +01003487 Returns an empty string when there is no fold.
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003488
3489 Return type: |String|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003490 {not available when compiled without the |+folding| feature}
3491
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003492
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003493foldtextresult({lnum}) *foldtextresult()*
3494 Returns the text that is displayed for the closed fold at line
3495 {lnum}. Evaluates 'foldtext' in the appropriate context.
3496 When there is no closed fold at {lnum} an empty string is
3497 returned.
3498 {lnum} is used like with |getline()|. Thus "." is the current
3499 line, "'m" mark m, etc.
3500 Useful when exporting folded text, e.g., to HTML.
3501 {not available when compiled without the |+folding| feature}
3502
3503
3504 Can also be used as a |method|: >
3505 GetLnum()->foldtextresult()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003506<
3507 Return type: |String|
3508
Ernie Raele79e2072024-01-13 11:47:33 +01003509
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01003510foreach({expr1}, {expr2}) *foreach()* *E1525*
3511 {expr1} must be a |List|, |Tuple|, |String|, |Blob| or
3512 |Dictionary|.
Ernie Raele79e2072024-01-13 11:47:33 +01003513 For each item in {expr1} execute {expr2}. {expr1} is not
erraelc92b8be2024-01-14 10:11:07 -08003514 modified; its values may be, as with |:lockvar| 1. |E741|
Ernie Raele79e2072024-01-13 11:47:33 +01003515 See |map()| and |filter()| to modify {expr1}.
3516
3517 {expr2} must be a |string| or |Funcref|.
3518
3519 If {expr2} is a |string|, inside {expr2} |v:val| has the value
3520 of the current item. For a |Dictionary| |v:key| has the key
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01003521 of the current item and for a |List| or a |Tuple| |v:key| has
3522 the index of the current item. For a |Blob| |v:key| has the
3523 index of the current byte. For a |String| |v:key| has the
3524 index of the current character.
Ernie Raele79e2072024-01-13 11:47:33 +01003525 Examples: >
3526 call foreach(mylist, 'used[v:val] = true')
3527< This records the items that are in the {expr1} list.
3528
3529 Note that {expr2} is the result of expression and is then used
3530 as a command. Often it is good to use a |literal-string| to
3531 avoid having to double backslashes.
3532
3533 If {expr2} is a |Funcref| it must take two arguments:
3534 1. the key or the index of the current item.
3535 2. the value of the current item.
3536 With a legacy script lambda you don't get an error if it only
3537 accepts one argument, but with a Vim9 lambda you get "E1106:
3538 One argument too many", the number of arguments must match.
3539 If the function returns a value, it is ignored.
3540
3541 Returns {expr1} in all cases.
3542 When an error is encountered while executing {expr2} no
3543 further items in {expr1} are processed.
3544 When {expr2} is a Funcref errors inside a function are ignored,
3545 unless it was defined with the "abort" flag.
3546
3547 Can also be used as a |method|: >
3548 mylist->foreach(expr2)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003549<
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01003550 Return type: |String|, |Blob|, list<{type}>, tuple<{type}> or
3551 dict<{type}> depending on {expr1}
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003552
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003553 *foreground()*
3554foreground() Move the Vim window to the foreground. Useful when sent from
3555 a client to a Vim server. |remote_send()|
3556 On Win32 systems this might not work, the OS does not always
3557 allow a window to bring itself to the foreground. Use
3558 |remote_foreground()| instead.
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003559
3560 Return type: |Number|
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01003561 {only in the Win32, Motif and GTK GUI versions and the
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003562 Win32 console version}
3563
Bram Moolenaaraa534142022-09-15 21:46:02 +01003564fullcommand({name} [, {vim9}]) *fullcommand()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003565 Get the full command name from a short abbreviated command
3566 name; see |20.2| for details on command abbreviations.
3567
3568 The string argument {name} may start with a `:` and can
3569 include a [range], these are skipped and not returned.
Bram Moolenaaraa534142022-09-15 21:46:02 +01003570 Returns an empty string if a command doesn't exist, if it's
3571 ambiguous (for user-defined commands) or cannot be shortened
3572 this way. |vim9-no-shorten|
3573
3574 Without the {vim9} argument uses the current script version.
3575 If {vim9} is present and FALSE then legacy script rules are
3576 used. When {vim9} is present and TRUE then Vim9 rules are
3577 used, e.g. "en" is not a short form of "endif".
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003578
3579 For example `fullcommand('s')`, `fullcommand('sub')`,
3580 `fullcommand(':%substitute')` all return "substitute".
3581
3582 Can also be used as a |method|: >
3583 GetName()->fullcommand()
3584<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003585 Return type: |String|
3586
3587
3588funcref({name} [, {arglist}] [, {dict}]) *funcref()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003589 Just like |function()|, but the returned Funcref will lookup
3590 the function by reference, not by name. This matters when the
3591 function {name} is redefined later.
3592
3593 Unlike |function()|, {name} must be an existing user function.
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00003594 It only works for an autoloaded function if it has already
3595 been loaded (to avoid mistakenly loading the autoload script
3596 when only intending to use the function name, use |function()|
3597 instead). {name} cannot be a builtin function.
Bram Moolenaar016188f2022-06-06 20:52:59 +01003598 Returns 0 on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003599
3600 Can also be used as a |method|: >
3601 GetFuncname()->funcref([arg])
3602<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003603 Return type: func(...): any or |Number| on error
3604
Dominique Pellee764d1b2023-03-12 21:20:59 +00003605 *function()* *partial* *E700* *E923*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003606function({name} [, {arglist}] [, {dict}])
3607 Return a |Funcref| variable that refers to function {name}.
3608 {name} can be the name of a user defined function or an
3609 internal function.
3610
3611 {name} can also be a Funcref or a partial. When it is a
3612 partial the dict stored in it will be used and the {dict}
3613 argument is not allowed. E.g.: >
3614 let FuncWithArg = function(dict.Func, [arg])
3615 let Broken = function(dict.Func, [arg], dict)
3616<
3617 When using the Funcref the function will be found by {name},
3618 also when it was redefined later. Use |funcref()| to keep the
3619 same function.
3620
3621 When {arglist} or {dict} is present this creates a partial.
3622 That means the argument list and/or the dictionary is stored in
3623 the Funcref and will be used when the Funcref is called.
3624
3625 The arguments are passed to the function in front of other
3626 arguments, but after any argument from |method|. Example: >
3627 func Callback(arg1, arg2, name)
3628 ...
3629 let Partial = function('Callback', ['one', 'two'])
3630 ...
3631 call Partial('name')
3632< Invokes the function as with: >
3633 call Callback('one', 'two', 'name')
3634
3635< With a |method|: >
3636 func Callback(one, two, three)
3637 ...
3638 let Partial = function('Callback', ['two'])
3639 ...
3640 eval 'one'->Partial('three')
3641< Invokes the function as with: >
3642 call Callback('one', 'two', 'three')
3643
3644< The function() call can be nested to add more arguments to the
3645 Funcref. The extra arguments are appended to the list of
3646 arguments. Example: >
3647 func Callback(arg1, arg2, name)
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003648 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003649 let Func = function('Callback', ['one'])
3650 let Func2 = function(Func, ['two'])
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003651 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003652 call Func2('name')
3653< Invokes the function as with: >
3654 call Callback('one', 'two', 'name')
3655
3656< The Dictionary is only useful when calling a "dict" function.
3657 In that case the {dict} is passed in as "self". Example: >
3658 function Callback() dict
Bram Moolenaarc51cf032022-02-26 12:25:45 +00003659 echo "called for " .. self.name
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003660 endfunction
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003661 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003662 let context = {"name": "example"}
3663 let Func = function('Callback', context)
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003664 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003665 call Func() " will echo: called for example
3666< The use of function() is not needed when there are no extra
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003667 arguments, these two are equivalent, if Callback() is defined
3668 as context.Callback(): >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003669 let Func = function('Callback', context)
3670 let Func = context.Callback
3671
3672< The argument list and the Dictionary can be combined: >
3673 function Callback(arg1, count) dict
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003674 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003675 let context = {"name": "example"}
3676 let Func = function('Callback', ['one'], context)
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003677 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003678 call Func(500)
3679< Invokes the function as with: >
3680 call context.Callback('one', 500)
3681<
Bram Moolenaar016188f2022-06-06 20:52:59 +01003682 Returns 0 on error.
3683
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003684 Can also be used as a |method|: >
3685 GetFuncname()->function([arg])
3686
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003687<
3688 Return type: func(...): any or |Number| on error
3689
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003690
3691garbagecollect([{atexit}]) *garbagecollect()*
3692 Cleanup unused |Lists|, |Dictionaries|, |Channels| and |Jobs|
3693 that have circular references.
3694
3695 There is hardly ever a need to invoke this function, as it is
3696 automatically done when Vim runs out of memory or is waiting
3697 for the user to press a key after 'updatetime'. Items without
3698 circular references are always freed when they become unused.
3699 This is useful if you have deleted a very big |List| and/or
3700 |Dictionary| with circular references in a script that runs
3701 for a long time.
3702
3703 When the optional {atexit} argument is one, garbage
3704 collection will also be done when exiting Vim, if it wasn't
3705 done before. This is useful when checking for memory leaks.
3706
3707 The garbage collection is not done immediately but only when
3708 it's safe to perform. This is when waiting for the user to
3709 type a character. To force garbage collection immediately use
3710 |test_garbagecollect_now()|.
3711
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003712 Return type: |String|
3713
3714
LemonBoy48b7d052024-07-09 18:24:59 +02003715get({list}, {idx} [, {default}]) *get()* *get()-list*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003716 Get item {idx} from |List| {list}. When this item is not
3717 available return {default}. Return zero when {default} is
3718 omitted.
3719 Preferably used as a |method|: >
3720 mylist->get(idx)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003721<
3722 Return type: any, depending on {list}
3723
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01003724get({tuple}, {idx} [, {default}]) *get()-tuple*
3725 Get item {idx} from |Tuple| {tuple}. When this item is not
3726 available return {default}. Return zero when {default} is
3727 omitted.
3728 Preferably used as a |method|: >
3729 mytuple->get(idx)
3730<
3731 Return type: any, depending on {tuple}
3732
LemonBoy48b7d052024-07-09 18:24:59 +02003733get({blob}, {idx} [, {default}]) *get()-blob*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003734 Get byte {idx} from |Blob| {blob}. When this byte is not
3735 available return {default}. Return -1 when {default} is
3736 omitted.
3737 Preferably used as a |method|: >
3738 myblob->get(idx)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003739<
3740 Return type: |Number|
3741
LemonBoy48b7d052024-07-09 18:24:59 +02003742get({dict}, {key} [, {default}]) *get()-dict*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003743 Get item with key {key} from |Dictionary| {dict}. When this
3744 item is not available return {default}. Return zero when
3745 {default} is omitted. Useful example: >
3746 let val = get(g:, 'var_name', 'default')
3747< This gets the value of g:var_name if it exists, and uses
3748 'default' when it does not exist.
3749 Preferably used as a |method|: >
3750 mydict->get(key)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003751<
h-east84ac2122024-06-17 18:12:30 +02003752 Return type: any, depending on {dict}
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003753
LemonBoy48b7d052024-07-09 18:24:59 +02003754get({func}, {what}) *get()-func*
3755 Get item {what} from |Funcref| {func}. Possible values for
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003756 {what} are:
LemonBoy48b7d052024-07-09 18:24:59 +02003757 "name" The function name
3758 "func" The function
3759 "dict" The dictionary
3760 "args" The list with arguments
3761 "arity" A dictionary with information about the number of
3762 arguments accepted by the function (minus the
3763 {arglist}) with the following fields:
3764 required the number of positional arguments
3765 optional the number of optional arguments,
3766 in addition to the required ones
3767 varargs |TRUE| if the function accepts a
3768 variable number of arguments |...|
3769
3770 Note: There is no error, if the {arglist} of
3771 the Funcref contains more arguments than the
3772 Funcref expects, it's not validated.
3773
Bram Moolenaar016188f2022-06-06 20:52:59 +01003774 Returns zero on error.
LemonBoy48b7d052024-07-09 18:24:59 +02003775
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003776 Preferably used as a |method|: >
3777 myfunc->get(what)
3778<
LemonBoy48b7d052024-07-09 18:24:59 +02003779 Return type: any, depending on {func} and {what}
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003780
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003781 *getbufinfo()*
3782getbufinfo([{buf}])
3783getbufinfo([{dict}])
3784 Get information about buffers as a List of Dictionaries.
3785
3786 Without an argument information about all the buffers is
3787 returned.
3788
3789 When the argument is a |Dictionary| only the buffers matching
3790 the specified criteria are returned. The following keys can
3791 be specified in {dict}:
3792 buflisted include only listed buffers.
3793 bufloaded include only loaded buffers.
3794 bufmodified include only modified buffers.
3795
3796 Otherwise, {buf} specifies a particular buffer to return
3797 information for. For the use of {buf}, see |bufname()|
3798 above. If the buffer is found the returned List has one item.
3799 Otherwise the result is an empty list.
3800
3801 Each returned List item is a dictionary with the following
3802 entries:
3803 bufnr Buffer number.
3804 changed TRUE if the buffer is modified.
3805 changedtick Number of changes made to the buffer.
Sean Dewar1fb41032023-08-16 17:15:05 +01003806 command TRUE if the buffer belongs to the
3807 command-line window |cmdwin|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003808 hidden TRUE if the buffer is hidden.
3809 lastused Timestamp in seconds, like
3810 |localtime()|, when the buffer was
3811 last used.
3812 {only with the |+viminfo| feature}
3813 listed TRUE if the buffer is listed.
3814 lnum Line number used for the buffer when
3815 opened in the current window.
3816 Only valid if the buffer has been
3817 displayed in the window in the past.
3818 If you want the line number of the
3819 last known cursor position in a given
3820 window, use |line()|: >
3821 :echo line('.', {winid})
3822<
3823 linecount Number of lines in the buffer (only
3824 valid when loaded)
3825 loaded TRUE if the buffer is loaded.
3826 name Full path to the file in the buffer.
3827 signs List of signs placed in the buffer.
3828 Each list item is a dictionary with
3829 the following fields:
3830 id sign identifier
3831 lnum line number
3832 name sign name
3833 variables A reference to the dictionary with
3834 buffer-local variables.
3835 windows List of |window-ID|s that display this
3836 buffer
3837 popups List of popup |window-ID|s that
3838 display this buffer
3839
3840 Examples: >
3841 for buf in getbufinfo()
3842 echo buf.name
3843 endfor
3844 for buf in getbufinfo({'buflisted':1})
3845 if buf.changed
3846 ....
3847 endif
3848 endfor
3849<
3850 To get buffer-local options use: >
3851 getbufvar({bufnr}, '&option_name')
3852<
3853 Can also be used as a |method|: >
3854 GetBufnr()->getbufinfo()
3855<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003856 Return type: list<dict<any>>
3857
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003858
3859 *getbufline()*
3860getbufline({buf}, {lnum} [, {end}])
3861 Return a |List| with the lines starting from {lnum} to {end}
3862 (inclusive) in the buffer {buf}. If {end} is omitted, a
Bram Moolenaarce30ccc2022-11-21 19:57:04 +00003863 |List| with only the line {lnum} is returned. See
3864 `getbufoneline()` for only getting the line.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003865
3866 For the use of {buf}, see |bufname()| above.
3867
3868 For {lnum} and {end} "$" can be used for the last line of the
3869 buffer. Otherwise a number must be used.
3870
3871 When {lnum} is smaller than 1 or bigger than the number of
3872 lines in the buffer, an empty |List| is returned.
3873
3874 When {end} is greater than the number of lines in the buffer,
3875 it is treated as {end} is set to the number of lines in the
3876 buffer. When {end} is before {lnum} an empty |List| is
3877 returned.
3878
3879 This function works only for loaded buffers. For unloaded and
3880 non-existing buffers, an empty |List| is returned.
3881
3882 Example: >
3883 :let lines = getbufline(bufnr("myfile"), 1, "$")
3884
3885< Can also be used as a |method|: >
3886 GetBufnr()->getbufline(lnum)
Bram Moolenaarce30ccc2022-11-21 19:57:04 +00003887<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003888 Return type: list<string>
3889
Bram Moolenaarce30ccc2022-11-21 19:57:04 +00003890 *getbufoneline()*
3891getbufoneline({buf}, {lnum})
3892 Just like `getbufline()` but only get one line and return it
3893 as a string.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003894
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003895 Return type: |String|
3896
3897
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003898getbufvar({buf}, {varname} [, {def}]) *getbufvar()*
3899 The result is the value of option or local buffer variable
3900 {varname} in buffer {buf}. Note that the name without "b:"
3901 must be used.
3902 The {varname} argument is a string.
3903 When {varname} is empty returns a |Dictionary| with all the
3904 buffer-local variables.
3905 When {varname} is equal to "&" returns a |Dictionary| with all
3906 the buffer-local options.
3907 Otherwise, when {varname} starts with "&" returns the value of
3908 a buffer-local option.
3909 This also works for a global or buffer-local option, but it
3910 doesn't work for a global variable, window-local variable or
3911 window-local option.
3912 For the use of {buf}, see |bufname()| above.
3913 When the buffer or variable doesn't exist {def} or an empty
3914 string is returned, there is no error message.
3915 Examples: >
3916 :let bufmodified = getbufvar(1, "&mod")
Bram Moolenaarc51cf032022-02-26 12:25:45 +00003917 :echo "todo myvar = " .. getbufvar("todo", "myvar")
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003918
3919< Can also be used as a |method|: >
3920 GetBufnr()->getbufvar(varname)
3921<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003922 Return type: any, depending on {varname}
3923
3924
mikoto20001083cae2024-11-11 21:24:14 +01003925getcellpixels() *getcellpixels()*
3926 Returns a |List| of terminal cell pixel size.
h-eastb534e802024-12-03 20:37:52 +01003927 List format is [xpixel, ypixel].
mikoto2000a73dfc22024-11-18 21:12:21 +01003928
3929 Only works on Unix (terminal and gVim) and Windows (gVim only).
3930 Returns [] on other systems or on failure.
3931 Note that there could be variations across different terminals.
3932 On macOS, system Terminal.app returns sizes in points (before
3933 Retina scaling), whereas third-party terminals return raw pixel
3934 sizes (post Retina scaling).
mikoto20001083cae2024-11-11 21:24:14 +01003935
mikoto2000de094dc2024-11-14 22:13:48 +01003936 Return type: list<any>
mikoto20001083cae2024-11-11 21:24:14 +01003937
3938
Kota Kato66bb9ae2023-01-17 18:31:56 +00003939getcellwidths() *getcellwidths()*
3940 Returns a |List| of cell widths of character ranges overridden
3941 by |setcellwidths()|. The format is equal to the argument of
3942 |setcellwidths()|. If no character ranges have their cell
3943 widths overridden, an empty List is returned.
h-east84ac2122024-06-17 18:12:30 +02003944
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003945 Return type: list<any>
Kota Kato66bb9ae2023-01-17 18:31:56 +00003946
3947
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003948getchangelist([{buf}]) *getchangelist()*
3949 Returns the |changelist| for the buffer {buf}. For the use
3950 of {buf}, see |bufname()| above. If buffer {buf} doesn't
3951 exist, an empty list is returned.
3952
3953 The returned list contains two entries: a list with the change
3954 locations and the current position in the list. Each
3955 entry in the change list is a dictionary with the following
3956 entries:
3957 col column number
3958 coladd column offset for 'virtualedit'
3959 lnum line number
3960 If buffer {buf} is the current buffer, then the current
3961 position refers to the position in the list. For other
3962 buffers, it is set to the length of the list.
3963
3964 Can also be used as a |method|: >
3965 GetBufnr()->getchangelist()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02003966<
3967 Return type: list<any>
3968
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003969
zeertzjqe0a2ab32025-02-02 09:14:35 +01003970getchar([{expr} [, {opts}]]) *getchar()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003971 Get a single character from the user or input stream.
zeertzjqe0a2ab32025-02-02 09:14:35 +01003972 If {expr} is omitted or is -1, wait until a character is
3973 available.
Doug Kearns9cd9e752024-04-07 17:42:17 +02003974 If {expr} is 0, only get a character when one is available.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003975 Return zero otherwise.
Doug Kearns9cd9e752024-04-07 17:42:17 +02003976 If {expr} is 1, only check if a character is available, it is
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003977 not consumed. Return zero if no character available.
zeertzjqe0a2ab32025-02-02 09:14:35 +01003978 If you prefer always getting a string use |getcharstr()|, or
3979 specify |FALSE| as "number" in {opts}.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003980
Doug Kearns9cd9e752024-04-07 17:42:17 +02003981 Without {expr} and when {expr} is 0 a whole character or
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003982 special key is returned. If it is a single character, the
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01003983 result is a Number. Use |nr2char()| to convert it to a String.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003984 Otherwise a String is returned with the encoded character.
3985 For a special key it's a String with a sequence of bytes
3986 starting with 0x80 (decimal: 128). This is the same value as
3987 the String "\<Key>", e.g., "\<Left>". The returned value is
3988 also a String when a modifier (shift, control, alt) was used
zeertzjqe0a2ab32025-02-02 09:14:35 +01003989 that is not included in the character. |keytrans()| can also
3990 be used to convert a returned String into a readable form.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003991
Doug Kearns9cd9e752024-04-07 17:42:17 +02003992 When {expr} is 0 and Esc is typed, there will be a short delay
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003993 while Vim waits to see if this is the start of an escape
3994 sequence.
3995
Doug Kearns9cd9e752024-04-07 17:42:17 +02003996 When {expr} is 1 only the first byte is returned. For a
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003997 one-byte character it is the character itself as a number.
3998 Use nr2char() to convert it to a String.
3999
4000 Use getcharmod() to obtain any additional modifiers.
4001
zeertzjqe0a2ab32025-02-02 09:14:35 +01004002 The optional argument {opts} is a Dict and supports the
4003 following items:
4004
zeertzjqedf0f7d2025-02-02 19:01:01 +01004005 cursor A String specifying cursor behavior
4006 when waiting for a character.
4007 "hide": hide the cursor.
4008 "keep": keep current cursor unchanged.
4009 "msg": move cursor to message area.
4010 (default: "msg")
4011
zeertzjqe0a2ab32025-02-02 09:14:35 +01004012 number If |TRUE|, return a Number when getting
4013 a single character.
4014 If |FALSE|, the return value is always
4015 converted to a String, and an empty
4016 String (instead of 0) is returned when
4017 no character is available.
4018 (default: |TRUE|)
4019
4020 simplify If |TRUE|, include modifiers in the
4021 character if possible. E.g., return
4022 the same value for CTRL-I and <Tab>.
4023 If |FALSE|, don't include modifiers in
4024 the character.
4025 (default: |TRUE|)
4026
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004027 When the user clicks a mouse button, the mouse event will be
4028 returned. The position can then be found in |v:mouse_col|,
4029 |v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|.
4030 |getmousepos()| can also be used. Mouse move events will be
4031 ignored.
4032 This example positions the mouse as it would normally happen: >
4033 let c = getchar()
4034 if c == "\<LeftMouse>" && v:mouse_win > 0
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004035 exe v:mouse_win .. "wincmd w"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004036 exe v:mouse_lnum
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004037 exe "normal " .. v:mouse_col .. "|"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004038 endif
4039<
4040 When using bracketed paste only the first character is
4041 returned, the rest of the pasted text is dropped.
4042 |xterm-bracketed-paste|.
4043
4044 There is no prompt, you will somehow have to make clear to the
4045 user that a character has to be typed. The screen is not
4046 redrawn, e.g. when resizing the window. When using a popup
4047 window it should work better with a |popup-filter|.
4048
4049 There is no mapping for the character.
4050 Key codes are replaced, thus when the user presses the <Del>
4051 key you get the code for the <Del> key, not the raw character
4052 sequence. Examples: >
4053 getchar() == "\<Del>"
4054 getchar() == "\<S-Left>"
4055< This example redefines "f" to ignore case: >
4056 :nmap f :call FindChar()<CR>
4057 :function FindChar()
4058 : let c = nr2char(getchar())
4059 : while col('.') < col('$') - 1
4060 : normal l
4061 : if getline('.')[col('.') - 1] ==? c
4062 : break
4063 : endif
4064 : endwhile
4065 :endfunction
4066<
4067 You may also receive synthetic characters, such as
4068 |<CursorHold>|. Often you will want to ignore this and get
4069 another character: >
4070 :function GetKey()
4071 : let c = getchar()
4072 : while c == "\<CursorHold>"
4073 : let c = getchar()
4074 : endwhile
4075 : return c
4076 :endfunction
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004077<
4078 Return type: |Number| or |String|
4079
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004080
4081getcharmod() *getcharmod()*
4082 The result is a Number which is the state of the modifiers for
4083 the last obtained character with getchar() or in another way.
4084 These values are added together:
4085 2 shift
4086 4 control
4087 8 alt (meta)
4088 16 meta (when it's different from ALT)
4089 32 mouse double click
4090 64 mouse triple click
4091 96 mouse quadruple click (== 32 + 64)
Casey Tucker92e90a12024-01-25 22:44:00 +01004092 128 command (Mac) or super (GTK)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004093 Only the modifiers that have not been included in the
4094 character itself are obtained. Thus Shift-a results in "A"
Bram Moolenaar016188f2022-06-06 20:52:59 +01004095 without a modifier. Returns 0 if no modifiers are used.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004096
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004097 Return type: |Number|
4098
4099
4100getcharpos({expr}) *getcharpos()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004101 Get the position for String {expr}. Same as |getpos()| but the
4102 column number in the returned List is a character index
4103 instead of a byte index.
naohiro ono56200ee2022-01-01 14:59:44 +00004104 If |getpos()| returns a very large column number, equal to
4105 |v:maxcol|, then getcharpos() will return the character index
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004106 of the last character.
4107
4108 Example:
4109 With the cursor on '세' in line 5 with text "여보세요": >
4110 getcharpos('.') returns [0, 5, 3, 0]
4111 getpos('.') returns [0, 5, 7, 0]
4112<
4113 Can also be used as a |method|: >
4114 GetMark()->getcharpos()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004115<
4116 Return type: list<number>
4117
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004118
4119getcharsearch() *getcharsearch()*
4120 Return the current character search information as a {dict}
4121 with the following entries:
4122
4123 char character previously used for a character
4124 search (|t|, |f|, |T|, or |F|); empty string
4125 if no character search has been performed
4126 forward direction of character search; 1 for forward,
4127 0 for backward
4128 until type of character search; 1 for a |t| or |T|
4129 character search, 0 for an |f| or |F|
4130 character search
4131
4132 This can be useful to always have |;| and |,| search
4133 forward/backward regardless of the direction of the previous
4134 character search: >
4135 :nnoremap <expr> ; getcharsearch().forward ? ';' : ','
4136 :nnoremap <expr> , getcharsearch().forward ? ',' : ';'
4137< Also see |setcharsearch()|.
4138
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004139 Return type: dict<any>
4140
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004141
zeertzjqe0a2ab32025-02-02 09:14:35 +01004142getcharstr([{expr} [, {opts}]]) *getcharstr()*
4143 The same as |getchar()|, except that this always returns a
4144 String, and "number" isn't allowed in {opts}.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004145
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004146 Return type: |String|
4147
Ruslan Russkikh0407d622024-10-08 22:21:05 +02004148getcmdcomplpat() *getcmdcomplpat()*
4149 Return completion pattern of the current command-line.
4150 Only works when the command line is being edited, thus
4151 requires use of |c_CTRL-\_e| or |c_CTRL-R_=|.
4152 Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()|,
4153 |getcmdprompt()|, |getcmdcompltype()| and |setcmdline()|.
4154 Returns an empty string when completion is not defined.
4155
4156 Return type: |String|
4157
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004158
Shougo Matsushita79d599b2022-05-07 12:48:29 +01004159getcmdcompltype() *getcmdcompltype()*
4160 Return the type of the current command-line completion.
4161 Only works when the command line is being edited, thus
4162 requires use of |c_CTRL-\_e| or |c_CTRL-R_=|.
Bram Moolenaar921bde82022-05-09 19:50:35 +01004163 See |:command-completion| for the return string.
Shougo Matsushita69084282024-09-23 20:34:47 +02004164 Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()|,
Ruslan Russkikh0407d622024-10-08 22:21:05 +02004165 |getcmdprompt()|, |getcmdcomplpat()| and |setcmdline()|.
Shougo Matsushita79d599b2022-05-07 12:48:29 +01004166 Returns an empty string when completion is not defined.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004167
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004168 Return type: |String|
4169
4170
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004171getcmdline() *getcmdline()*
Shougo Matsushita69084282024-09-23 20:34:47 +02004172 Return the current command-line input. Only works when the
4173 command line is being edited, thus requires use of
4174 |c_CTRL-\_e| or |c_CTRL-R_=|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004175 Example: >
4176 :cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
Shougo Matsushita69084282024-09-23 20:34:47 +02004177< Also see |getcmdtype()|, |getcmdpos()|, |setcmdpos()|,
4178 |getcmdprompt()| and |setcmdline()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004179 Returns an empty string when entering a password or using
4180 |inputsecret()|.
4181
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004182 Return type: |String|
4183
4184
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004185getcmdpos() *getcmdpos()*
4186 Return the position of the cursor in the command line as a
4187 byte count. The first column is 1.
4188 Only works when editing the command line, thus requires use of
4189 |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
4190 Returns 0 otherwise.
Shougo Matsushita69084282024-09-23 20:34:47 +02004191 Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()|,
4192 |getcmdprompt()| and |setcmdline()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004193
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004194 Return type: |Number|
4195
4196
Shougo Matsushita69084282024-09-23 20:34:47 +02004197getcmdprompt() *getcmdprompt()*
4198 Return the current command-line prompt when using functions
4199 like |input()| or |confirm()|.
4200 Only works when the command line is being edited, thus
4201 requires use of |c_CTRL-\_e| or |c_CTRL-R_=|.
4202 Also see |getcmdtype()|, |getcmdline()|, |getcmdpos()|,
4203 |setcmdpos()| and |setcmdline()|.
4204
4205 Return type: |String|
4206
4207
Shougo Matsushita79d599b2022-05-07 12:48:29 +01004208getcmdscreenpos() *getcmdscreenpos()*
4209 Return the screen position of the cursor in the command line
4210 as a byte count. The first column is 1.
4211 Instead of |getcmdpos()|, it adds the prompt position.
4212 Only works when editing the command line, thus requires use of
4213 |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
4214 Returns 0 otherwise.
Shougo Matsushita07ea5f12022-08-27 12:22:25 +01004215 Also see |getcmdpos()|, |setcmdpos()|, |getcmdline()| and
4216 |setcmdline()|.
Shougo Matsushita79d599b2022-05-07 12:48:29 +01004217
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004218 Return type: |Number|
4219
4220
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004221getcmdtype() *getcmdtype()*
4222 Return the current command-line type. Possible return values
4223 are:
4224 : normal Ex command
4225 > debug mode command |debug-mode|
4226 / forward search command
4227 ? backward search command
4228 @ |input()| command
4229 - |:insert| or |:append| command
4230 = |i_CTRL-R_=|
4231 Only works when editing the command line, thus requires use of
4232 |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
4233 Returns an empty string otherwise.
4234 Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
4235
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004236 Return type: |String|
4237
4238
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004239getcmdwintype() *getcmdwintype()*
4240 Return the current |command-line-window| type. Possible return
4241 values are the same as |getcmdtype()|. Returns an empty string
4242 when not in the command-line window.
4243
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004244 Return type: |String|
4245
4246
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004247getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
4248 Return a list of command-line completion matches. The String
4249 {type} argument specifies what for. The following completion
4250 types are supported:
4251
4252 arglist file names in argument list
4253 augroup autocmd groups
4254 buffer buffer names
Bram Moolenaar6e2e2cc2022-03-14 19:24:46 +00004255 behave |:behave| suboptions
4256 breakpoint |:breakadd| and |:breakdel| suboptions
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004257 color color schemes
4258 command Ex command
4259 cmdline |cmdline-completion| result
4260 compiler compilers
4261 cscope |:cscope| suboptions
Shougo Matsushita92997dd2023-08-20 20:55:55 +02004262 custom,{func} custom completion, defined via {func}
4263 customlist,{func} custom completion, defined via {func}
zeertzjq85f36d62024-10-10 19:14:13 +02004264 diff_buffer |:diffget| and |:diffput| completion
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004265 dir directory names
LemonBoya20bf692024-07-11 22:35:53 +02004266 dir_in_path directory names in |'cdpath'|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004267 environment environment variable names
4268 event autocommand events
4269 expression Vim expression
4270 file file and directory names
4271 file_in_path file and directory names in |'path'|
4272 filetype filetype names |'filetype'|
Christian Brabandta3422aa2025-04-23 21:04:24 +02004273 filetypecmd |:filetype| suboptions
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004274 function function name
4275 help help subjects
4276 highlight highlight groups
Bram Moolenaar6e2e2cc2022-03-14 19:24:46 +00004277 history |:history| suboptions
Doug Kearns81642d92024-01-04 22:37:44 +01004278 keymap keyboard mappings
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004279 locale locale names (as output of locale -a)
4280 mapclear buffer argument
4281 mapping mapping name
4282 menu menus
4283 messages |:messages| suboptions
4284 option options
4285 packadd optional package |pack-add| names
zeertzjq5c8771b2023-01-24 12:34:03 +00004286 runtime |:runtime| completion
Yegappan Lakshmanan454ce672022-03-24 11:22:13 +00004287 scriptnames sourced script names |:scriptnames|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004288 shellcmd Shell command
zeertzjq85f36d62024-10-10 19:14:13 +02004289 shellcmdline Shell command line with filename arguments
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004290 sign |:sign| suboptions
4291 syntax syntax file names |'syntax'|
4292 syntime |:syntime| suboptions
4293 tag tags
4294 tag_listfiles tags, file names
4295 user user names
4296 var user variables
4297
4298 If {pat} is an empty string, then all the matches are
4299 returned. Otherwise only items matching {pat} are returned.
4300 See |wildcards| for the use of special characters in {pat}.
4301
4302 If the optional {filtered} flag is set to 1, then 'wildignore'
4303 is applied to filter the results. Otherwise all the matches
4304 are returned. The 'wildignorecase' option always applies.
4305
Yegappan Lakshmanane7dd0fa2022-03-22 16:06:31 +00004306 If the 'wildoptions' option contains 'fuzzy', then fuzzy
4307 matching is used to get the completion matches. Otherwise
Yegappan Lakshmanan454ce672022-03-24 11:22:13 +00004308 regular expression matching is used. Thus this function
4309 follows the user preference, what happens on the command line.
4310 If you do not want this you can make 'wildoptions' empty
4311 before calling getcompletion() and restore it afterwards.
Yegappan Lakshmanane7dd0fa2022-03-22 16:06:31 +00004312
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004313 If {type} is "cmdline", then the |cmdline-completion| result is
4314 returned. For example, to complete the possible values after
4315 a ":call" command: >
4316 echo getcompletion('call ', 'cmdline')
4317<
4318 If there are no matches, an empty list is returned. An
4319 invalid value for {type} produces an error.
4320
4321 Can also be used as a |method|: >
4322 GetPattern()->getcompletion('color')
4323<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004324 Return type: list<string>
4325
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004326 *getcurpos()*
4327getcurpos([{winid}])
4328 Get the position of the cursor. This is like getpos('.'), but
4329 includes an extra "curswant" item in the list:
4330 [0, lnum, col, off, curswant] ~
4331 The "curswant" number is the preferred column when moving the
naohiro ono56200ee2022-01-01 14:59:44 +00004332 cursor vertically. After |$| command it will be a very large
4333 number equal to |v:maxcol|. Also see |getcursorcharpos()| and
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004334 |getpos()|.
4335 The first "bufnum" item is always zero. The byte position of
4336 the cursor is returned in 'col'. To get the character
4337 position, use |getcursorcharpos()|.
4338
4339 The optional {winid} argument can specify the window. It can
4340 be the window number or the |window-ID|. The last known
4341 cursor position is returned, this may be invalid for the
4342 current value of the buffer if it is not the current window.
4343 If {winid} is invalid a list with zeroes is returned.
4344
4345 This can be used to save and restore the cursor position: >
4346 let save_cursor = getcurpos()
4347 MoveTheCursorAround
4348 call setpos('.', save_cursor)
4349< Note that this only works within the window. See
4350 |winrestview()| for restoring more state.
4351
4352 Can also be used as a |method|: >
4353 GetWinid()->getcurpos()
4354<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004355 Return type: list<number>
4356
4357
4358getcursorcharpos([{winid}]) *getcursorcharpos()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004359 Same as |getcurpos()| but the column number in the returned
4360 List is a character index instead of a byte index.
4361
4362 Example:
4363 With the cursor on '보' in line 3 with text "여보세요": >
4364 getcursorcharpos() returns [0, 3, 2, 0, 3]
4365 getcurpos() returns [0, 3, 4, 0, 3]
4366<
4367 Can also be used as a |method|: >
4368 GetWinid()->getcursorcharpos()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004369<
4370 Return type: list<number>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004371
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004372
4373getcwd([{winnr} [, {tabnr}]]) *getcwd()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004374 The result is a String, which is the name of the current
4375 working directory. 'autochdir' is ignored.
4376
4377 With {winnr} return the local current directory of this window
4378 in the current tab page. {winnr} can be the window number or
4379 the |window-ID|.
4380 If {winnr} is -1 return the name of the global working
4381 directory. See also |haslocaldir()|.
4382
4383 With {winnr} and {tabnr} return the local current directory of
4384 the window in the specified tab page. If {winnr} is -1 return
4385 the working directory of the tabpage.
4386 If {winnr} is zero use the current window, if {tabnr} is zero
4387 use the current tabpage.
4388 Without any arguments, return the actual working directory of
4389 the current window.
4390 Return an empty string if the arguments are invalid.
4391
4392 Examples: >
4393 " Get the working directory of the current window
4394 :echo getcwd()
4395 :echo getcwd(0)
4396 :echo getcwd(0, 0)
4397 " Get the working directory of window 3 in tabpage 2
4398 :echo getcwd(3, 2)
4399 " Get the global working directory
4400 :echo getcwd(-1)
4401 " Get the working directory of tabpage 3
4402 :echo getcwd(-1, 3)
4403 " Get the working directory of current tabpage
4404 :echo getcwd(-1, 0)
4405
4406< Can also be used as a |method|: >
4407 GetWinnr()->getcwd()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004408<
4409 Return type: |String|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004410
4411getenv({name}) *getenv()*
4412 Return the value of environment variable {name}. The {name}
4413 argument is a string, without a leading '$'. Example: >
4414 myHome = getenv('HOME')
4415
4416< When the variable does not exist |v:null| is returned. That
4417 is different from a variable set to an empty string, although
4418 some systems interpret the empty value as the variable being
4419 deleted. See also |expr-env|.
4420
4421 Can also be used as a |method|: >
4422 GetVarname()->getenv()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004423<
4424 Return type: |String| or |Number|
4425
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004426
4427getfontname([{name}]) *getfontname()*
4428 Without an argument returns the name of the normal font being
4429 used. Like what is used for the Normal highlight group
4430 |hl-Normal|.
4431 With an argument a check is done whether String {name} is a
4432 valid font name. If not then an empty string is returned.
4433 Otherwise the actual font name is returned, or {name} if the
4434 GUI does not support obtaining the real name.
4435 Only works when the GUI is running, thus not in your vimrc or
4436 gvimrc file. Use the |GUIEnter| autocommand to use this
4437 function just after the GUI has started.
4438 Note that the GTK GUI accepts any font name, thus checking for
4439 a valid name does not work.
4440
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004441 Return type: |String|
4442
4443
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004444getfperm({fname}) *getfperm()*
4445 The result is a String, which is the read, write, and execute
4446 permissions of the given file {fname}.
4447 If {fname} does not exist or its directory cannot be read, an
4448 empty string is returned.
4449 The result is of the form "rwxrwxrwx", where each group of
4450 "rwx" flags represent, in turn, the permissions of the owner
4451 of the file, the group the file belongs to, and other users.
4452 If a user does not have a given permission the flag for this
4453 is replaced with the string "-". Examples: >
4454 :echo getfperm("/etc/passwd")
4455 :echo getfperm(expand("~/.vimrc"))
4456< This will hopefully (from a security point of view) display
4457 the string "rw-r--r--" or even "rw-------".
4458
4459 Can also be used as a |method|: >
4460 GetFilename()->getfperm()
4461<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004462 Return type: |String|
4463
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004464 For setting permissions use |setfperm()|.
4465
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004466
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004467getfsize({fname}) *getfsize()*
4468 The result is a Number, which is the size in bytes of the
4469 given file {fname}.
4470 If {fname} is a directory, 0 is returned.
4471 If the file {fname} can't be found, -1 is returned.
4472 If the size of {fname} is too big to fit in a Number then -2
4473 is returned.
4474
4475 Can also be used as a |method|: >
4476 GetFilename()->getfsize()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004477<
4478 Return type: |Number|
4479
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004480
4481getftime({fname}) *getftime()*
4482 The result is a Number, which is the last modification time of
4483 the given file {fname}. The value is measured as seconds
4484 since 1st Jan 1970, and may be passed to strftime(). See also
4485 |localtime()| and |strftime()|.
4486 If the file {fname} can't be found -1 is returned.
4487
4488 Can also be used as a |method|: >
4489 GetFilename()->getftime()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004490<
4491 Return type: |Number|
4492
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004493
4494getftype({fname}) *getftype()*
4495 The result is a String, which is a description of the kind of
4496 file of the given file {fname}.
4497 If {fname} does not exist an empty string is returned.
4498 Here is a table over different kinds of files and their
4499 results:
4500 Normal file "file"
4501 Directory "dir"
4502 Symbolic link "link"
4503 Block device "bdev"
4504 Character device "cdev"
4505 Socket "socket"
4506 FIFO "fifo"
4507 All other "other"
4508 Example: >
4509 getftype("/home")
4510< Note that a type such as "link" will only be returned on
4511 systems that support it. On some systems only "dir" and
4512 "file" are returned. On MS-Windows a symbolic link to a
4513 directory returns "dir" instead of "link".
4514
4515 Can also be used as a |method|: >
4516 GetFilename()->getftype()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004517<
4518 Return type: |String|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004519
4520getimstatus() *getimstatus()*
4521 The result is a Number, which is |TRUE| when the IME status is
Bram Moolenaar016188f2022-06-06 20:52:59 +01004522 active and |FALSE| otherwise.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004523 See 'imstatusfunc'.
4524
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004525 Return type: |Number|
4526
4527
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004528getjumplist([{winnr} [, {tabnr}]]) *getjumplist()*
4529 Returns the |jumplist| for the specified window.
4530
4531 Without arguments use the current window.
4532 With {winnr} only use this window in the current tab page.
4533 {winnr} can also be a |window-ID|.
4534 With {winnr} and {tabnr} use the window in the specified tab
Bram Moolenaar016188f2022-06-06 20:52:59 +01004535 page. If {winnr} or {tabnr} is invalid, an empty list is
4536 returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004537
4538 The returned list contains two entries: a list with the jump
4539 locations and the last used jump position number in the list.
4540 Each entry in the jump location list is a dictionary with
4541 the following entries:
4542 bufnr buffer number
4543 col column number
4544 coladd column offset for 'virtualedit'
4545 filename filename if available
4546 lnum line number
4547
4548 Can also be used as a |method|: >
4549 GetWinnr()->getjumplist()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004550<
4551 Return type: list<any>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004552
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004553 *getline()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004554getline({lnum} [, {end}])
4555 Without {end} the result is a String, which is line {lnum}
4556 from the current buffer. Example: >
4557 getline(1)
4558< When {lnum} is a String that doesn't start with a
4559 digit, |line()| is called to translate the String into a Number.
4560 To get the line under the cursor: >
4561 getline(".")
4562< When {lnum} is a number smaller than 1 or bigger than the
4563 number of lines in the buffer, an empty string is returned.
4564
4565 When {end} is given the result is a |List| where each item is
4566 a line from the current buffer in the range {lnum} to {end},
4567 including line {end}.
4568 {end} is used in the same way as {lnum}.
4569 Non-existing lines are silently omitted.
4570 When {end} is before {lnum} an empty |List| is returned.
4571 Example: >
4572 :let start = line('.')
4573 :let end = search("^$") - 1
4574 :let lines = getline(start, end)
4575
4576< Can also be used as a |method|: >
4577 ComputeLnum()->getline()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004578<
4579 Return type: list<string> or |String| depending on {end}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004580
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004581 To get lines from another buffer see |getbufline()| and
Bram Moolenaarce30ccc2022-11-21 19:57:04 +00004582 |getbufoneline()|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004583
4584getloclist({nr} [, {what}]) *getloclist()*
4585 Returns a |List| with all the entries in the location list for
4586 window {nr}. {nr} can be the window number or the |window-ID|.
4587 When {nr} is zero the current window is used.
4588
4589 For a location list window, the displayed location list is
4590 returned. For an invalid window number {nr}, an empty list is
4591 returned. Otherwise, same as |getqflist()|.
4592
4593 If the optional {what} dictionary argument is supplied, then
4594 returns the items listed in {what} as a dictionary. Refer to
4595 |getqflist()| for the supported items in {what}.
4596
4597 In addition to the items supported by |getqflist()| in {what},
4598 the following item is supported by |getloclist()|:
4599
4600 filewinid id of the window used to display files
4601 from the location list. This field is
4602 applicable only when called from a
4603 location list window. See
4604 |location-list-file-window| for more
4605 details.
4606
4607 Returns a |Dictionary| with default values if there is no
4608 location list for the window {nr}.
4609 Returns an empty Dictionary if window {nr} does not exist.
4610
4611 Examples (See also |getqflist-examples|): >
4612 :echo getloclist(3, {'all': 0})
4613 :echo getloclist(5, {'filewinid': 0})
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004614<
4615 Return type: list<dict<any>> or list<any>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004616
4617
4618getmarklist([{buf}]) *getmarklist()*
4619 Without the {buf} argument returns a |List| with information
4620 about all the global marks. |mark|
4621
4622 If the optional {buf} argument is specified, returns the
4623 local marks defined in buffer {buf}. For the use of {buf},
Bram Moolenaar016188f2022-06-06 20:52:59 +01004624 see |bufname()|. If {buf} is invalid, an empty list is
4625 returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004626
4627 Each item in the returned List is a |Dict| with the following:
4628 mark name of the mark prefixed by "'"
4629 pos a |List| with the position of the mark:
4630 [bufnum, lnum, col, off]
4631 Refer to |getpos()| for more information.
4632 file file name
4633
4634 Refer to |getpos()| for getting information about a specific
4635 mark.
4636
4637 Can also be used as a |method|: >
4638 GetBufnr()->getmarklist()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004639<
4640 Return type: list<dict<any>> or list<any>
4641
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004642
4643getmatches([{win}]) *getmatches()*
4644 Returns a |List| with all matches previously defined for the
4645 current window by |matchadd()| and the |:match| commands.
4646 |getmatches()| is useful in combination with |setmatches()|,
4647 as |setmatches()| can restore a list of matches saved by
4648 |getmatches()|.
4649 If {win} is specified, use the window with this number or
Bram Moolenaar016188f2022-06-06 20:52:59 +01004650 window ID instead of the current window. If {win} is invalid,
4651 an empty list is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004652 Example: >
4653 :echo getmatches()
4654< [{'group': 'MyGroup1', 'pattern': 'TODO',
4655 'priority': 10, 'id': 1}, {'group': 'MyGroup2',
4656 'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
4657 :let m = getmatches()
4658 :call clearmatches()
4659 :echo getmatches()
4660< [] >
4661 :call setmatches(m)
4662 :echo getmatches()
4663< [{'group': 'MyGroup1', 'pattern': 'TODO',
4664 'priority': 10, 'id': 1}, {'group': 'MyGroup2',
4665 'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
4666 :unlet m
4667<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004668 Return type: list<dict<any>> or list<any>
4669
4670
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004671getmousepos() *getmousepos()*
4672 Returns a |Dictionary| with the last known position of the
4673 mouse. This can be used in a mapping for a mouse click or in
4674 a filter of a popup window. The items are:
4675 screenrow screen row
4676 screencol screen column
4677 winid Window ID of the click
4678 winrow row inside "winid"
4679 wincol column inside "winid"
4680 line text line inside "winid"
4681 column text column inside "winid"
zeertzjqf5a94d52023-10-15 10:03:30 +02004682 coladd offset (in screen columns) from the
4683 start of the clicked char
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004684 All numbers are 1-based.
4685
4686 If not over a window, e.g. when in the command line, then only
4687 "screenrow" and "screencol" are valid, the others are zero.
4688
4689 When on the status line below a window or the vertical
4690 separator right of a window, the "line" and "column" values
4691 are zero.
4692
4693 When the position is after the text then "column" is the
4694 length of the text in bytes plus one.
4695
4696 If the mouse is over a popup window then that window is used.
4697
4698 When using |getchar()| the Vim variables |v:mouse_lnum|,
4699 |v:mouse_col| and |v:mouse_winid| also provide these values.
4700
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004701 Return type: dict<number>
4702
4703
Bram Moolenaar24dc19c2022-11-14 19:49:15 +00004704getmouseshape() *getmouseshape()*
4705 Returns the name of the currently showing mouse pointer.
4706 When the |+mouseshape| feature is not supported or the shape
4707 is unknown an empty string is returned.
4708 This function is mainly intended for testing.
4709
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004710 Return type: |String|
4711
4712
4713getpid() *getpid()*
4714 Return a Number which is the process ID of the Vim process.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004715 On Unix and MS-Windows this is a unique number, until Vim
4716 exits.
4717
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004718 Return type: |Number|
4719
4720
4721getpos({expr}) *getpos()*
zeertzjq02f3eba2024-06-12 20:45:24 +02004722 Get the position for String {expr}.
4723 The accepted values for {expr} are: *E1209*
4724 . The cursor position.
4725 $ The last line in the current buffer.
4726 'x Position of mark x (if the mark is not set, 0 is
zeertzjqd353d272024-06-13 23:00:25 +08004727 returned for all values).
zeertzjq02f3eba2024-06-12 20:45:24 +02004728 w0 First line visible in current window (one if the
4729 display isn't updated, e.g. in silent Ex mode).
4730 w$ Last line visible in current window (this is one
4731 less than "w0" if no lines are visible).
4732 v When not in Visual mode, returns the cursor
4733 position. In Visual mode, returns the other end
4734 of the Visual area. A good way to think about
4735 this is that in Visual mode "v" and "." complement
4736 each other. While "." refers to the cursor
4737 position, "v" refers to where |v_o| would move the
4738 cursor. As a result, you can use "v" and "."
4739 together to work on all of a selection in
4740 characterwise Visual mode. If the cursor is at
4741 the end of a characterwise Visual area, "v" refers
4742 to the start of the same Visual area. And if the
4743 cursor is at the start of a characterwise Visual
4744 area, "v" refers to the end of the same Visual
4745 area. "v" differs from |'<| and |'>| in that it's
4746 updated right away.
4747 Note that a mark in another file can be used. The line number
4748 then applies to another buffer.
4749
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004750 The result is a |List| with four numbers:
4751 [bufnum, lnum, col, off]
4752 "bufnum" is zero, unless a mark like '0 or 'A is used, then it
4753 is the buffer number of the mark.
4754 "lnum" and "col" are the position in the buffer. The first
4755 column is 1.
4756 The "off" number is zero, unless 'virtualedit' is used. Then
4757 it is the offset in screen columns from the start of the
4758 character. E.g., a position within a <Tab> or after the last
4759 character.
zeertzjq02f3eba2024-06-12 20:45:24 +02004760
4761 For getting the cursor position see |getcurpos()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004762 The column number in the returned List is the byte position
4763 within the line. To get the character position in the line,
4764 use |getcharpos()|.
zeertzjq02f3eba2024-06-12 20:45:24 +02004765
4766 Note that for '< and '> Visual mode matters: when it is "V"
4767 (visual line mode) the column of '< is zero and the column of
4768 '> is a large number equal to |v:maxcol|.
naohiro ono56200ee2022-01-01 14:59:44 +00004769 A very large column number equal to |v:maxcol| can be returned,
4770 in which case it means "after the end of the line".
Bram Moolenaar016188f2022-06-06 20:52:59 +01004771 If {expr} is invalid, returns a list with all zeros.
zeertzjq02f3eba2024-06-12 20:45:24 +02004772
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004773 This can be used to save and restore the position of a mark: >
4774 let save_a_mark = getpos("'a")
4775 ...
4776 call setpos("'a", save_a_mark)
zeertzjqd353d272024-06-13 23:00:25 +08004777<
4778 Also see |getcharpos()|, |getcurpos()| and |setpos()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004779
4780 Can also be used as a |method|: >
4781 GetMark()->getpos()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004782<
4783 Return type: list<number>
4784
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004785
4786getqflist([{what}]) *getqflist()*
4787 Returns a |List| with all the current quickfix errors. Each
4788 list item is a dictionary with these entries:
4789 bufnr number of buffer that has the file name, use
4790 bufname() to get the name
4791 module module name
4792 lnum line number in the buffer (first line is 1)
4793 end_lnum
4794 end of line number if the item is multiline
4795 col column number (first column is 1)
4796 end_col end of column number if the item has range
4797 vcol |TRUE|: "col" is visual column
4798 |FALSE|: "col" is byte index
4799 nr error number
h-east84ac2122024-06-17 18:12:30 +02004800 pattern search pattern used to locate the error
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004801 text description of the error
4802 type type of the error, 'E', '1', etc.
4803 valid |TRUE|: recognized error message
h_east596a9f22023-11-21 21:24:23 +09004804 user_data
4805 custom data associated with the item, can be
Tom Praschanca6ac992023-08-11 23:26:12 +02004806 any type.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004807
4808 When there is no error list or it's empty, an empty list is
4809 returned. Quickfix list entries with a non-existing buffer
4810 number are returned with "bufnr" set to zero (Note: some
4811 functions accept buffer number zero for the alternate buffer,
4812 you may need to explicitly check for zero).
4813
4814 Useful application: Find pattern matches in multiple files and
4815 do something with them: >
4816 :vimgrep /theword/jg *.c
4817 :for d in getqflist()
4818 : echo bufname(d.bufnr) ':' d.lnum '=' d.text
4819 :endfor
4820<
4821 If the optional {what} dictionary argument is supplied, then
4822 returns only the items listed in {what} as a dictionary. The
4823 following string items are supported in {what}:
4824 changedtick get the total number of changes made
4825 to the list |quickfix-changedtick|
4826 context get the |quickfix-context|
4827 efm errorformat to use when parsing "lines". If
4828 not present, then the 'errorformat' option
4829 value is used.
4830 id get information for the quickfix list with
4831 |quickfix-ID|; zero means the id for the
4832 current list or the list specified by "nr"
4833 idx get information for the quickfix entry at this
4834 index in the list specified by 'id' or 'nr'.
4835 If set to zero, then uses the current entry.
4836 See |quickfix-index|
4837 items quickfix list entries
4838 lines parse a list of lines using 'efm' and return
4839 the resulting entries. Only a |List| type is
4840 accepted. The current quickfix list is not
4841 modified. See |quickfix-parse|.
4842 nr get information for this quickfix list; zero
4843 means the current quickfix list and "$" means
4844 the last quickfix list
4845 qfbufnr number of the buffer displayed in the quickfix
4846 window. Returns 0 if the quickfix buffer is
4847 not present. See |quickfix-buffer|.
4848 size number of entries in the quickfix list
4849 title get the list title |quickfix-title|
4850 winid get the quickfix |window-ID|
4851 all all of the above quickfix properties
4852 Non-string items in {what} are ignored. To get the value of a
4853 particular item, set it to zero.
4854 If "nr" is not present then the current quickfix list is used.
4855 If both "nr" and a non-zero "id" are specified, then the list
4856 specified by "id" is used.
4857 To get the number of lists in the quickfix stack, set "nr" to
4858 "$" in {what}. The "nr" value in the returned dictionary
4859 contains the quickfix stack size.
4860 When "lines" is specified, all the other items except "efm"
4861 are ignored. The returned dictionary contains the entry
4862 "items" with the list of entries.
4863
4864 The returned dictionary contains the following entries:
4865 changedtick total number of changes made to the
4866 list |quickfix-changedtick|
4867 context quickfix list context. See |quickfix-context|
4868 If not present, set to "".
4869 id quickfix list ID |quickfix-ID|. If not
4870 present, set to 0.
4871 idx index of the quickfix entry in the list. If not
4872 present, set to 0.
4873 items quickfix list entries. If not present, set to
4874 an empty list.
4875 nr quickfix list number. If not present, set to 0
4876 qfbufnr number of the buffer displayed in the quickfix
4877 window. If not present, set to 0.
4878 size number of entries in the quickfix list. If not
4879 present, set to 0.
4880 title quickfix list title text. If not present, set
4881 to "".
4882 winid quickfix |window-ID|. If not present, set to 0
4883
4884 Examples (See also |getqflist-examples|): >
4885 :echo getqflist({'all': 1})
4886 :echo getqflist({'nr': 2, 'title': 1})
4887 :echo getqflist({'lines' : ["F1:10:L10"]})
4888<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004889 Return type: list<dict<any>> or list<any>
4890
4891
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004892getreg([{regname} [, 1 [, {list}]]]) *getreg()*
4893 The result is a String, which is the contents of register
4894 {regname}. Example: >
4895 :let cliptext = getreg('*')
4896< When register {regname} was not set the result is an empty
4897 string.
Bram Moolenaara2baa732022-02-04 16:09:54 +00004898 The {regname} argument must be a string. *E1162*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004899
4900 getreg('=') returns the last evaluated value of the expression
4901 register. (For use in maps.)
4902 getreg('=', 1) returns the expression itself, so that it can
4903 be restored with |setreg()|. For other registers the extra
4904 argument is ignored, thus you can always give it.
4905
4906 If {list} is present and |TRUE|, the result type is changed
4907 to |List|. Each list item is one text line. Use it if you care
4908 about zero bytes possibly present inside register: without
4909 third argument both NLs and zero bytes are represented as NLs
4910 (see |NL-used-for-Nul|).
4911 When the register was not set an empty list is returned.
4912
4913 If {regname} is "", the unnamed register '"' is used.
4914 If {regname} is not specified, |v:register| is used.
4915 In |Vim9-script| {regname} must be one character.
4916
4917 Can also be used as a |method|: >
4918 GetRegname()->getreg()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004919<
4920 Return type: |String|
4921
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004922
4923getreginfo([{regname}]) *getreginfo()*
4924 Returns detailed information about register {regname} as a
4925 Dictionary with the following entries:
4926 regcontents List of lines contained in register
4927 {regname}, like
4928 |getreg|({regname}, 1, 1).
4929 regtype the type of register {regname}, as in
4930 |getregtype()|.
4931 isunnamed Boolean flag, v:true if this register
4932 is currently pointed to by the unnamed
4933 register.
4934 points_to for the unnamed register, gives the
4935 single letter name of the register
4936 currently pointed to (see |quotequote|).
4937 For example, after deleting a line
4938 with `dd`, this field will be "1",
4939 which is the register that got the
4940 deleted text.
4941
4942 The {regname} argument is a string. If {regname} is invalid
4943 or not set, an empty Dictionary will be returned.
4944 If {regname} is "" or "@", the unnamed register '"' is used.
4945 If {regname} is not specified, |v:register| is used.
4946 The returned Dictionary can be passed to |setreg()|.
4947 In |Vim9-script| {regname} must be one character.
4948
4949 Can also be used as a |method|: >
4950 GetRegname()->getreginfo()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02004951<
4952 Return type: dict<any>
4953
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004954
Shougo Matsushita19b71882024-02-28 22:48:12 +01004955getregion({pos1}, {pos2} [, {opts}]) *getregion()*
Shougo Matsushita84bf6e62024-03-06 21:10:18 +01004956 Returns the list of strings from {pos1} to {pos2} from a
Shougo Matsushita19b71882024-02-28 22:48:12 +01004957 buffer.
4958
4959 {pos1} and {pos2} must both be |List|s with four numbers.
Shougo Matsushita84bf6e62024-03-06 21:10:18 +01004960 See |getpos()| for the format of the list. It's possible
4961 to specify positions from a different buffer, but please
zeertzjq0df8f932024-03-07 21:40:53 +01004962 note the limitations at |getregion-notes|.
Shougo Matsushita19b71882024-02-28 22:48:12 +01004963
4964 The optional argument {opts} is a Dict and supports the
4965 following items:
4966
zeertzjqafc22952024-05-24 19:07:12 +02004967 type Specify the region's selection type.
4968 See |getregtype()| for possible values,
zeertzjqdff55a32024-05-25 10:25:36 +02004969 except that the width can be omitted
4970 and an empty string cannot be used.
zeertzjqafc22952024-05-24 19:07:12 +02004971 (default: "v")
Shougo Matsushita19b71882024-02-28 22:48:12 +01004972
zeertzjq87410ab2024-03-02 06:00:23 +08004973 exclusive If |TRUE|, use exclusive selection
zeertzjqafc22952024-05-24 19:07:12 +02004974 for the end position.
zeertzjq87410ab2024-03-02 06:00:23 +08004975 (default: follow 'selection')
Shougo Matsushita19b71882024-02-28 22:48:12 +01004976
Shougo Matsushita3f905ab2024-02-21 00:02:45 +01004977 You can get the last selection type by |visualmode()|.
4978 If Visual mode is active, use |mode()| to get the Visual mode
4979 (e.g., in a |:vmap|).
zeertzjq87410ab2024-03-02 06:00:23 +08004980 This function is useful to get text starting and ending in
4981 different columns, such as a |characterwise-visual| selection.
Shougo Matsushita3f905ab2024-02-21 00:02:45 +01004982
Shougo Matsushita84bf6e62024-03-06 21:10:18 +01004983 *getregion-notes*
Shougo Matsushita3f905ab2024-02-21 00:02:45 +01004984 Note that:
4985 - Order of {pos1} and {pos2} doesn't matter, it will always
4986 return content from the upper left position to the lower
4987 right position.
zeertzjq87410ab2024-03-02 06:00:23 +08004988 - If 'virtualedit' is enabled and the region is past the end
4989 of the lines, resulting lines are padded with spaces.
4990 - If the region is blockwise and it starts or ends in the
4991 middle of a multi-cell character, it is not included but
4992 its selected part is substituted with spaces.
Shougo Matsushita84bf6e62024-03-06 21:10:18 +01004993 - If {pos1} and {pos2} are not in the same buffer, an empty
zeertzjq421b5972024-02-22 19:48:06 +01004994 list is returned.
Shougo Matsushita84bf6e62024-03-06 21:10:18 +01004995 - {pos1} and {pos2} must belong to a |bufloaded()| buffer.
zeertzjq0df8f932024-03-07 21:40:53 +01004996 - It is evaluated in current window context, which makes a
4997 difference if the buffer is displayed in a window with
4998 different 'virtualedit' or 'list' values.
Shougo Matsushita3f905ab2024-02-21 00:02:45 +01004999
5000 Examples: >
5001 :xnoremap <CR>
Shougo Matsushita19b71882024-02-28 22:48:12 +01005002 \ <Cmd>echow getregion(
5003 \ getpos('v'), getpos('.'), #{ type: mode() })<CR>
Shougo Matsushita3f905ab2024-02-21 00:02:45 +01005004<
5005 Can also be used as a |method|: >
Shougo Matsushita19b71882024-02-28 22:48:12 +01005006 getpos('.')->getregion(getpos("'a"))
zeertzjqd4d12072024-07-16 20:34:16 +02005007<
5008 Return type: list<string>
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005009
Yee Cheng Chind52fb2f2024-10-31 09:25:09 +01005010
Shougo Matsushitab4757e62024-05-07 20:49:24 +02005011getregionpos({pos1}, {pos2} [, {opts}]) *getregionpos()*
5012 Same as |getregion()|, but returns a list of positions
5013 describing the buffer text segments bound by {pos1} and
5014 {pos2}.
5015 The segments are a pair of positions for every line: >
5016 [[{start_pos}, {end_pos}], ...]
5017<
5018 The position is a |List| with four numbers:
5019 [bufnum, lnum, col, off]
5020 "bufnum" is the buffer number.
5021 "lnum" and "col" are the position in the buffer. The first
5022 column is 1.
zeertzjqc95e64f2024-05-20 14:00:31 +02005023 If the "off" number of a starting position is non-zero, it is
5024 the offset in screen columns from the start of the character.
5025 E.g., a position within a <Tab> or after the last character.
5026 If the "off" number of an ending position is non-zero, it is
zeertzjq52a6f342024-05-22 16:42:44 +02005027 the offset of the character's first cell not included in the
5028 selection, otherwise all its cells are included.
Shougo Matsushitab4757e62024-05-07 20:49:24 +02005029
zeertzjq2b09de92024-05-24 07:48:51 +02005030 Apart from the options supported by |getregion()|, {opts} also
5031 supports the following:
5032
5033 eol If |TRUE|, indicate positions beyond
5034 the end of a line with "col" values
5035 one more than the length of the line.
5036 If |FALSE|, positions are limited
5037 within their lines, and if a line is
5038 empty or the selection is entirely
5039 beyond the end of a line, a "col"
5040 value of 0 is used for both positions.
5041 (default: |FALSE|)
5042
Shougo Matsushitab4757e62024-05-07 20:49:24 +02005043 Can also be used as a |method|: >
5044 getpos('.')->getregionpos(getpos("'a"))
5045<
Christian Brabandt83d74402025-03-19 21:55:59 +01005046 For an example, see the highlight-yank plugin |52.6|
5047
zeertzjqd4d12072024-07-16 20:34:16 +02005048 Return type: list<list<list<number>>>
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005049
5050
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005051getregtype([{regname}]) *getregtype()*
5052 The result is a String, which is type of register {regname}.
5053 The value will be one of:
5054 "v" for |characterwise| text
5055 "V" for |linewise| text
5056 "<CTRL-V>{width}" for |blockwise-visual| text
5057 "" for an empty or unknown register
5058 <CTRL-V> is one character with value 0x16.
5059 The {regname} argument is a string. If {regname} is "", the
5060 unnamed register '"' is used. If {regname} is not specified,
5061 |v:register| is used.
5062 In |Vim9-script| {regname} must be one character.
5063
5064 Can also be used as a |method|: >
5065 GetRegname()->getregtype()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005066<
5067 Return type: |String|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005068
Yee Cheng Chind52fb2f2024-10-31 09:25:09 +01005069
Bram Moolenaar71badf92023-04-22 22:40:14 +01005070getscriptinfo([{opts}]) *getscriptinfo()*
Yegappan Lakshmananf768c3d2022-08-22 13:15:13 +01005071 Returns a |List| with information about all the sourced Vim
Bram Moolenaar753885b2022-08-24 16:30:36 +01005072 scripts in the order they were sourced, like what
5073 `:scriptnames` shows.
Yegappan Lakshmananf768c3d2022-08-22 13:15:13 +01005074
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01005075 The optional Dict argument {opts} supports the following
5076 optional items:
5077 name Script name match pattern. If specified,
5078 and "sid" is not specified, information about
Bram Moolenaar71badf92023-04-22 22:40:14 +01005079 scripts with a name that match the pattern
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01005080 "name" are returned.
5081 sid Script ID |<SID>|. If specified, only
5082 information about the script with ID "sid" is
5083 returned and "name" is ignored.
5084
Yegappan Lakshmananf768c3d2022-08-22 13:15:13 +01005085 Each item in the returned List is a |Dict| with the following
5086 items:
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01005087 autoload Set to TRUE for a script that was used with
Bram Moolenaar753885b2022-08-24 16:30:36 +01005088 `import autoload` but was not actually sourced
5089 yet (see |import-autoload|).
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01005090 functions List of script-local function names defined in
5091 the script. Present only when a particular
5092 script is specified using the "sid" item in
5093 {opts}.
5094 name Vim script file name.
5095 sid Script ID |<SID>|.
5096 sourced Script ID of the actually sourced script that
Bram Moolenaarfd999452022-08-24 18:30:14 +01005097 this script name links to, if any, otherwise
5098 zero
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01005099 variables A dictionary with the script-local variables.
Bram Moolenaarf1dcd142022-12-31 15:30:45 +00005100 Present only when a particular script is
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01005101 specified using the "sid" item in {opts}.
5102 Note that this is a copy, the value of
5103 script-local variables cannot be changed using
5104 this dictionary.
h_east59858792023-10-25 22:47:05 +09005105 version Vim script version (|scriptversion|)
Yegappan Lakshmanan520f6ef2022-08-25 17:40:40 +01005106
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01005107 Examples: >
5108 :echo getscriptinfo({'name': 'myscript'})
zeertzjqad4881c2024-05-04 15:35:30 +08005109 :echo getscriptinfo({'sid': 15})[0].variables
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01005110<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005111 Return type: list<dict<any>>
5112
5113
ichizok663d18d2025-01-02 18:06:00 +01005114getstacktrace() *getstacktrace()*
5115 Returns the current stack trace of Vim scripts.
5116 Stack trace is a |List|, of which each item is a |Dictionary|
5117 with the following items:
zeertzjq6655bef2025-01-06 18:32:13 +01005118 funcref The funcref if the stack is at a function,
5119 otherwise this item is omitted.
ichizok663d18d2025-01-02 18:06:00 +01005120 event The string of the event description if the
zeertzjq6655bef2025-01-06 18:32:13 +01005121 stack is at an autocmd event, otherwise this
5122 item is omitted.
5123 lnum The line number in the script on the stack.
ichizok663d18d2025-01-02 18:06:00 +01005124 filepath The file path of the script on the stack.
5125
5126 Return type: list<dict<any>>
5127
5128
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005129gettabinfo([{tabnr}]) *gettabinfo()*
5130 If {tabnr} is not specified, then information about all the
5131 tab pages is returned as a |List|. Each List item is a
5132 |Dictionary|. Otherwise, {tabnr} specifies the tab page
5133 number and information about that one is returned. If the tab
5134 page does not exist an empty List is returned.
5135
5136 Each List item is a |Dictionary| with the following entries:
5137 tabnr tab page number.
5138 variables a reference to the dictionary with
5139 tabpage-local variables
5140 windows List of |window-ID|s in the tab page.
5141
5142 Can also be used as a |method|: >
5143 GetTabnr()->gettabinfo()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005144<
5145 Return type: list<dict<any>>
5146
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005147
5148gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()*
5149 Get the value of a tab-local variable {varname} in tab page
5150 {tabnr}. |t:var|
5151 Tabs are numbered starting with one.
5152 The {varname} argument is a string. When {varname} is empty a
5153 dictionary with all tab-local variables is returned.
5154 Note that the name without "t:" must be used.
5155 When the tab or variable doesn't exist {def} or an empty
5156 string is returned, there is no error message.
5157
5158 Can also be used as a |method|: >
5159 GetTabnr()->gettabvar(varname)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005160<
5161 Return type: any, depending on {varname}
5162
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005163
5164gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()*
5165 Get the value of window-local variable {varname} in window
5166 {winnr} in tab page {tabnr}.
5167 The {varname} argument is a string. When {varname} is empty a
5168 dictionary with all window-local variables is returned.
5169 When {varname} is equal to "&" get the values of all
5170 window-local options in a |Dictionary|.
5171 Otherwise, when {varname} starts with "&" get the value of a
5172 window-local option.
5173 Note that {varname} must be the name without "w:".
5174 Tabs are numbered starting with one. For the current tabpage
5175 use |getwinvar()|.
5176 {winnr} can be the window number or the |window-ID|.
5177 When {winnr} is zero the current window is used.
5178 This also works for a global option, buffer-local option and
5179 window-local option, but it doesn't work for a global variable
5180 or buffer-local variable.
5181 When the tab, window or variable doesn't exist {def} or an
5182 empty string is returned, there is no error message.
5183 Examples: >
5184 :let list_is_on = gettabwinvar(1, 2, '&list')
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005185 :echo "myvar = " .. gettabwinvar(3, 1, 'myvar')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005186<
5187 To obtain all window-local variables use: >
5188 gettabwinvar({tabnr}, {winnr}, '&')
5189
5190< Can also be used as a |method|: >
5191 GetTabnr()->gettabwinvar(winnr, varname)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005192<
5193 Return type: any, depending on {varname}
5194
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005195
5196gettagstack([{winnr}]) *gettagstack()*
5197 The result is a Dict, which is the tag stack of window {winnr}.
5198 {winnr} can be the window number or the |window-ID|.
5199 When {winnr} is not specified, the current window is used.
5200 When window {winnr} doesn't exist, an empty Dict is returned.
5201
5202 The returned dictionary contains the following entries:
5203 curidx Current index in the stack. When at
5204 top of the stack, set to (length + 1).
5205 Index of bottom of the stack is 1.
5206 items List of items in the stack. Each item
5207 is a dictionary containing the
5208 entries described below.
5209 length Number of entries in the stack.
5210
5211 Each item in the stack is a dictionary with the following
5212 entries:
5213 bufnr buffer number of the current jump
5214 from cursor position before the tag jump.
5215 See |getpos()| for the format of the
5216 returned list.
5217 matchnr current matching tag number. Used when
5218 multiple matching tags are found for a
5219 name.
5220 tagname name of the tag
5221
5222 See |tagstack| for more information about the tag stack.
5223
5224 Can also be used as a |method|: >
5225 GetWinnr()->gettagstack()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005226<
5227 Return type: dict<any>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005228
5229
Christ van Willegence0ef912024-06-20 23:41:59 +02005230gettext({text} [, {package}]) *gettext()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005231 Translate String {text} if possible.
RestorerZ96509102024-07-11 21:14:15 +02005232 This is intended for use in Vim scripts. When generating
5233 message translations the {text} is extracted by `xgettext`,
5234 the translator can add translated messages into the .po file
5235 and Vim will lookup the translation when gettext() is called.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005236 For {text} double quoted strings are preferred, because
RestorerZ96509102024-07-11 21:14:15 +02005237 `xgettext` does not support single quoted escaped text.
5238
Christ van Willegence0ef912024-06-20 23:41:59 +02005239 When the {package} is specified, the translation is looked up
RestorerZ96509102024-07-11 21:14:15 +02005240 for that specific package. This is mainly required for
5241 third-party Vim scripts. You need to specify a path to the
5242 translations with the |bindtextdomain()| function before
5243 using the gettext() function.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005244
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005245 Return type: |String|
5246
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005247
5248getwininfo([{winid}]) *getwininfo()*
5249 Returns information about windows as a |List| with Dictionaries.
5250
5251 If {winid} is given Information about the window with that ID
5252 is returned, as a |List| with one item. If the window does not
5253 exist the result is an empty list.
5254
5255 Without {winid} information about all the windows in all the
5256 tab pages is returned.
5257
5258 Each List item is a |Dictionary| with the following entries:
5259 botline last complete displayed buffer line
5260 bufnr number of buffer in the window
5261 height window height (excluding winbar)
glepnir0a850672024-11-25 19:39:04 +01005262 leftcol first column displayed; only used when
5263 'wrap' is off
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005264 loclist 1 if showing a location list
5265 {only with the +quickfix feature}
5266 quickfix 1 if quickfix or location list window
5267 {only with the +quickfix feature}
5268 terminal 1 if a terminal window
5269 {only with the +terminal feature}
5270 tabnr tab page number
5271 topline first displayed buffer line
5272 variables a reference to the dictionary with
5273 window-local variables
5274 width window width
5275 winbar 1 if the window has a toolbar, 0
5276 otherwise
5277 wincol leftmost screen column of the window;
5278 "col" from |win_screenpos()|
5279 textoff number of columns occupied by any
5280 'foldcolumn', 'signcolumn' and line
5281 number in front of the text
5282 winid |window-ID|
5283 winnr window number
5284 winrow topmost screen line of the window;
5285 "row" from |win_screenpos()|
5286
5287 Can also be used as a |method|: >
5288 GetWinnr()->getwininfo()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005289<
5290 Return type: list<dict<any>>
5291
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005292
5293getwinpos([{timeout}]) *getwinpos()*
5294 The result is a |List| with two numbers, the result of
5295 |getwinposx()| and |getwinposy()| combined:
5296 [x-pos, y-pos]
5297 {timeout} can be used to specify how long to wait in msec for
5298 a response from the terminal. When omitted 100 msec is used.
5299 Use a longer time for a remote terminal.
5300 When using a value less than 10 and no response is received
5301 within that time, a previously reported position is returned,
5302 if available. This can be used to poll for the position and
5303 do some work in the meantime: >
5304 while 1
5305 let res = getwinpos(1)
5306 if res[0] >= 0
5307 break
5308 endif
5309 " Do some work here
5310 endwhile
5311<
5312
5313 Can also be used as a |method|: >
5314 GetTimeout()->getwinpos()
5315<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005316 Return type: list<number>
5317
5318
5319getwinposx() *getwinposx()*
5320 The result is a Number, which is the X coordinate in pixels of
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005321 the left hand side of the GUI Vim window. Also works for an
5322 xterm (uses a timeout of 100 msec).
lilydjwg6e0a18f2024-01-29 20:54:28 +01005323 The result will be -1 if the information is not available
5324 (e.g. on the Wayland backend).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005325 The value can be used with `:winpos`.
5326
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005327 Return type: |Number|
5328
5329
5330getwinposy() *getwinposy()*
5331 The result is a Number, which is the Y coordinate in pixels of
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005332 the top of the GUI Vim window. Also works for an xterm (uses
5333 a timeout of 100 msec).
lilydjwg6e0a18f2024-01-29 20:54:28 +01005334 The result will be -1 if the information is not available
5335 (e.g. on the Wayland backend).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005336 The value can be used with `:winpos`.
5337
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005338 Return type: |Number|
5339
5340
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005341getwinvar({winnr}, {varname} [, {def}]) *getwinvar()*
5342 Like |gettabwinvar()| for the current tabpage.
5343 Examples: >
5344 :let list_is_on = getwinvar(2, '&list')
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005345 :echo "myvar = " .. getwinvar(1, 'myvar')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005346
5347< Can also be used as a |method|: >
5348 GetWinnr()->getwinvar(varname)
5349<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005350 Return type: any, depending on {varname}
5351
5352
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005353glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()*
5354 Expand the file wildcards in {expr}. See |wildcards| for the
5355 use of special characters.
5356
5357 Unless the optional {nosuf} argument is given and is |TRUE|,
5358 the 'suffixes' and 'wildignore' options apply: Names matching
5359 one of the patterns in 'wildignore' will be skipped and
5360 'suffixes' affect the ordering of matches.
5361 'wildignorecase' always applies.
5362
5363 When {list} is present and it is |TRUE| the result is a |List|
5364 with all matching files. The advantage of using a List is,
5365 you also get filenames containing newlines correctly.
5366 Otherwise the result is a String and when there are several
5367 matches, they are separated by <NL> characters.
5368
5369 If the expansion fails, the result is an empty String or List.
5370
5371 You can also use |readdir()| if you need to do complicated
5372 things, such as limiting the number of matches.
5373
5374 A name for a non-existing file is not included. A symbolic
5375 link is only included if it points to an existing file.
5376 However, when the {alllinks} argument is present and it is
5377 |TRUE| then all symbolic links are included.
5378
5379 For most systems backticks can be used to get files names from
5380 any external command. Example: >
5381 :let tagfiles = glob("`find . -name tags -print`")
5382 :let &tags = substitute(tagfiles, "\n", ",", "g")
5383< The result of the program inside the backticks should be one
5384 item per line. Spaces inside an item are allowed.
5385
5386 See |expand()| for expanding special Vim variables. See
5387 |system()| for getting the raw output of an external command.
5388
5389 Can also be used as a |method|: >
5390 GetExpr()->glob()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005391<
5392 Return type: |String| or list<string> or list<any> depending
5393 on {list}
5394
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005395
h-east624bb832024-11-09 18:37:32 +01005396glob2regpat({string}) *glob2regpat()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005397 Convert a file pattern, as used by glob(), into a search
5398 pattern. The result can be used to match with a string that
5399 is a file name. E.g. >
5400 if filename =~ glob2regpat('Make*.mak')
5401< This is equivalent to: >
5402 if filename =~ '^Make.*\.mak$'
5403< When {string} is an empty string the result is "^$", match an
5404 empty string.
5405 Note that the result depends on the system. On MS-Windows
5406 a backslash usually means a path separator.
5407
5408 Can also be used as a |method|: >
5409 GetExpr()->glob2regpat()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005410<
5411 Return type: |String|
5412
5413 *globpath()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005414globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
5415 Perform glob() for String {expr} on all directories in {path}
5416 and concatenate the results. Example: >
5417 :echo globpath(&rtp, "syntax/c.vim")
5418<
5419 {path} is a comma-separated list of directory names. Each
5420 directory name is prepended to {expr} and expanded like with
5421 |glob()|. A path separator is inserted when needed.
5422 To add a comma inside a directory name escape it with a
5423 backslash. Note that on MS-Windows a directory may have a
5424 trailing backslash, remove it if you put a comma after it.
5425 If the expansion fails for one of the directories, there is no
5426 error message.
5427
5428 Unless the optional {nosuf} argument is given and is |TRUE|,
5429 the 'suffixes' and 'wildignore' options apply: Names matching
5430 one of the patterns in 'wildignore' will be skipped and
5431 'suffixes' affect the ordering of matches.
5432
5433 When {list} is present and it is |TRUE| the result is a |List|
5434 with all matching files. The advantage of using a List is, you
5435 also get filenames containing newlines correctly. Otherwise
5436 the result is a String and when there are several matches,
5437 they are separated by <NL> characters. Example: >
5438 :echo globpath(&rtp, "syntax/c.vim", 0, 1)
5439<
5440 {alllinks} is used as with |glob()|.
5441
5442 The "**" item can be used to search in a directory tree.
5443 For example, to find all "README.txt" files in the directories
5444 in 'runtimepath' and below: >
5445 :echo globpath(&rtp, "**/README.txt")
5446< Upwards search and limiting the depth of "**" is not
5447 supported, thus using 'path' will not always work properly.
5448
5449 Can also be used as a |method|, the base is passed as the
5450 second argument: >
5451 GetExpr()->globpath(&rtp)
5452<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005453 Return type: |String| or list<string> or list<any> depending
5454 on {list}
5455
5456
5457has({feature} [, {check}]) *has()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005458 When {check} is omitted or is zero: The result is a Number,
5459 which is 1 if the feature {feature} is supported, zero
5460 otherwise. The {feature} argument is a string, case is
5461 ignored. See |feature-list| below.
5462
5463 When {check} is present and not zero: The result is a Number,
5464 which is 1 if the feature {feature} could ever be supported,
5465 zero otherwise. This is useful to check for a typo in
5466 {feature} and to detect dead code. Keep in mind that an older
5467 Vim version will not know about a feature added later and
5468 features that have been abandoned will not be known by the
5469 current Vim version.
5470
5471 Also see |exists()| and |exists_compiled()|.
5472
5473 Note that to skip code that has a syntax error when the
5474 feature is not available, Vim may skip the rest of the line
5475 and miss a following `endif`. Therefore put the `endif` on a
5476 separate line: >
5477 if has('feature')
5478 let x = this->breaks->without->the->feature
5479 endif
5480< If the `endif` would be moved to the second line as "| endif" it
5481 would not be found.
5482
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005483 Return type: |Number|
5484
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005485
5486has_key({dict}, {key}) *has_key()*
5487 The result is a Number, which is TRUE if |Dictionary| {dict}
Bram Moolenaare8008642022-08-19 17:15:35 +01005488 has an entry with key {key}. FALSE otherwise.
5489 The {key} argument is a string. In |Vim9| script a number is
5490 also accepted (and converted to a string) but no other types.
5491 In legacy script the usual automatic conversion to string is
5492 done.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005493
5494 Can also be used as a |method|: >
5495 mydict->has_key(key)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005496<
5497 Return type: |Number|
5498
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005499
5500haslocaldir([{winnr} [, {tabnr}]]) *haslocaldir()*
5501 The result is a Number:
5502 1 when the window has set a local directory via |:lcd|
5503 2 when the tab-page has set a local directory via |:tcd|
5504 0 otherwise.
5505
5506 Without arguments use the current window.
5507 With {winnr} use this window in the current tab page.
5508 With {winnr} and {tabnr} use the window in the specified tab
5509 page.
5510 {winnr} can be the window number or the |window-ID|.
5511 If {winnr} is -1 it is ignored and only the tabpage is used.
5512 Return 0 if the arguments are invalid.
5513 Examples: >
5514 if haslocaldir() == 1
5515 " window local directory case
5516 elseif haslocaldir() == 2
5517 " tab-local directory case
5518 else
5519 " global directory case
5520 endif
5521
5522 " current window
5523 :echo haslocaldir()
5524 :echo haslocaldir(0)
5525 :echo haslocaldir(0, 0)
5526 " window n in current tab page
5527 :echo haslocaldir(n)
5528 :echo haslocaldir(n, 0)
5529 " window n in tab page m
5530 :echo haslocaldir(n, m)
5531 " tab page m
5532 :echo haslocaldir(-1, m)
5533<
5534 Can also be used as a |method|: >
5535 GetWinnr()->haslocaldir()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005536<
5537 Return type: |Number|
5538
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005539
5540hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()*
5541 The result is a Number, which is TRUE if there is a mapping
5542 that contains {what} in somewhere in the rhs (what it is
5543 mapped to) and this mapping exists in one of the modes
5544 indicated by {mode}.
5545 The arguments {what} and {mode} are strings.
5546 When {abbr} is there and it is |TRUE| use abbreviations
5547 instead of mappings. Don't forget to specify Insert and/or
5548 Command-line mode.
5549 Both the global mappings and the mappings local to the current
5550 buffer are checked for a match.
5551 If no matching mapping is found FALSE is returned.
5552 The following characters are recognized in {mode}:
5553 n Normal mode
5554 v Visual and Select mode
5555 x Visual mode
5556 s Select mode
5557 o Operator-pending mode
5558 i Insert mode
5559 l Language-Argument ("r", "f", "t", etc.)
5560 c Command-line mode
5561 When {mode} is omitted, "nvo" is used.
5562
5563 This function is useful to check if a mapping already exists
5564 to a function in a Vim script. Example: >
5565 :if !hasmapto('\ABCdoit')
5566 : map <Leader>d \ABCdoit
5567 :endif
5568< This installs the mapping to "\ABCdoit" only if there isn't
5569 already a mapping to "\ABCdoit".
5570
5571 Can also be used as a |method|: >
5572 GetRHS()->hasmapto()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005573<
5574 Return type: |Number|
5575
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005576
5577histadd({history}, {item}) *histadd()*
5578 Add the String {item} to the history {history} which can be
5579 one of: *hist-names*
5580 "cmd" or ":" command line history
5581 "search" or "/" search pattern history
5582 "expr" or "=" typed expression history
5583 "input" or "@" input line history
5584 "debug" or ">" debug command history
5585 empty the current or last used history
5586 The {history} string does not need to be the whole name, one
5587 character is sufficient.
5588 If {item} does already exist in the history, it will be
5589 shifted to become the newest entry.
5590 The result is a Number: TRUE if the operation was successful,
5591 otherwise FALSE is returned.
5592
5593 Example: >
5594 :call histadd("input", strftime("%Y %b %d"))
5595 :let date=input("Enter date: ")
5596< This function is not available in the |sandbox|.
5597
5598 Can also be used as a |method|, the base is passed as the
5599 second argument: >
5600 GetHistory()->histadd('search')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005601<
5602 Return type: |Number|
5603
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005604
5605histdel({history} [, {item}]) *histdel()*
5606 Clear {history}, i.e. delete all its entries. See |hist-names|
5607 for the possible values of {history}.
5608
5609 If the parameter {item} evaluates to a String, it is used as a
5610 regular expression. All entries matching that expression will
5611 be removed from the history (if there are any).
5612 Upper/lowercase must match, unless "\c" is used |/\c|.
5613 If {item} evaluates to a Number, it will be interpreted as
5614 an index, see |:history-indexing|. The respective entry will
5615 be removed if it exists.
5616
5617 The result is TRUE for a successful operation, otherwise FALSE
5618 is returned.
5619
5620 Examples:
5621 Clear expression register history: >
5622 :call histdel("expr")
5623<
5624 Remove all entries starting with "*" from the search history: >
5625 :call histdel("/", '^\*')
5626<
5627 The following three are equivalent: >
5628 :call histdel("search", histnr("search"))
5629 :call histdel("search", -1)
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005630 :call histdel("search", '^' .. histget("search", -1) .. '$')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005631<
5632 To delete the last search pattern and use the last-but-one for
5633 the "n" command and 'hlsearch': >
5634 :call histdel("search", -1)
5635 :let @/ = histget("search", -1)
5636<
5637 Can also be used as a |method|: >
5638 GetHistory()->histdel()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005639<
5640 Return type: |Number|
5641
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005642
5643histget({history} [, {index}]) *histget()*
5644 The result is a String, the entry with Number {index} from
5645 {history}. See |hist-names| for the possible values of
5646 {history}, and |:history-indexing| for {index}. If there is
5647 no such entry, an empty String is returned. When {index} is
5648 omitted, the most recent item from the history is used.
5649
5650 Examples:
5651 Redo the second last search from history. >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005652 :execute '/' .. histget("search", -2)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005653
5654< Define an Ex command ":H {num}" that supports re-execution of
5655 the {num}th entry from the output of |:history|. >
5656 :command -nargs=1 H execute histget("cmd", 0+<args>)
5657<
5658 Can also be used as a |method|: >
5659 GetHistory()->histget()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005660<
5661 Return type: |String|
5662
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005663
5664histnr({history}) *histnr()*
5665 The result is the Number of the current entry in {history}.
5666 See |hist-names| for the possible values of {history}.
5667 If an error occurred, -1 is returned.
5668
5669 Example: >
5670 :let inp_index = histnr("expr")
5671
5672< Can also be used as a |method|: >
5673 GetHistory()->histnr()
5674<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005675 Return type: |Number|
5676
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005677hlexists({name}) *hlexists()*
5678 The result is a Number, which is TRUE if a highlight group
5679 called {name} exists. This is when the group has been
5680 defined in some way. Not necessarily when highlighting has
5681 been defined for it, it may also have been used for a syntax
5682 item.
5683 *highlight_exists()*
5684 Obsolete name: highlight_exists().
5685
5686 Can also be used as a |method|: >
5687 GetName()->hlexists()
5688<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005689 Return type: |Number|
5690
5691
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005692hlget([{name} [, {resolve}]]) *hlget()*
5693 Returns a List of all the highlight group attributes. If the
5694 optional {name} is specified, then returns a List with only
5695 the attributes of the specified highlight group. Returns an
5696 empty List if the highlight group {name} is not present.
5697
5698 If the optional {resolve} argument is set to v:true and the
5699 highlight group {name} is linked to another group, then the
5700 link is resolved recursively and the attributes of the
5701 resolved highlight group are returned.
5702
5703 Each entry in the returned List is a Dictionary with the
5704 following items:
5705 cleared boolean flag, set to v:true if the highlight
5706 group attributes are cleared or not yet
5707 specified. See |highlight-clear|.
5708 cterm cterm attributes. See |highlight-cterm|.
5709 ctermbg cterm background color.
5710 See |highlight-ctermbg|.
5711 ctermfg cterm foreground color.
5712 See |highlight-ctermfg|.
5713 ctermul cterm underline color. See |highlight-ctermul|.
5714 default boolean flag, set to v:true if the highlight
5715 group link is a default link. See
5716 |highlight-default|.
5717 font highlight group font. See |highlight-font|.
5718 gui gui attributes. See |highlight-gui|.
5719 guibg gui background color. See |highlight-guibg|.
5720 guifg gui foreground color. See |highlight-guifg|.
5721 guisp gui special color. See |highlight-guisp|.
5722 id highlight group ID.
5723 linksto linked highlight group name.
5724 See |:highlight-link|.
5725 name highlight group name. See |group-name|.
5726 start start terminal keycode. See |highlight-start|.
5727 stop stop terminal keycode. See |highlight-stop|.
5728 term term attributes. See |highlight-term|.
5729
5730 The 'term', 'cterm' and 'gui' items in the above Dictionary
5731 have a dictionary value with the following optional boolean
5732 items: 'bold', 'standout', 'underline', 'undercurl', 'italic',
5733 'reverse', 'inverse' and 'strikethrough'.
5734
5735 Example(s): >
5736 :echo hlget()
5737 :echo hlget('ModeMsg')
5738 :echo hlget('Number', v:true)
5739<
5740 Can also be used as a |method|: >
5741 GetName()->hlget()
5742<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005743 Return type: list<dict<any>>
5744
5745
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005746hlset({list}) *hlset()*
5747 Creates or modifies the attributes of a List of highlight
5748 groups. Each item in {list} is a dictionary containing the
5749 attributes of a highlight group. See |hlget()| for the list of
5750 supported items in this dictionary.
5751
5752 In addition to the items described in |hlget()|, the following
5753 additional items are supported in the dictionary:
5754
5755 force boolean flag to force the creation of
5756 a link for an existing highlight group
5757 with attributes.
5758
5759 The highlight group is identified using the 'name' item and
5760 the 'id' item (if supplied) is ignored. If a highlight group
5761 with a specified name doesn't exist, then it is created.
5762 Otherwise the attributes of an existing highlight group are
5763 modified.
5764
5765 If an empty dictionary value is used for the 'term' or 'cterm'
5766 or 'gui' entries, then the corresponding attributes are
5767 cleared. If the 'cleared' item is set to v:true, then all the
5768 attributes of the highlight group are cleared.
5769
5770 The 'linksto' item can be used to link a highlight group to
5771 another highlight group. See |:highlight-link|.
5772
5773 Returns zero for success, -1 for failure.
5774
5775 Example(s): >
5776 " add bold attribute to the Visual highlight group
5777 :call hlset([#{name: 'Visual',
5778 \ term: #{reverse: 1 , bold: 1}}])
5779 :call hlset([#{name: 'Type', guifg: 'DarkGreen'}])
5780 :let l = hlget()
5781 :call hlset(l)
5782 " clear the Search highlight group
5783 :call hlset([#{name: 'Search', cleared: v:true}])
5784 " clear the 'term' attributes for a highlight group
5785 :call hlset([#{name: 'Title', term: {}}])
5786 " create the MyHlg group linking it to DiffAdd
5787 :call hlset([#{name: 'MyHlg', linksto: 'DiffAdd'}])
5788 " remove the MyHlg group link
5789 :call hlset([#{name: 'MyHlg', linksto: 'NONE'}])
5790 " clear the attributes and a link
5791 :call hlset([#{name: 'MyHlg', cleared: v:true,
5792 \ linksto: 'NONE'}])
5793<
5794 Can also be used as a |method|: >
5795 GetAttrList()->hlset()
5796<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005797 Return type: |Number|
5798
5799hlID({name}) *hlID()*
5800 The result is a Number, which is the ID of the highlight group
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005801 with name {name}. When the highlight group doesn't exist,
5802 zero is returned.
5803 This can be used to retrieve information about the highlight
5804 group. For example, to get the background color of the
5805 "Comment" group: >
5806 :echo synIDattr(synIDtrans(hlID("Comment")), "bg")
5807< *highlightID()*
5808 Obsolete name: highlightID().
5809
5810 Can also be used as a |method|: >
5811 GetName()->hlID()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005812<
5813 Return type: |Number|
5814
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005815
5816hostname() *hostname()*
5817 The result is a String, which is the name of the machine on
5818 which Vim is currently running. Machine names greater than
5819 256 characters long are truncated.
5820
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005821 Return type: |String|
5822
5823
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005824iconv({string}, {from}, {to}) *iconv()*
5825 The result is a String, which is the text {string} converted
5826 from encoding {from} to encoding {to}.
5827 When the conversion completely fails an empty string is
5828 returned. When some characters could not be converted they
5829 are replaced with "?".
5830 The encoding names are whatever the iconv() library function
5831 can accept, see ":!man 3 iconv".
5832 Most conversions require Vim to be compiled with the |+iconv|
5833 feature. Otherwise only UTF-8 to latin1 conversion and back
5834 can be done.
5835 This can be used to display messages with special characters,
5836 no matter what 'encoding' is set to. Write the message in
5837 UTF-8 and use: >
5838 echo iconv(utf8_str, "utf-8", &enc)
5839< Note that Vim uses UTF-8 for all Unicode encodings, conversion
5840 from/to UCS-2 is automatically changed to use UTF-8. You
5841 cannot use UCS-2 in a string anyway, because of the NUL bytes.
5842
5843 Can also be used as a |method|: >
5844 GetText()->iconv('latin1', 'utf-8')
5845<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005846 Return type: |String|
5847
5848
h-east624bb832024-11-09 18:37:32 +01005849id({item}) *id()*
Ernie Raelc8e158b2024-07-09 18:39:52 +02005850 The result is a unique String associated with the {item} and
5851 not with the {item}'s contents. It is only valid while the
5852 {item} exists and is referenced. It is valid only in the
5853 instance of vim that produces the result. The whole idea is
5854 that `id({item})` does not change if the contents of {item}
5855 changes. This is useful as a `key` for creating an identity
5856 dictionary, rather than one based on equals.
5857
5858 This operation does not reference {item} and there is no
5859 function to convert the `id` to the {item}. It may be useful to
5860 have a map of `id` to {item}. The following >
5861 var referenceMap: dict<any>
5862 var id = item->id()
5863 referenceMap[id] = item
5864< prevents {item} from being garbage collected and provides a
5865 way to get the {item} from the `id`.
5866
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01005867 {item} may be a List, Tuple, Dictionary, Object, Job, Channel
5868 or Blob. If the item is not a permitted type, or it is a null
Ernie Raelc8e158b2024-07-09 18:39:52 +02005869 value, then an empty String is returned.
5870
5871 Can also be used as a |method|: >
5872 GetItem()->id()
5873<
5874 Return type: |String|
5875
5876
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005877indent({lnum}) *indent()*
5878 The result is a Number, which is indent of line {lnum} in the
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005879 current buffer. The indent is counted in spaces, the value
5880 of 'tabstop' is relevant. {lnum} is used just like in
5881 |getline()|.
5882 When {lnum} is invalid -1 is returned. In |Vim9| script an
5883 error is given.
5884
5885 Can also be used as a |method|: >
5886 GetLnum()->indent()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005887<
5888 Return type: |Number|
5889
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005890
5891index({object}, {expr} [, {start} [, {ic}]]) *index()*
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01005892 Find {expr} in {object} and return its index. See
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01005893 |indexof()| for using a lambda to select the item.
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01005894
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01005895 If {object} is a |List| or a |Tuple| return the lowest index
5896 where the item has a value equal to {expr}. There is no
5897 automatic conversion, so the String "4" is different from the
5898 Number 4. And the number 4 is different from the Float 4.0.
5899 The value of 'ignorecase' is not used here, case matters as
5900 indicated by the {ic} argument.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005901
5902 If {object} is |Blob| return the lowest index where the byte
5903 value is equal to {expr}.
5904
5905 If {start} is given then start looking at the item with index
5906 {start} (may be negative for an item relative to the end).
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01005907
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005908 When {ic} is given and it is |TRUE|, ignore case. Otherwise
5909 case must match.
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01005910
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005911 -1 is returned when {expr} is not found in {object}.
5912 Example: >
5913 :let idx = index(words, "the")
5914 :if index(numbers, 123) >= 0
5915
5916< Can also be used as a |method|: >
5917 GetObject()->index(what)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005918<
5919 Return type: |Number|
5920
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005921
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01005922indexof({object}, {expr} [, {opts}]) *indexof()*
5923 Returns the index of an item in {object} where {expr} is
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01005924 v:true. {object} must be a |List|, a |Tuple| or a |Blob|.
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01005925
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01005926 If {object} is a |List| or a |Tuple|, evaluate {expr} for each
Christ van Willegen92e109f2025-03-24 20:12:37 +01005927 item in the List or Tuple until the expression is v:true
5928 and return the index of this item.
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01005929
5930 If {object} is a |Blob| evaluate {expr} for each byte in the
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01005931 Blob until the expression is v:true and return the index of
5932 this byte.
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01005933
5934 {expr} must be a |string| or |Funcref|.
5935
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01005936 If {expr} is a |string|: If {object} is a |List| or a |Tuple|,
5937 inside {expr} |v:key| has the index of the current List or
5938 Tuple item and |v:val| has the value of the item. If {object}
5939 is a |Blob|, inside {expr} |v:key| has the index of the
5940 current byte and |v:val| has the byte value.
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01005941
5942 If {expr} is a |Funcref| it must take two arguments:
5943 1. the key or the index of the current item.
5944 2. the value of the current item.
5945 The function must return |TRUE| if the item is found and the
5946 search should stop.
5947
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01005948 The optional argument {opts} is a Dict and supports the
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01005949 following items:
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01005950 startidx start evaluating {expr} at the item with this
5951 index; may be negative for an item relative to
5952 the end
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01005953 Returns -1 when {expr} evaluates to v:false for all the items.
5954 Example: >
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01005955 :let l = [#{n: 10}, #{n: 20}, #{n: 30}]
5956 :echo indexof(l, "v:val.n == 20")
5957 :echo indexof(l, {i, v -> v.n == 30})
5958 :echo indexof(l, "v:val.n == 20", #{startidx: 1})
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01005959
5960< Can also be used as a |method|: >
5961 mylist->indexof(expr)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02005962<
5963 Return type: |Number|
5964
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01005965
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005966input({prompt} [, {text} [, {completion}]]) *input()*
5967 The result is a String, which is whatever the user typed on
5968 the command-line. The {prompt} argument is either a prompt
5969 string, or a blank string (for no prompt). A '\n' can be used
5970 in the prompt to start a new line.
5971 The highlighting set with |:echohl| is used for the prompt.
5972 The input is entered just like a command-line, with the same
5973 editing commands and mappings. There is a separate history
5974 for lines typed for input().
5975 Example: >
5976 :if input("Coffee or beer? ") == "beer"
5977 : echo "Cheers!"
5978 :endif
5979<
5980 If the optional {text} argument is present and not empty, this
5981 is used for the default reply, as if the user typed this.
5982 Example: >
5983 :let color = input("Color? ", "white")
5984
5985< The optional {completion} argument specifies the type of
5986 completion supported for the input. Without it completion is
5987 not performed. The supported completion types are the same as
5988 that can be supplied to a user-defined command using the
5989 "-complete=" argument. Refer to |:command-completion| for
5990 more information. Example: >
5991 let fname = input("File: ", "", "file")
5992<
5993 NOTE: This function must not be used in a startup file, for
5994 the versions that only run in GUI mode (e.g., the Win32 GUI).
5995 Note: When input() is called from within a mapping it will
5996 consume remaining characters from that mapping, because a
5997 mapping is handled like the characters were typed.
5998 Use |inputsave()| before input() and |inputrestore()|
5999 after input() to avoid that. Another solution is to avoid
6000 that further characters follow in the mapping, e.g., by using
6001 |:execute| or |:normal|.
6002
6003 Example with a mapping: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006004 :nmap \x :call GetFoo()<CR>:exe "/" .. Foo<CR>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006005 :function GetFoo()
6006 : call inputsave()
6007 : let g:Foo = input("enter search pattern: ")
6008 : call inputrestore()
6009 :endfunction
6010
6011< Can also be used as a |method|: >
6012 GetPrompt()->input()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006013<
6014 Return type: |String|
6015
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006016
6017inputdialog({prompt} [, {text} [, {cancelreturn}]]) *inputdialog()*
6018 Like |input()|, but when the GUI is running and text dialogs
6019 are supported, a dialog window pops up to input the text.
6020 Example: >
6021 :let n = inputdialog("value for shiftwidth", shiftwidth())
6022 :if n != ""
6023 : let &sw = n
6024 :endif
6025< When the dialog is cancelled {cancelreturn} is returned. When
6026 omitted an empty string is returned.
6027 Hitting <Enter> works like pressing the OK button. Hitting
6028 <Esc> works like pressing the Cancel button.
6029 NOTE: Command-line completion is not supported.
6030
6031 Can also be used as a |method|: >
6032 GetPrompt()->inputdialog()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006033<
6034 Return type: |String|
6035
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006036
6037inputlist({textlist}) *inputlist()*
6038 {textlist} must be a |List| of strings. This |List| is
6039 displayed, one string per line. The user will be prompted to
6040 enter a number, which is returned.
6041 The user can also select an item by clicking on it with the
6042 mouse, if the mouse is enabled in the command line ('mouse' is
6043 "a" or includes "c"). For the first string 0 is returned.
6044 When clicking above the first item a negative number is
6045 returned. When clicking on the prompt one more than the
6046 length of {textlist} is returned.
6047 Make sure {textlist} has less than 'lines' entries, otherwise
6048 it won't work. It's a good idea to put the entry number at
6049 the start of the string. And put a prompt in the first item.
6050 Example: >
6051 let color = inputlist(['Select color:', '1. red',
6052 \ '2. green', '3. blue'])
6053
6054< Can also be used as a |method|: >
6055 GetChoices()->inputlist()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006056<
6057 Return type: |Number|
6058
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006059
6060inputrestore() *inputrestore()*
6061 Restore typeahead that was saved with a previous |inputsave()|.
6062 Should be called the same number of times inputsave() is
6063 called. Calling it more often is harmless though.
6064 Returns TRUE when there is nothing to restore, FALSE otherwise.
6065
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006066 Return type: |Number|
6067
6068
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006069inputsave() *inputsave()*
6070 Preserve typeahead (also from mappings) and clear it, so that
6071 a following prompt gets input from the user. Should be
6072 followed by a matching inputrestore() after the prompt. Can
6073 be used several times, in which case there must be just as
6074 many inputrestore() calls.
6075 Returns TRUE when out of memory, FALSE otherwise.
6076
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006077 Return type: |Number|
6078
6079
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006080inputsecret({prompt} [, {text}]) *inputsecret()*
6081 This function acts much like the |input()| function with but
6082 two exceptions:
6083 a) the user's response will be displayed as a sequence of
6084 asterisks ("*") thereby keeping the entry secret, and
6085 b) the user's response will not be recorded on the input
6086 |history| stack.
6087 The result is a String, which is whatever the user actually
6088 typed on the command-line in response to the issued prompt.
6089 NOTE: Command-line completion is not supported.
6090
6091 Can also be used as a |method|: >
6092 GetPrompt()->inputsecret()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006093<
6094 Return type: |String|
6095
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006096
6097insert({object}, {item} [, {idx}]) *insert()*
6098 When {object} is a |List| or a |Blob| insert {item} at the start
6099 of it.
6100
6101 If {idx} is specified insert {item} before the item with index
6102 {idx}. If {idx} is zero it goes before the first item, just
6103 like omitting {idx}. A negative {idx} is also possible, see
6104 |list-index|. -1 inserts just before the last item.
6105
6106 Returns the resulting |List| or |Blob|. Examples: >
6107 :let mylist = insert([2, 3, 5], 1)
6108 :call insert(mylist, 4, -1)
6109 :call insert(mylist, 6, len(mylist))
6110< The last example can be done simpler with |add()|.
6111 Note that when {item} is a |List| it is inserted as a single
6112 item. Use |extend()| to concatenate |Lists|.
6113
6114 Can also be used as a |method|: >
6115 mylist->insert(item)
Yegappan Lakshmanancd39b692023-10-02 12:50:45 -07006116<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006117 Return type: |Number|
6118
6119
Yegappan Lakshmanancd39b692023-10-02 12:50:45 -07006120 *instanceof()* *E614* *E616* *E693*
6121instanceof({object}, {class})
6122 The result is a Number, which is |TRUE| when the {object}
Ernie Rael2025af12023-12-12 16:58:00 +01006123 argument is a direct or indirect instance of a |Class|,
6124 |Interface|, or class |:type| alias specified by {class}.
6125 If {class} is varargs, the function returns |TRUE| when
Yegappan Lakshmanancd39b692023-10-02 12:50:45 -07006126 {object} is an instance of any of the specified classes.
LemonBoyafe04662023-08-23 21:08:11 +02006127 Example: >
Ernie Rael2025af12023-12-12 16:58:00 +01006128 instanceof(animal, Dog, Cat)
LemonBoyafe04662023-08-23 21:08:11 +02006129
6130< Can also be used as a |method|: >
6131 myobj->instanceof(mytype)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006132<
6133 Return type: |Number|
LemonBoyafe04662023-08-23 21:08:11 +02006134
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006135interrupt() *interrupt()*
6136 Interrupt script execution. It works more or less like the
6137 user typing CTRL-C, most commands won't execute and control
6138 returns to the user. This is useful to abort execution
6139 from lower down, e.g. in an autocommand. Example: >
6140 :function s:check_typoname(file)
6141 : if fnamemodify(a:file, ':t') == '['
6142 : echomsg 'Maybe typo'
6143 : call interrupt()
6144 : endif
6145 :endfunction
6146 :au BufWritePre * call s:check_typoname(expand('<amatch>'))
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006147<
6148 Return type: void
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006149
6150invert({expr}) *invert()*
6151 Bitwise invert. The argument is converted to a number. A
6152 List, Dict or Float argument causes an error. Example: >
6153 :let bits = invert(bits)
6154< Can also be used as a |method|: >
6155 :let bits = bits->invert()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006156<
6157 Return type: |Number|
6158
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006159
Bram Moolenaar8a3b8052022-06-26 12:21:15 +01006160isabsolutepath({path}) *isabsolutepath()*
LemonBoydca1d402022-04-28 15:26:33 +01006161 The result is a Number, which is |TRUE| when {path} is an
6162 absolute path.
Bram Moolenaar8a3b8052022-06-26 12:21:15 +01006163 On Unix, a path is considered absolute when it starts with '/'.
LemonBoydca1d402022-04-28 15:26:33 +01006164 On MS-Windows, it is considered absolute when it starts with an
6165 optional drive prefix and is followed by a '\' or '/'. UNC paths
6166 are always absolute.
6167 Example: >
6168 echo isabsolutepath('/usr/share/') " 1
6169 echo isabsolutepath('./foobar') " 0
6170 echo isabsolutepath('C:\Windows') " 1
6171 echo isabsolutepath('foobar') " 0
6172 echo isabsolutepath('\\remote\file') " 1
Bram Moolenaar8a3b8052022-06-26 12:21:15 +01006173<
LemonBoydca1d402022-04-28 15:26:33 +01006174 Can also be used as a |method|: >
6175 GetName()->isabsolutepath()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006176<
6177 Return type: |Number|
LemonBoydca1d402022-04-28 15:26:33 +01006178
6179
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006180isdirectory({directory}) *isdirectory()*
6181 The result is a Number, which is |TRUE| when a directory
6182 with the name {directory} exists. If {directory} doesn't
6183 exist, or isn't a directory, the result is |FALSE|. {directory}
6184 is any expression, which is used as a String.
6185
6186 Can also be used as a |method|: >
6187 GetName()->isdirectory()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006188<
6189 Return type: |Number|
6190
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006191
6192isinf({expr}) *isinf()*
6193 Return 1 if {expr} is a positive infinity, or -1 a negative
6194 infinity, otherwise 0. >
6195 :echo isinf(1.0 / 0.0)
6196< 1 >
6197 :echo isinf(-1.0 / 0.0)
6198< -1
6199
6200 Can also be used as a |method|: >
6201 Compute()->isinf()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006202<
6203 Return type: |Number|
6204
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006205
6206islocked({expr}) *islocked()* *E786*
6207 The result is a Number, which is |TRUE| when {expr} is the
6208 name of a locked variable.
6209 The string argument {expr} must be the name of a variable,
6210 |List| item or |Dictionary| entry, not the variable itself!
6211 Example: >
6212 :let alist = [0, ['a', 'b'], 2, 3]
6213 :lockvar 1 alist
6214 :echo islocked('alist') " 1
6215 :echo islocked('alist[1]') " 0
6216
Bram Moolenaar9da17d72022-02-09 21:50:44 +00006217< When {expr} is a variable that does not exist -1 is returned.
6218 If {expr} uses a range, list or dict index that is out of
6219 range or does not exist you get an error message. Use
6220 |exists()| to check for existence.
6221 In Vim9 script it does not work for local function variables.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006222
6223 Can also be used as a |method|: >
6224 GetName()->islocked()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006225<
6226 Return type: |Number|
6227
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006228
6229isnan({expr}) *isnan()*
6230 Return |TRUE| if {expr} is a float with value NaN. >
6231 echo isnan(0.0 / 0.0)
6232< 1
6233
6234 Can also be used as a |method|: >
6235 Compute()->isnan()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006236<
6237 Return type: |Number|
6238
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006239
6240items({dict}) *items()*
6241 Return a |List| with all the key-value pairs of {dict}. Each
6242 |List| item is a list with two items: the key of a {dict}
6243 entry and the value of this entry. The |List| is in arbitrary
6244 order. Also see |keys()| and |values()|.
6245 Example: >
6246 for [key, value] in items(mydict)
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006247 echo key .. ': ' .. value
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006248 endfor
Yegappan Lakshmanan49cdd622023-12-24 11:01:23 +01006249<
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01006250 A |List|, a |Tuple| or a |String| argument is also supported.
6251 In these cases, items() returns a List with the index and the
6252 value at the index.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006253
Yegappan Lakshmanan49cdd622023-12-24 11:01:23 +01006254 Can also be used as a |method|: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006255 mydict->items()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006256<
6257 Return type: list<list<any>> or list<any>
6258
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006259
6260job_ functions are documented here: |job-functions-details|
6261
6262
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01006263join({expr} [, {sep}]) *join()*
6264 Join the items in {expr} together into one String. {expr} can
6265 be a |List| or a |Tuple|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006266 When {sep} is specified it is put in between the items. If
6267 {sep} is omitted a single space is used.
6268 Note that {sep} is not added at the end. You might want to
6269 add it there too: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006270 let lines = join(mylist, "\n") .. "\n"
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01006271< String items are used as-is. |Lists|, |Tuples| and
6272 |Dictionaries| are converted into a string like with
6273 |string()|. The opposite function is |split()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006274
6275 Can also be used as a |method|: >
6276 mylist->join()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006277<
6278 Return type: |String|
6279
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006280
6281js_decode({string}) *js_decode()*
6282 This is similar to |json_decode()| with these differences:
6283 - Object key names do not have to be in quotes.
6284 - Strings can be in single quotes.
6285 - Empty items in an array (between two commas) are allowed and
6286 result in v:none items.
6287
6288 Can also be used as a |method|: >
6289 ReadObject()->js_decode()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006290<
6291 Return type: any, depending on {varname}
6292
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006293
6294js_encode({expr}) *js_encode()*
6295 This is similar to |json_encode()| with these differences:
6296 - Object key names are not in quotes.
6297 - v:none items in an array result in an empty item between
6298 commas.
6299 For example, the Vim object:
6300 [1,v:none,{"one":1},v:none] ~
6301 Will be encoded as:
6302 [1,,{one:1},,] ~
6303 While json_encode() would produce:
6304 [1,null,{"one":1},null] ~
6305 This encoding is valid for JavaScript. It is more efficient
6306 than JSON, especially when using an array with optional items.
6307
6308 Can also be used as a |method|: >
6309 GetObject()->js_encode()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006310<
6311 Return type: |String|
6312
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006313
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00006314json_decode({string}) *json_decode()* *E491*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006315 This parses a JSON formatted string and returns the equivalent
6316 in Vim values. See |json_encode()| for the relation between
6317 JSON and Vim values.
6318 The decoding is permissive:
6319 - A trailing comma in an array and object is ignored, e.g.
6320 "[1, 2, ]" is the same as "[1, 2]".
6321 - Integer keys are accepted in objects, e.g. {1:2} is the
6322 same as {"1":2}.
6323 - More floating point numbers are recognized, e.g. "1." for
6324 "1.0", or "001.2" for "1.2". Special floating point values
6325 "Infinity", "-Infinity" and "NaN" (capitalization ignored)
6326 are accepted.
6327 - Leading zeroes in integer numbers are ignored, e.g. "012"
6328 for "12" or "-012" for "-12".
6329 - Capitalization is ignored in literal names null, true or
6330 false, e.g. "NULL" for "null", "True" for "true".
6331 - Control characters U+0000 through U+001F which are not
6332 escaped in strings are accepted, e.g. " " (tab
6333 character in string) for "\t".
6334 - An empty JSON expression or made of only spaces is accepted
6335 and results in v:none.
6336 - Backslash in an invalid 2-character sequence escape is
6337 ignored, e.g. "\a" is decoded as "a".
6338 - A correct surrogate pair in JSON strings should normally be
6339 a 12 character sequence such as "\uD834\uDD1E", but
6340 json_decode() silently accepts truncated surrogate pairs
6341 such as "\uD834" or "\uD834\u"
6342 *E938*
6343 A duplicate key in an object, valid in rfc7159, is not
6344 accepted by json_decode() as the result must be a valid Vim
6345 type, e.g. this fails: {"a":"b", "a":"c"}
6346
6347 Can also be used as a |method|: >
6348 ReadObject()->json_decode()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006349<
6350 Return type: any, depending on {varname}
6351
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006352
6353json_encode({expr}) *json_encode()*
6354 Encode {expr} as JSON and return this as a string.
6355 The encoding is specified in:
6356 https://tools.ietf.org/html/rfc7159.html
Bram Moolenaara2baa732022-02-04 16:09:54 +00006357 Vim values are converted as follows: *E1161*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006358 |Number| decimal number
6359 |Float| floating point number
6360 Float nan "NaN"
6361 Float inf "Infinity"
6362 Float -inf "-Infinity"
6363 |String| in double quotes (possibly null)
6364 |Funcref| not possible, error
6365 |List| as an array (possibly null); when
6366 used recursively: []
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01006367 |Tuple| as an array (possibly null); when
6368 used recursively: []
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006369 |Dict| as an object (possibly null); when
6370 used recursively: {}
6371 |Blob| as an array of the individual bytes
6372 v:false "false"
6373 v:true "true"
6374 v:none "null"
6375 v:null "null"
6376 Note that NaN and Infinity are passed on as values. This is
6377 missing in the JSON standard, but several implementations do
6378 allow it. If not then you will get an error.
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01006379 If a string contains an illegal character then the replacement
6380 character 0xfffd is used.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006381
6382 Can also be used as a |method|: >
6383 GetObject()->json_encode()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006384<
6385 Return type: |String|
6386
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006387
6388keys({dict}) *keys()*
6389 Return a |List| with all the keys of {dict}. The |List| is in
6390 arbitrary order. Also see |items()| and |values()|.
6391
6392 Can also be used as a |method|: >
6393 mydict->keys()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006394<
6395 Return type: list<string>
6396
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006397
zeertzjqcdc83932022-09-12 13:38:41 +01006398keytrans({string}) *keytrans()*
6399 Turn the internal byte representation of keys into a form that
6400 can be used for |:map|. E.g. >
6401 :let xx = "\<C-Home>"
6402 :echo keytrans(xx)
6403< <C-Home>
6404
6405 Can also be used as a |method|: >
6406 "\<C-Home>"->keytrans()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006407<
6408 Return type: |String|
zeertzjqcdc83932022-09-12 13:38:41 +01006409
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006410
6411len({expr}) *len()* *E701*
6412 The result is a Number, which is the length of the argument.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006413 When {expr} is a String or a Number the length in bytes is
6414 used, as with |strlen()|.
6415 When {expr} is a |List| the number of items in the |List| is
6416 returned.
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01006417 When {expr} is a |Tuple| the number of items in the |Tuple| is
6418 returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006419 When {expr} is a |Blob| the number of bytes is returned.
6420 When {expr} is a |Dictionary| the number of entries in the
6421 |Dictionary| is returned.
mityu7f0bba22024-03-29 10:14:41 +01006422 When {expr} is an |Object|, invokes the len() method in the
6423 object (if present) to get the length (|object-len()|).
6424 Otherwise returns zero.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006425
6426 Can also be used as a |method|: >
6427 mylist->len()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006428<
6429 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006430
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006431
6432 *libcall()* *E364* *E368*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006433libcall({libname}, {funcname}, {argument})
6434 Call function {funcname} in the run-time library {libname}
6435 with single argument {argument}.
6436 This is useful to call functions in a library that you
6437 especially made to be used with Vim. Since only one argument
6438 is possible, calling standard library functions is rather
6439 limited.
6440 The result is the String returned by the function. If the
6441 function returns NULL, this will appear as an empty string ""
6442 to Vim.
6443 If the function returns a number, use libcallnr()!
6444 If {argument} is a number, it is passed to the function as an
6445 int; if {argument} is a string, it is passed as a
6446 null-terminated string.
6447 This function will fail in |restricted-mode|.
6448
6449 libcall() allows you to write your own 'plug-in' extensions to
6450 Vim without having to recompile the program. It is NOT a
6451 means to call system functions! If you try to do so Vim will
6452 very probably crash.
6453
6454 For Win32, the functions you write must be placed in a DLL
6455 and use the normal C calling convention (NOT Pascal which is
6456 used in Windows System DLLs). The function must take exactly
6457 one parameter, either a character pointer or a long integer,
6458 and must return a character pointer or NULL. The character
6459 pointer returned must point to memory that will remain valid
6460 after the function has returned (e.g. in static data in the
6461 DLL). If it points to allocated memory, that memory will
6462 leak away. Using a static buffer in the function should work,
6463 it's then freed when the DLL is unloaded.
6464
6465 WARNING: If the function returns a non-valid pointer, Vim may
6466 crash! This also happens if the function returns a number,
6467 because Vim thinks it's a pointer.
6468 For Win32 systems, {libname} should be the filename of the DLL
6469 without the ".DLL" suffix. A full path is only required if
6470 the DLL is not in the usual places.
6471 For Unix: When compiling your own plugins, remember that the
6472 object code must be compiled as position-independent ('PIC').
6473 {only in Win32 and some Unix versions, when the |+libcall|
6474 feature is present}
6475 Examples: >
6476 :echo libcall("libc.so", "getenv", "HOME")
6477
6478< Can also be used as a |method|, the base is passed as the
6479 third argument: >
6480 GetValue()->libcall("libc.so", "getenv")
6481<
6482 *libcallnr()*
6483libcallnr({libname}, {funcname}, {argument})
6484 Just like |libcall()|, but used for a function that returns an
6485 int instead of a string.
6486 {only in Win32 on some Unix versions, when the |+libcall|
6487 feature is present}
6488 Examples: >
6489 :echo libcallnr("/usr/lib/libc.so", "getpid", "")
6490 :call libcallnr("libc.so", "printf", "Hello World!\n")
6491 :call libcallnr("libc.so", "sleep", 10)
6492<
6493 Can also be used as a |method|, the base is passed as the
6494 third argument: >
6495 GetValue()->libcallnr("libc.so", "printf")
6496<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006497 Return type: |String|
6498
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006499
6500line({expr} [, {winid}]) *line()*
6501 The result is a Number, which is the line number of the file
6502 position given with {expr}. The {expr} argument is a string.
zeertzjq02f3eba2024-06-12 20:45:24 +02006503 See |getpos()| for accepted positions.
6504
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006505 To get the column number use |col()|. To get both use
6506 |getpos()|.
zeertzjq02f3eba2024-06-12 20:45:24 +02006507
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006508 With the optional {winid} argument the values are obtained for
6509 that window instead of the current window.
zeertzjq02f3eba2024-06-12 20:45:24 +02006510
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01006511 Returns 0 for invalid values of {expr} and {winid}.
zeertzjq02f3eba2024-06-12 20:45:24 +02006512
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006513 Examples: >
6514 line(".") line number of the cursor
6515 line(".", winid) idem, in window "winid"
6516 line("'t") line number of mark t
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006517 line("'" .. marker) line number of mark marker
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006518<
6519 To jump to the last known position when opening a file see
6520 |last-position-jump|.
6521
6522 Can also be used as a |method|: >
6523 GetValue()->line()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006524<
6525 Return type: |Number|
6526
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006527
6528line2byte({lnum}) *line2byte()*
6529 Return the byte count from the start of the buffer for line
6530 {lnum}. This includes the end-of-line character, depending on
6531 the 'fileformat' option for the current buffer. The first
6532 line returns 1. 'encoding' matters, 'fileencoding' is ignored.
6533 This can also be used to get the byte count for the line just
6534 below the last line: >
6535 line2byte(line("$") + 1)
6536< This is the buffer size plus one. If 'fileencoding' is empty
6537 it is the file size plus one. {lnum} is used like with
6538 |getline()|. When {lnum} is invalid, or the |+byte_offset|
6539 feature has been disabled at compile time, -1 is returned.
6540 Also see |byte2line()|, |go| and |:goto|.
6541
6542 Can also be used as a |method|: >
6543 GetLnum()->line2byte()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006544<
6545 Return type: |Number|
6546
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006547
6548lispindent({lnum}) *lispindent()*
6549 Get the amount of indent for line {lnum} according the lisp
6550 indenting rules, as with 'lisp'.
6551 The indent is counted in spaces, the value of 'tabstop' is
6552 relevant. {lnum} is used just like in |getline()|.
Bram Moolenaar8e145b82022-05-21 20:17:31 +01006553 When {lnum} is invalid -1 is returned. In |Vim9| script an
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006554 error is given.
6555
6556 Can also be used as a |method|: >
6557 GetLnum()->lispindent()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006558<
6559 Return type: |Number|
6560
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006561
6562list2blob({list}) *list2blob()*
6563 Return a Blob concatenating all the number values in {list}.
6564 Examples: >
6565 list2blob([1, 2, 3, 4]) returns 0z01020304
6566 list2blob([]) returns 0z
6567< Returns an empty Blob on error. If one of the numbers is
6568 negative or more than 255 error *E1239* is given.
6569
6570 |blob2list()| does the opposite.
6571
6572 Can also be used as a |method|: >
6573 GetList()->list2blob()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006574<
6575 Return type: |Blob|
6576
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006577
6578list2str({list} [, {utf8}]) *list2str()*
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006579 Convert each number in {list} to a character string and
6580 concatenates them all. Examples: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006581 list2str([32]) returns " "
6582 list2str([65, 66, 67]) returns "ABC"
6583< The same can be done (slowly) with: >
6584 join(map(list, {nr, val -> nr2char(val)}), '')
6585< |str2list()| does the opposite.
6586
6587 When {utf8} is omitted or zero, the current 'encoding' is used.
6588 When {utf8} is TRUE, always return UTF-8 characters.
6589 With UTF-8 composing characters work as expected: >
6590 list2str([97, 769]) returns "á"
6591<
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01006592 Returns an empty string on error.
6593
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006594 Can also be used as a |method|: >
6595 GetList()->list2str()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006596<
6597 Return type: |String|
6598
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006599
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01006600list2tuple({list}) *list2tuple()*
6601 Create a Tuple from a shallow copy of the list items.
6602 Examples: >
6603 list2tuple([1, 2, 3]) returns (1, 2, 3)
6604< |tuple2list()| does the opposite.
6605
6606 This function doesn't recursively convert all the List items
6607 in {list} to a Tuple. Note that the items are identical
6608 between the list and the tuple, changing an item changes the
6609 contents of both the tuple and the list.
6610
6611 Returns an empty tuple on error.
6612
6613 Can also be used as a |method|: >
6614 GetList()->list2tuple()
6615<
6616 Return type: tuple<{type}> (depending on the given |List|)
6617
6618
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006619listener_add({callback} [, {buf}]) *listener_add()*
6620 Add a callback function that will be invoked when changes have
6621 been made to buffer {buf}.
6622 {buf} refers to a buffer name or number. For the accepted
6623 values, see |bufname()|. When {buf} is omitted the current
6624 buffer is used.
6625 Returns a unique ID that can be passed to |listener_remove()|.
6626
6627 The {callback} is invoked with five arguments:
Bram Moolenaar944697a2022-02-20 19:48:20 +00006628 bufnr the buffer that was changed
6629 start first changed line number
6630 end first line number below the change
6631 added number of lines added, negative if lines were
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006632 deleted
Bram Moolenaar944697a2022-02-20 19:48:20 +00006633 changes a List of items with details about the changes
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006634
6635 Example: >
6636 func Listener(bufnr, start, end, added, changes)
6637 echo 'lines ' .. a:start .. ' until ' .. a:end .. ' changed'
6638 endfunc
6639 call listener_add('Listener', bufnr)
6640
Bram Moolenaar944697a2022-02-20 19:48:20 +00006641< The List cannot be changed. Each item in "changes" is a
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006642 dictionary with these entries:
6643 lnum the first line number of the change
6644 end the first line below the change
6645 added number of lines added; negative if lines were
6646 deleted
6647 col first column in "lnum" that was affected by
6648 the change; one if unknown or the whole line
6649 was affected; this is a byte index, first
6650 character has a value of one.
Bram Moolenaar3c053a12022-10-16 13:11:12 +01006651 When lines are inserted (not when a line is split, e.g. by
6652 typing CR in Insert mode) the values are:
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006653 lnum line above which the new line is added
6654 end equal to "lnum"
6655 added number of lines inserted
6656 col 1
6657 When lines are deleted the values are:
6658 lnum the first deleted line
6659 end the line below the first deleted line, before
6660 the deletion was done
6661 added negative, number of lines deleted
6662 col 1
6663 When lines are changed:
6664 lnum the first changed line
6665 end the line below the last changed line
6666 added 0
6667 col first column with a change or 1
6668
6669 The entries are in the order the changes were made, thus the
6670 most recent change is at the end. The line numbers are valid
6671 when the callback is invoked, but later changes may make them
6672 invalid, thus keeping a copy for later might not work.
6673
6674 The {callback} is invoked just before the screen is updated,
6675 when |listener_flush()| is called or when a change is being
6676 made that changes the line count in a way it causes a line
6677 number in the list of changes to become invalid.
6678
6679 The {callback} is invoked with the text locked, see
6680 |textlock|. If you do need to make changes to the buffer, use
6681 a timer to do this later |timer_start()|.
6682
6683 The {callback} is not invoked when the buffer is first loaded.
6684 Use the |BufReadPost| autocmd event to handle the initial text
6685 of a buffer.
6686 The {callback} is also not invoked when the buffer is
6687 unloaded, use the |BufUnload| autocmd event for that.
6688
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01006689 Returns zero if {callback} or {buf} is invalid.
6690
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006691 Can also be used as a |method|, the base is passed as the
6692 second argument: >
6693 GetBuffer()->listener_add(callback)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006694<
6695 Return type: |Number|
6696
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006697
6698listener_flush([{buf}]) *listener_flush()*
6699 Invoke listener callbacks for buffer {buf}. If there are no
6700 pending changes then no callbacks are invoked.
6701
6702 {buf} refers to a buffer name or number. For the accepted
6703 values, see |bufname()|. When {buf} is omitted the current
6704 buffer is used.
6705
6706 Can also be used as a |method|: >
6707 GetBuffer()->listener_flush()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006708<
6709 Return type: |Number|
6710
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006711
6712listener_remove({id}) *listener_remove()*
6713 Remove a listener previously added with listener_add().
6714 Returns FALSE when {id} could not be found, TRUE when {id} was
6715 removed.
6716
6717 Can also be used as a |method|: >
6718 GetListenerId()->listener_remove()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006719<
6720 Return type: |Number|
6721
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006722
6723localtime() *localtime()*
6724 Return the current time, measured as seconds since 1st Jan
6725 1970. See also |strftime()|, |strptime()| and |getftime()|.
6726
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006727 Return type: |Number|
6728
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006729
6730log({expr}) *log()*
6731 Return the natural logarithm (base e) of {expr} as a |Float|.
6732 {expr} must evaluate to a |Float| or a |Number| in the range
6733 (0, inf].
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01006734 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006735 Examples: >
6736 :echo log(10)
6737< 2.302585 >
6738 :echo log(exp(5))
6739< 5.0
6740
6741 Can also be used as a |method|: >
6742 Compute()->log()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006743<
6744 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006745
6746
6747log10({expr}) *log10()*
6748 Return the logarithm of Float {expr} to base 10 as a |Float|.
6749 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01006750 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006751 Examples: >
6752 :echo log10(1000)
6753< 3.0 >
6754 :echo log10(0.01)
6755< -2.0
6756
6757 Can also be used as a |method|: >
6758 Compute()->log10()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006759<
6760 Return type: |Float|
6761
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006762
6763luaeval({expr} [, {expr}]) *luaeval()*
6764 Evaluate Lua expression {expr} and return its result converted
6765 to Vim data structures. Second {expr} may hold additional
6766 argument accessible as _A inside first {expr}.
6767 Strings are returned as they are.
6768 Boolean objects are converted to numbers.
Bram Moolenaar73e28dc2022-09-17 21:08:33 +01006769 Numbers are converted to |Float| values.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006770 Dictionaries and lists obtained by vim.eval() are returned
6771 as-is.
6772 Other objects are returned as zero without any errors.
6773 See |lua-luaeval| for more details.
6774 Note that in a `:def` function local variables are not visible
6775 to {expr}.
6776
6777 Can also be used as a |method|: >
6778 GetExpr()->luaeval()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006779<
6780 Return type: any, depending on {expr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006781
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006782 {only available when compiled with the |+lua| feature}
6783
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006784
6785map({expr1}, {expr2}) *map()*
6786 {expr1} must be a |List|, |String|, |Blob| or |Dictionary|.
Bram Moolenaar944697a2022-02-20 19:48:20 +00006787 When {expr1} is a |List| or |Dictionary|, replace each
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006788 item in {expr1} with the result of evaluating {expr2}.
6789 For a |Blob| each byte is replaced.
6790 For a |String|, each character, including composing
6791 characters, is replaced.
6792 If the item type changes you may want to use |mapnew()| to
6793 create a new List or Dictionary. This is required when using
6794 Vim9 script.
6795
6796 {expr2} must be a |String| or |Funcref|.
6797
6798 If {expr2} is a |String|, inside {expr2} |v:val| has the value
6799 of the current item. For a |Dictionary| |v:key| has the key
6800 of the current item and for a |List| |v:key| has the index of
6801 the current item. For a |Blob| |v:key| has the index of the
6802 current byte. For a |String| |v:key| has the index of the
6803 current character.
6804 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006805 :call map(mylist, '"> " .. v:val .. " <"')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006806< This puts "> " before and " <" after each item in "mylist".
6807
6808 Note that {expr2} is the result of an expression and is then
6809 used as an expression again. Often it is good to use a
6810 |literal-string| to avoid having to double backslashes. You
6811 still have to double ' quotes
6812
6813 If {expr2} is a |Funcref| it is called with two arguments:
6814 1. The key or the index of the current item.
6815 2. the value of the current item.
Bram Moolenaarb59ae592022-11-23 23:46:31 +00006816 With a legacy script lambda you don't get an error if it only
6817 accepts one argument, but with a Vim9 lambda you get "E1106:
6818 One argument too many", the number of arguments must match.
6819
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006820 The function must return the new value of the item. Example
6821 that changes each value by "key-value": >
6822 func KeyValue(key, val)
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006823 return a:key .. '-' .. a:val
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006824 endfunc
6825 call map(myDict, function('KeyValue'))
6826< It is shorter when using a |lambda|: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006827 call map(myDict, {key, val -> key .. '-' .. val})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006828< If you do not use "val" you can leave it out: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006829 call map(myDict, {key -> 'item: ' .. key})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006830< If you do not use "key" you can use a short name: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006831 call map(myDict, {_, val -> 'item: ' .. val})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006832<
6833 The operation is done in-place for a |List| and |Dictionary|.
6834 If you want it to remain unmodified make a copy first: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006835 :let tlist = map(copy(mylist), ' v:val .. "\t"')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006836
6837< Returns {expr1}, the |List| or |Dictionary| that was filtered,
6838 or a new |Blob| or |String|.
6839 When an error is encountered while evaluating {expr2} no
6840 further items in {expr1} are processed.
6841 When {expr2} is a Funcref errors inside a function are ignored,
6842 unless it was defined with the "abort" flag.
6843
6844 Can also be used as a |method|: >
6845 mylist->map(expr2)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006846<
6847 Return type: |String|, |Blob|, list<{type}> or dict<{type}>
6848 depending on {expr1}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006849
6850
6851maparg({name} [, {mode} [, {abbr} [, {dict}]]]) *maparg()*
6852 When {dict} is omitted or zero: Return the rhs of mapping
6853 {name} in mode {mode}. The returned String has special
6854 characters translated like in the output of the ":map" command
Ernie Rael09661202022-04-25 14:40:44 +01006855 listing. When {dict} is TRUE a dictionary is returned, see
6856 below. To get a list of all mappings see |maplist()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006857
6858 When there is no mapping for {name}, an empty String is
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01006859 returned if {dict} is FALSE, otherwise returns an empty Dict.
6860 When the mapping for {name} is empty, then "<Nop>" is
6861 returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006862
6863 The {name} can have special key names, like in the ":map"
6864 command.
6865
6866 {mode} can be one of these strings:
6867 "n" Normal
6868 "v" Visual (including Select)
6869 "o" Operator-pending
6870 "i" Insert
6871 "c" Cmd-line
6872 "s" Select
6873 "x" Visual
6874 "l" langmap |language-mapping|
6875 "t" Terminal-Job
6876 "" Normal, Visual and Operator-pending
6877 When {mode} is omitted, the modes for "" are used.
6878
6879 When {abbr} is there and it is |TRUE| use abbreviations
6880 instead of mappings.
6881
6882 When {dict} is there and it is |TRUE| return a dictionary
6883 containing all the information of the mapping with the
Ernie Rael659c2402022-04-24 18:40:28 +01006884 following items: *mapping-dict*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006885 "lhs" The {lhs} of the mapping as it would be typed
6886 "lhsraw" The {lhs} of the mapping as raw bytes
6887 "lhsrawalt" The {lhs} of the mapping as raw bytes, alternate
6888 form, only present when it differs from "lhsraw"
6889 "rhs" The {rhs} of the mapping as typed.
6890 "silent" 1 for a |:map-silent| mapping, else 0.
6891 "noremap" 1 if the {rhs} of the mapping is not remappable.
6892 "script" 1 if mapping was defined with <script>.
6893 "expr" 1 for an expression mapping (|:map-<expr>|).
6894 "buffer" 1 for a buffer local mapping (|:map-local|).
6895 "mode" Modes for which the mapping is defined. In
6896 addition to the modes mentioned above, these
6897 characters will be used:
6898 " " Normal, Visual and Operator-pending
6899 "!" Insert and Commandline mode
6900 (|mapmode-ic|)
6901 "sid" The script local ID, used for <sid> mappings
Bram Moolenaar71badf92023-04-22 22:40:14 +01006902 (|<SID>|). Negative for special contexts.
Bram Moolenaara9528b32022-01-18 20:51:35 +00006903 "scriptversion" The version of the script. 999999 for
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01006904 |Vim9| script.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006905 "lnum" The line number in "sid", zero if unknown.
6906 "nowait" Do not wait for other, longer mappings.
6907 (|:map-<nowait>|).
Bram Moolenaar921bde82022-05-09 19:50:35 +01006908 "abbr" True if this is an abbreviation |abbreviations|.
Ernie Raeld8f5f762022-05-10 17:50:39 +01006909 "mode_bits" Vim's internal binary representation of "mode".
6910 |mapset()| ignores this; only "mode" is used.
6911 See |maplist()| for usage examples. The values
6912 are from src/vim.h and may change in the future.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006913
6914 The dictionary can be used to restore a mapping with
6915 |mapset()|.
6916
6917 The mappings local to the current buffer are checked first,
6918 then the global mappings.
6919 This function can be used to map a key even when it's already
6920 mapped, and have it do the original mapping too. Sketch: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006921 exe 'nnoremap <Tab> ==' .. maparg('<Tab>', 'n')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006922
6923< Can also be used as a |method|: >
6924 GetKey()->maparg('n')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006925<
6926 Return type: |String| or dict<any> depending on {dict}
6927
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006928
6929mapcheck({name} [, {mode} [, {abbr}]]) *mapcheck()*
6930 Check if there is a mapping that matches with {name} in mode
6931 {mode}. See |maparg()| for {mode} and special names in
6932 {name}.
6933 When {abbr} is there and it is |TRUE| use abbreviations
6934 instead of mappings.
6935 A match happens with a mapping that starts with {name} and
6936 with a mapping which is equal to the start of {name}.
6937
6938 matches mapping "a" "ab" "abc" ~
6939 mapcheck("a") yes yes yes
6940 mapcheck("abc") yes yes yes
6941 mapcheck("ax") yes no no
6942 mapcheck("b") no no no
6943
6944 The difference with maparg() is that mapcheck() finds a
6945 mapping that matches with {name}, while maparg() only finds a
6946 mapping for {name} exactly.
6947 When there is no mapping that starts with {name}, an empty
6948 String is returned. If there is one, the RHS of that mapping
6949 is returned. If there are several mappings that start with
6950 {name}, the RHS of one of them is returned. This will be
6951 "<Nop>" if the RHS is empty.
6952 The mappings local to the current buffer are checked first,
6953 then the global mappings.
6954 This function can be used to check if a mapping can be added
6955 without being ambiguous. Example: >
6956 :if mapcheck("_vv") == ""
6957 : map _vv :set guifont=7x13<CR>
6958 :endif
6959< This avoids adding the "_vv" mapping when there already is a
6960 mapping for "_v" or for "_vvv".
6961
6962 Can also be used as a |method|: >
6963 GetKey()->mapcheck('n')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02006964<
6965 Return type: |String|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006966
6967
Ernie Rael09661202022-04-25 14:40:44 +01006968maplist([{abbr}]) *maplist()*
6969 Returns a |List| of all mappings. Each List item is a |Dict|,
6970 the same as what is returned by |maparg()|, see
6971 |mapping-dict|. When {abbr} is there and it is |TRUE| use
6972 abbreviations instead of mappings.
6973
6974 Example to show all mappings with 'MultiMatch' in rhs: >
6975 vim9script
6976 echo maplist()->filter(
6977 (_, m) => match(m.rhs, 'MultiMatch') >= 0)
Ernie Raeld8f5f762022-05-10 17:50:39 +01006978< It can be tricky to find mappings for particular |:map-modes|.
6979 |mapping-dict|'s "mode_bits" can simplify this. For example,
6980 the mode_bits for Normal, Insert or Command-line modes are
6981 0x19. To find all the mappings available in those modes you
6982 can do: >
6983 vim9script
6984 var saved_maps = []
6985 for m in maplist()
6986 if and(m.mode_bits, 0x19) != 0
6987 saved_maps->add(m)
6988 endif
6989 endfor
6990 echo saved_maps->mapnew((_, m) => m.lhs)
6991< The values of the mode_bits are defined in Vim's src/vim.h
6992 file and they can be discovered at runtime using
6993 |:map-commands| and "maplist()". Example: >
6994 vim9script
6995 omap xyzzy <Nop>
6996 var op_bit = maplist()->filter(
6997 (_, m) => m.lhs == 'xyzzy')[0].mode_bits
6998 ounmap xyzzy
6999 echo printf("Operator-pending mode bit: 0x%x", op_bit)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007000<
7001 Return type: list<dict<any>>
Ernie Rael09661202022-04-25 14:40:44 +01007002
7003
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007004mapnew({expr1}, {expr2}) *mapnew()*
7005 Like |map()| but instead of replacing items in {expr1} a new
7006 List or Dictionary is created and returned. {expr1} remains
7007 unchanged. Items can still be changed by {expr2}, if you
7008 don't want that use |deepcopy()| first.
7009
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007010 Return type: |String|, |Blob|, list<{type}> or dict<{type}>
7011 depending on {expr1}
7012
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007013
7014mapset({mode}, {abbr}, {dict}) *mapset()*
Ernie Rael51d04d12022-05-04 15:40:22 +01007015mapset({dict})
7016 Restore a mapping from a dictionary, possibly returned by
7017 |maparg()| or |maplist()|. A buffer mapping, when dict.buffer
7018 is true, is set on the current buffer; it is up to the caller
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01007019 to ensure that the intended buffer is the current buffer. This
Ernie Rael51d04d12022-05-04 15:40:22 +01007020 feature allows copying mappings from one buffer to another.
7021 The dict.mode value may restore a single mapping that covers
7022 more than one mode, like with mode values of '!', ' ', 'nox',
7023 or 'v'. *E1276*
7024
7025 In the first form, {mode} and {abbr} should be the same as
7026 for the call to |maparg()|. *E460*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007027 {mode} is used to define the mode in which the mapping is set,
7028 not the "mode" entry in {dict}.
7029 Example for saving and restoring a mapping: >
7030 let save_map = maparg('K', 'n', 0, 1)
7031 nnoremap K somethingelse
7032 ...
7033 call mapset('n', 0, save_map)
7034< Note that if you are going to replace a map in several modes,
Ernie Rael51d04d12022-05-04 15:40:22 +01007035 e.g. with `:map!`, you need to save/restore the mapping for
7036 all of them, when they might differ.
7037
7038 In the second form, with {dict} as the only argument, mode
7039 and abbr are taken from the dict.
7040 Example: >
7041 vim9script
7042 var save_maps = maplist()->filter(
7043 (_, m) => m.lhs == 'K')
7044 nnoremap K somethingelse
7045 cnoremap K somethingelse2
7046 # ...
7047 unmap K
7048 for d in save_maps
7049 mapset(d)
7050 endfor
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007051<
7052 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007053
7054
7055match({expr}, {pat} [, {start} [, {count}]]) *match()*
7056 When {expr} is a |List| then this returns the index of the
7057 first item where {pat} matches. Each item is used as a
7058 String, |Lists| and |Dictionaries| are used as echoed.
7059
7060 Otherwise, {expr} is used as a String. The result is a
7061 Number, which gives the index (byte offset) in {expr} where
7062 {pat} matches.
7063
7064 A match at the first character or |List| item returns zero.
7065 If there is no match -1 is returned.
7066
7067 For getting submatches see |matchlist()|.
7068 Example: >
7069 :echo match("testing", "ing") " results in 4
7070 :echo match([1, 'x'], '\a') " results in 1
7071< See |string-match| for how {pat} is used.
7072 *strpbrk()*
7073 Vim doesn't have a strpbrk() function. But you can do: >
7074 :let sepidx = match(line, '[.,;: \t]')
7075< *strcasestr()*
7076 Vim doesn't have a strcasestr() function. But you can add
7077 "\c" to the pattern to ignore case: >
7078 :let idx = match(haystack, '\cneedle')
7079<
7080 If {start} is given, the search starts from byte index
7081 {start} in a String or item {start} in a |List|.
7082 The result, however, is still the index counted from the
7083 first character/item. Example: >
7084 :echo match("testing", "ing", 2)
7085< result is again "4". >
7086 :echo match("testing", "ing", 4)
7087< result is again "4". >
7088 :echo match("testing", "t", 2)
7089< result is "3".
7090 For a String, if {start} > 0 then it is like the string starts
7091 {start} bytes later, thus "^" will match at {start}. Except
7092 when {count} is given, then it's like matches before the
7093 {start} byte are ignored (this is a bit complicated to keep it
7094 backwards compatible).
7095 For a String, if {start} < 0, it will be set to 0. For a list
7096 the index is counted from the end.
7097 If {start} is out of range ({start} > strlen({expr}) for a
7098 String or {start} > len({expr}) for a |List|) -1 is returned.
7099
7100 When {count} is given use the {count}'th match. When a match
7101 is found in a String the search for the next one starts one
7102 character further. Thus this example results in 1: >
7103 echo match("testing", "..", 0, 2)
7104< In a |List| the search continues in the next item.
7105 Note that when {count} is added the way {start} works changes,
7106 see above.
7107
Yegappan Lakshmanana35235e2024-02-24 10:09:43 +01007108 *match-pattern*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007109 See |pattern| for the patterns that are accepted.
7110 The 'ignorecase' option is used to set the ignore-caseness of
7111 the pattern. 'smartcase' is NOT used. The matching is always
7112 done like 'magic' is set and 'cpoptions' is empty.
7113 Note that a match at the start is preferred, thus when the
7114 pattern is using "*" (any number of matches) it tends to find
7115 zero matches at the start instead of a number of matches
7116 further down in the text.
7117
7118 Can also be used as a |method|: >
7119 GetText()->match('word')
7120 GetList()->match('word')
7121<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007122 Return type: |Number|
7123
7124
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00007125 *matchadd()* *E290* *E798* *E799* *E801* *E957*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007126matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
7127 Defines a pattern to be highlighted in the current window (a
7128 "match"). It will be highlighted with {group}. Returns an
7129 identification number (ID), which can be used to delete the
7130 match using |matchdelete()|. The ID is bound to the window.
7131 Matching is case sensitive and magic, unless case sensitivity
7132 or magicness are explicitly overridden in {pattern}. The
7133 'magic', 'smartcase' and 'ignorecase' options are not used.
7134 The "Conceal" value is special, it causes the match to be
7135 concealed.
7136
7137 The optional {priority} argument assigns a priority to the
7138 match. A match with a high priority will have its
7139 highlighting overrule that of a match with a lower priority.
7140 A priority is specified as an integer (negative numbers are no
7141 exception). If the {priority} argument is not specified, the
7142 default priority is 10. The priority of 'hlsearch' is zero,
7143 hence all matches with a priority greater than zero will
7144 overrule it. Syntax highlighting (see 'syntax') is a separate
7145 mechanism, and regardless of the chosen priority a match will
7146 always overrule syntax highlighting.
7147
7148 The optional {id} argument allows the request for a specific
7149 match ID. If a specified ID is already taken, an error
7150 message will appear and the match will not be added. An ID
7151 is specified as a positive integer (zero excluded). IDs 1, 2
7152 and 3 are reserved for |:match|, |:2match| and |:3match|,
Bram Moolenaar2ecbe532022-07-29 21:36:21 +01007153 respectively. 3 is reserved for use by the |matchparen|
7154 plugin.
Bram Moolenaarb529cfb2022-07-25 15:42:07 +01007155 If the {id} argument is not specified or -1, |matchadd()|
Bram Moolenaar9f573a82022-09-29 13:50:08 +01007156 automatically chooses a free ID, which is at least 1000.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007157
7158 The optional {dict} argument allows for further custom
7159 values. Currently this is used to specify a match specific
7160 conceal character that will be shown for |hl-Conceal|
7161 highlighted matches. The dict can have the following members:
7162
7163 conceal Special character to show instead of the
7164 match (only for |hl-Conceal| highlighted
7165 matches, see |:syn-cchar|)
7166 window Instead of the current window use the
7167 window with this number or window ID.
7168
7169 The number of matches is not limited, as it is the case with
7170 the |:match| commands.
7171
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007172 Returns -1 on error.
7173
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007174 Example: >
7175 :highlight MyGroup ctermbg=green guibg=green
7176 :let m = matchadd("MyGroup", "TODO")
7177< Deletion of the pattern: >
7178 :call matchdelete(m)
7179
7180< A list of matches defined by |matchadd()| and |:match| are
7181 available from |getmatches()|. All matches can be deleted in
7182 one operation by |clearmatches()|.
7183
7184 Can also be used as a |method|: >
7185 GetGroup()->matchadd('TODO')
7186<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007187 Return type: |Number|
7188
7189
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007190 *matchaddpos()*
7191matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
7192 Same as |matchadd()|, but requires a list of positions {pos}
7193 instead of a pattern. This command is faster than |matchadd()|
Shane Harperc1b39842024-07-17 19:40:40 +02007194 because it does not handle regular expressions and it sets
7195 buffer line boundaries to redraw screen. It is supposed to be
7196 used when fast match additions and deletions are required, for
7197 example to highlight matching parentheses.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007198
7199 {pos} is a list of positions. Each position can be one of
7200 these:
7201 - A number. This whole line will be highlighted. The first
7202 line has number 1.
7203 - A list with one number, e.g., [23]. The whole line with this
7204 number will be highlighted.
7205 - A list with two numbers, e.g., [23, 11]. The first number is
7206 the line number, the second one is the column number (first
7207 column is 1, the value must correspond to the byte index as
7208 |col()| would return). The character at this position will
7209 be highlighted.
7210 - A list with three numbers, e.g., [23, 11, 3]. As above, but
7211 the third number gives the length of the highlight in bytes.
7212
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007213 Returns -1 on error.
7214
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007215 Example: >
7216 :highlight MyGroup ctermbg=green guibg=green
7217 :let m = matchaddpos("MyGroup", [[23, 24], 34])
7218< Deletion of the pattern: >
7219 :call matchdelete(m)
7220
7221< Matches added by |matchaddpos()| are returned by
7222 |getmatches()|.
7223
7224 Can also be used as a |method|: >
7225 GetGroup()->matchaddpos([23, 11])
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007226<
7227 Return type: |Number|
7228
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007229
7230matcharg({nr}) *matcharg()*
7231 Selects the {nr} match item, as set with a |:match|,
7232 |:2match| or |:3match| command.
7233 Return a |List| with two elements:
7234 The name of the highlight group used
7235 The pattern used.
7236 When {nr} is not 1, 2 or 3 returns an empty |List|.
7237 When there is no match item set returns ['', ''].
7238 This is useful to save and restore a |:match|.
7239 Highlighting matches using the |:match| commands are limited
7240 to three matches. |matchadd()| does not have this limitation.
7241
7242 Can also be used as a |method|: >
7243 GetMatch()->matcharg()
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +01007244<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007245 Return type: list<string>
7246
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +01007247 *matchbufline()*
7248matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict}])
7249 Returns the |List| of matches in lines from {lnum} to {end} in
7250 buffer {buf} where {pat} matches.
7251
7252 {lnum} and {end} can either be a line number or the string "$"
7253 to refer to the last line in {buf}.
7254
7255 The {dict} argument supports following items:
7256 submatches include submatch information (|/\(|)
7257
7258 For each match, a |Dict| with the following items is returned:
7259 byteidx starting byte index of the match
Yegappan Lakshmananeb3475d2024-01-15 11:08:25 -08007260 lnum line number where there is a match
7261 text matched string
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +01007262 Note that there can be multiple matches in a single line.
7263
7264 This function works only for loaded buffers. First call
7265 |bufload()| if needed.
7266
Yegappan Lakshmanana35235e2024-02-24 10:09:43 +01007267 See |match-pattern| for information about the effect of some
7268 option settings on the pattern.
7269
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +01007270 When {buf} is not a valid buffer, the buffer is not loaded or
7271 {lnum} or {end} is not valid then an error is given and an
7272 empty |List| is returned.
7273
7274 Examples: >
Yegappan Lakshmananeb3475d2024-01-15 11:08:25 -08007275 " Assuming line 3 in buffer 5 contains "a"
7276 :echo matchbufline(5, '\<\k\+\>', 3, 3)
7277 [{'lnum': 3, 'byteidx': 0, 'text': 'a'}]
7278 " Assuming line 4 in buffer 10 contains "tik tok"
7279 :echo matchbufline(10, '\<\k\+\>', 1, 4)
7280 [{'lnum': 4, 'byteidx': 0, 'text': 'tik'}, {'lnum': 4, 'byteidx': 4, 'text': 'tok'}]
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +01007281<
7282 If {submatch} is present and is v:true, then submatches like
Yegappan Lakshmananeb3475d2024-01-15 11:08:25 -08007283 "\1", "\2", etc. are also returned. Example: >
7284 " Assuming line 2 in buffer 2 contains "acd"
7285 :echo matchbufline(2, '\(a\)\?\(b\)\?\(c\)\?\(.*\)', 2, 2
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +01007286 \ {'submatches': v:true})
Yegappan Lakshmananeb3475d2024-01-15 11:08:25 -08007287 [{'lnum': 2, 'byteidx': 0, 'text': 'acd', 'submatches': ['a', '', 'c', 'd', '', '', '', '', '']}]
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +01007288< The "submatches" List always contains 9 items. If a submatch
7289 is not found, then an empty string is returned for that
7290 submatch.
7291
7292 Can also be used as a |method|: >
7293 GetBuffer()->matchbufline('mypat', 1, '$')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007294<
7295 Return type: list<dict<any>> or list<any>
7296
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007297
h-east624bb832024-11-09 18:37:32 +01007298matchdelete({id} [, {win}) *matchdelete()* *E802* *E803*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007299 Deletes a match with ID {id} previously defined by |matchadd()|
7300 or one of the |:match| commands. Returns 0 if successful,
7301 otherwise -1. See example for |matchadd()|. All matches can
7302 be deleted in one operation by |clearmatches()|.
7303 If {win} is specified, use the window with this number or
7304 window ID instead of the current window.
7305
7306 Can also be used as a |method|: >
7307 GetMatch()->matchdelete()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007308<
7309 Return type: |Number|
7310
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007311
7312matchend({expr}, {pat} [, {start} [, {count}]]) *matchend()*
7313 Same as |match()|, but return the index of first character
7314 after the match. Example: >
7315 :echo matchend("testing", "ing")
7316< results in "7".
7317 *strspn()* *strcspn()*
7318 Vim doesn't have a strspn() or strcspn() function, but you can
7319 do it with matchend(): >
7320 :let span = matchend(line, '[a-zA-Z]')
7321 :let span = matchend(line, '[^a-zA-Z]')
7322< Except that -1 is returned when there are no matches.
7323
7324 The {start}, if given, has the same meaning as for |match()|. >
7325 :echo matchend("testing", "ing", 2)
7326< results in "7". >
7327 :echo matchend("testing", "ing", 5)
7328< result is "-1".
7329 When {expr} is a |List| the result is equal to |match()|.
7330
7331 Can also be used as a |method|: >
7332 GetText()->matchend('word')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007333<
7334 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007335
7336
7337matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
7338 If {list} is a list of strings, then returns a |List| with all
7339 the strings in {list} that fuzzy match {str}. The strings in
7340 the returned list are sorted based on the matching score.
7341
7342 The optional {dict} argument always supports the following
7343 items:
zeertzjq9af2bc02022-05-11 14:15:37 +01007344 matchseq When this item is present return only matches
7345 that contain the characters in {str} in the
7346 given sequence.
Kazuyuki Miyagi47f1a552022-06-17 18:30:03 +01007347 limit Maximum number of matches in {list} to be
7348 returned. Zero means no limit.
glepnir28e40a72025-03-16 21:24:22 +01007349 camelcase Use enhanced camel case scoring making results
7350 better suited for completion related to
zeertzjqc4815c12025-03-18 20:28:00 +01007351 programming languages. Defaults to v:true.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007352
7353 If {list} is a list of dictionaries, then the optional {dict}
7354 argument supports the following additional items:
Yasuhiro Matsumoto9029a6e2022-04-16 12:35:35 +01007355 key Key of the item which is fuzzy matched against
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007356 {str}. The value of this item should be a
7357 string.
7358 text_cb |Funcref| that will be called for every item
7359 in {list} to get the text for fuzzy matching.
7360 This should accept a dictionary item as the
7361 argument and return the text for that item to
7362 use for fuzzy matching.
7363
7364 {str} is treated as a literal string and regular expression
7365 matching is NOT supported. The maximum supported {str} length
7366 is 256.
7367
7368 When {str} has multiple words each separated by white space,
7369 then the list of strings that have all the words is returned.
7370
7371 If there are no matching strings or there is an error, then an
7372 empty list is returned. If length of {str} is greater than
7373 256, then returns an empty list.
7374
Yasuhiro Matsumoto9029a6e2022-04-16 12:35:35 +01007375 When {limit} is given, matchfuzzy() will find up to this
7376 number of matches in {list} and return them in sorted order.
7377
Bram Moolenaar1588bc82022-03-08 21:35:07 +00007378 Refer to |fuzzy-matching| for more information about fuzzy
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007379 matching strings.
7380
7381 Example: >
7382 :echo matchfuzzy(["clay", "crow"], "cay")
7383< results in ["clay"]. >
7384 :echo getbufinfo()->map({_, v -> v.name})->matchfuzzy("ndl")
7385< results in a list of buffer names fuzzy matching "ndl". >
7386 :echo getbufinfo()->matchfuzzy("ndl", {'key' : 'name'})
7387< results in a list of buffer information dicts with buffer
7388 names fuzzy matching "ndl". >
7389 :echo getbufinfo()->matchfuzzy("spl",
7390 \ {'text_cb' : {v -> v.name}})
7391< results in a list of buffer information dicts with buffer
7392 names fuzzy matching "spl". >
7393 :echo v:oldfiles->matchfuzzy("test")
7394< results in a list of file names fuzzy matching "test". >
7395 :let l = readfile("buffer.c")->matchfuzzy("str")
7396< results in a list of lines in "buffer.c" fuzzy matching "str". >
7397 :echo ['one two', 'two one']->matchfuzzy('two one')
7398< results in ['two one', 'one two']. >
7399 :echo ['one two', 'two one']->matchfuzzy('two one',
7400 \ {'matchseq': 1})
7401< results in ['two one'].
7402
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007403 Return type: list<string> or list<any>
7404
7405
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007406matchfuzzypos({list}, {str} [, {dict}]) *matchfuzzypos()*
7407 Same as |matchfuzzy()|, but returns the list of matched
7408 strings, the list of character positions where characters
7409 in {str} matches and a list of matching scores. You can
7410 use |byteidx()| to convert a character position to a byte
7411 position.
7412
7413 If {str} matches multiple times in a string, then only the
7414 positions for the best match is returned.
7415
7416 If there are no matching strings or there is an error, then a
7417 list with three empty list items is returned.
7418
7419 Example: >
7420 :echo matchfuzzypos(['testing'], 'tsg')
7421< results in [['testing'], [[0, 2, 6]], [99]] >
7422 :echo matchfuzzypos(['clay', 'lacy'], 'la')
7423< results in [['lacy', 'clay'], [[0, 1], [1, 2]], [153, 133]] >
7424 :echo [{'text': 'hello', 'id' : 10}]->matchfuzzypos('ll', {'key' : 'text'})
7425< results in [[{'id': 10, 'text': 'hello'}], [[2, 3]], [127]]
7426
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007427 Return type: list<list<any>>
7428
7429
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007430matchlist({expr}, {pat} [, {start} [, {count}]]) *matchlist()*
7431 Same as |match()|, but return a |List|. The first item in the
7432 list is the matched string, same as what matchstr() would
7433 return. Following items are submatches, like "\1", "\2", etc.
7434 in |:substitute|. When an optional submatch didn't match an
7435 empty string is used. Example: >
7436 echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)')
7437< Results in: ['acd', 'a', '', 'c', 'd', '', '', '', '', '']
7438 When there is no match an empty list is returned.
7439
7440 You can pass in a List, but that is not very useful.
7441
7442 Can also be used as a |method|: >
7443 GetText()->matchlist('word')
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +01007444<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007445 Return type: list<string> or list<any>
7446
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +01007447 *matchstrlist()*
7448matchstrlist({list}, {pat} [, {dict}])
7449 Returns the |List| of matches in {list} where {pat} matches.
7450 {list} is a |List| of strings. {pat} is matched against each
7451 string in {list}.
7452
7453 The {dict} argument supports following items:
7454 submatches include submatch information (|/\(|)
7455
7456 For each match, a |Dict| with the following items is returned:
7457 byteidx starting byte index of the match.
7458 idx index in {list} of the match.
7459 text matched string
7460 submatches a List of submatches. Present only if
7461 "submatches" is set to v:true in {dict}.
7462
Yegappan Lakshmanana35235e2024-02-24 10:09:43 +01007463 See |match-pattern| for information about the effect of some
7464 option settings on the pattern.
7465
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +01007466 Example: >
Yegappan Lakshmananeb3475d2024-01-15 11:08:25 -08007467 :echo matchstrlist(['tik tok'], '\<\k\+\>')
7468 [{'idx': 0, 'byteidx': 0, 'text': 'tik'}, {'idx': 0, 'byteidx': 4, 'text': 'tok'}]
7469 :echo matchstrlist(['a', 'b'], '\<\k\+\>')
7470 [{'idx': 0, 'byteidx': 0, 'text': 'a'}, {'idx': 1, 'byteidx': 0, 'text': 'b'}]
Yegappan Lakshmananf93b1c82024-01-04 22:28:46 +01007471<
7472 If "submatches" is present and is v:true, then submatches like
7473 "\1", "\2", etc. are also returned. Example: >
7474 :echo matchstrlist(['acd'], '\(a\)\?\(b\)\?\(c\)\?\(.*\)',
7475 \ #{submatches: v:true})
7476 [{'idx': 0, 'byteidx': 0, 'text': 'acd', 'submatches': ['a', '', 'c', 'd', '', '', '', '', '']}]
7477< The "submatches" List always contains 9 items. If a submatch
7478 is not found, then an empty string is returned for that
7479 submatch.
7480
7481 Can also be used as a |method|: >
7482 GetListOfStrings()->matchstrlist('mypat')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007483<
7484 Return type: list<dict<any>> or list<any>
7485
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007486
7487matchstr({expr}, {pat} [, {start} [, {count}]]) *matchstr()*
7488 Same as |match()|, but return the matched string. Example: >
7489 :echo matchstr("testing", "ing")
7490< results in "ing".
7491 When there is no match "" is returned.
7492 The {start}, if given, has the same meaning as for |match()|. >
7493 :echo matchstr("testing", "ing", 2)
7494< results in "ing". >
7495 :echo matchstr("testing", "ing", 5)
7496< result is "".
7497 When {expr} is a |List| then the matching item is returned.
7498 The type isn't changed, it's not necessarily a String.
7499
7500 Can also be used as a |method|: >
7501 GetText()->matchstr('word')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007502<
7503 Return type: |String|
7504
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007505
7506matchstrpos({expr}, {pat} [, {start} [, {count}]]) *matchstrpos()*
7507 Same as |matchstr()|, but return the matched string, the start
7508 position and the end position of the match. Example: >
7509 :echo matchstrpos("testing", "ing")
7510< results in ["ing", 4, 7].
7511 When there is no match ["", -1, -1] is returned.
7512 The {start}, if given, has the same meaning as for |match()|. >
7513 :echo matchstrpos("testing", "ing", 2)
7514< results in ["ing", 4, 7]. >
7515 :echo matchstrpos("testing", "ing", 5)
7516< result is ["", -1, -1].
7517 When {expr} is a |List| then the matching item, the index
7518 of first item where {pat} matches, the start position and the
7519 end position of the match are returned. >
7520 :echo matchstrpos([1, '__x'], '\a')
7521< result is ["x", 1, 2, 3].
7522 The type isn't changed, it's not necessarily a String.
7523
7524 Can also be used as a |method|: >
7525 GetText()->matchstrpos('word')
7526<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007527 Return type: list<any>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007528
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007529
7530max({expr}) *max()*
7531 Return the maximum value of all items in {expr}. Example: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007532 echo max([apples, pears, oranges])
7533
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01007534< {expr} can be a |List|, a |Tuple| or a |Dictionary|. For a
7535 Dictionary, it returns the maximum of all values in the
7536 Dictionary. If {expr} is neither a List nor a Tuple nor a
7537 Dictionary, or one of the items in {expr} cannot be used as a
7538 Number this results in an error. An empty |List|, |Tuple|
7539 or |Dictionary| results in zero.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007540
7541 Can also be used as a |method|: >
7542 mylist->max()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007543<
7544 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007545
7546
7547menu_info({name} [, {mode}]) *menu_info()*
7548 Return information about the specified menu {name} in
7549 mode {mode}. The menu name should be specified without the
7550 shortcut character ('&'). If {name} is "", then the top-level
7551 menu names are returned.
7552
7553 {mode} can be one of these strings:
7554 "n" Normal
7555 "v" Visual (including Select)
7556 "o" Operator-pending
7557 "i" Insert
7558 "c" Cmd-line
7559 "s" Select
7560 "x" Visual
7561 "t" Terminal-Job
7562 "" Normal, Visual and Operator-pending
7563 "!" Insert and Cmd-line
7564 When {mode} is omitted, the modes for "" are used.
7565
7566 Returns a |Dictionary| containing the following items:
7567 accel menu item accelerator text |menu-text|
7568 display display name (name without '&')
7569 enabled v:true if this menu item is enabled
7570 Refer to |:menu-enable|
7571 icon name of the icon file (for toolbar)
7572 |toolbar-icon|
7573 iconidx index of a built-in icon
7574 modes modes for which the menu is defined. In
7575 addition to the modes mentioned above, these
7576 characters will be used:
7577 " " Normal, Visual and Operator-pending
7578 name menu item name.
7579 noremenu v:true if the {rhs} of the menu item is not
7580 remappable else v:false.
7581 priority menu order priority |menu-priority|
7582 rhs right-hand-side of the menu item. The returned
7583 string has special characters translated like
7584 in the output of the ":menu" command listing.
7585 When the {rhs} of a menu item is empty, then
7586 "<Nop>" is returned.
7587 script v:true if script-local remapping of {rhs} is
7588 allowed else v:false. See |:menu-script|.
7589 shortcut shortcut key (character after '&' in
7590 the menu name) |menu-shortcut|
7591 silent v:true if the menu item is created
7592 with <silent> argument |:menu-silent|
7593 submenus |List| containing the names of
7594 all the submenus. Present only if the menu
7595 item has submenus.
7596
7597 Returns an empty dictionary if the menu item is not found.
7598
7599 Examples: >
7600 :echo menu_info('Edit.Cut')
7601 :echo menu_info('File.Save', 'n')
7602
7603 " Display the entire menu hierarchy in a buffer
7604 func ShowMenu(name, pfx)
7605 let m = menu_info(a:name)
7606 call append(line('$'), a:pfx .. m.display)
7607 for child in m->get('submenus', [])
7608 call ShowMenu(a:name .. '.' .. escape(child, '.'),
7609 \ a:pfx .. ' ')
7610 endfor
7611 endfunc
7612 new
7613 for topmenu in menu_info('').submenus
7614 call ShowMenu(topmenu, '')
7615 endfor
7616<
7617 Can also be used as a |method|: >
7618 GetMenuName()->menu_info('v')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007619<
7620 Return type: dict<any>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007621
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007622min({expr}) *min()*
7623 Return the minimum value of all items in {expr}. Example: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007624 echo min([apples, pears, oranges])
7625
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01007626< {expr} can be a |List|, a |Tuple| or a |Dictionary|. For a
7627 Dictionary, it returns the minimum of all values in the
7628 Dictionary. If {expr} is neither a List nor a Tuple nor a
7629 Dictionary, or one of the items in {expr} cannot be used as a
7630 Number this results in an error. An empty |List|, |Tuple| or
7631 |Dictionary| results in zero.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007632
7633 Can also be used as a |method|: >
7634 mylist->min()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007635<
7636 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007637
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007638
7639mkdir({name} [, {flags} [, {prot}]]) *mkdir()* *E739*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007640 Create directory {name}.
7641
Bram Moolenaar938ae282023-02-20 20:44:55 +00007642 When {flags} is present it must be a string. An empty string
7643 has no effect.
Bram Moolenaar6f14da12022-09-07 21:30:44 +01007644
Christian Brabandtd6d4e132024-06-13 21:21:41 +02007645 {flags} can contain these character flags:
7646 "p" intermediate directories will be created as necessary
7647 "D" {name} will be deleted at the end of the current
Christian Brabandtc509c002024-06-14 20:22:05 +02007648 function, but not recursively |:defer|
Christian Brabandtd6d4e132024-06-13 21:21:41 +02007649 "R" {name} will be deleted recursively at the end of the
Christian Brabandtc509c002024-06-14 20:22:05 +02007650 current function |:defer|
Bram Moolenaar938ae282023-02-20 20:44:55 +00007651
Christian Brabandtd6d4e132024-06-13 21:21:41 +02007652 Note that when {name} has more than one part and "p" is used
Bram Moolenaar6f14da12022-09-07 21:30:44 +01007653 some directories may already exist. Only the first one that
7654 is created and what it contains is scheduled to be deleted.
7655 E.g. when using: >
7656 call mkdir('subdir/tmp/autoload', 'pR')
7657< and "subdir" already exists then "subdir/tmp" will be
7658 scheduled for deletion, like with: >
7659 defer delete('subdir/tmp', 'rf')
7660< Note that if scheduling the defer fails the directory is not
7661 deleted. This should only happen when out of memory.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007662
7663 If {prot} is given it is used to set the protection bits of
7664 the new directory. The default is 0o755 (rwxr-xr-x: r/w for
7665 the user, readable for others). Use 0o700 to make it
Christian Brabandt0a336cc2025-03-11 21:14:31 +01007666 unreadable for others. This is used for the newly created
zeertzjqc1c3b5d2025-03-12 21:16:13 +01007667 directories. Note: umask is applied to {prot} (on Unix).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007668 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007669 :call mkdir($HOME .. "/tmp/foo/bar", "p", 0o700)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007670
7671< This function is not available in the |sandbox|.
7672
7673 There is no error if the directory already exists and the "p"
7674 flag is passed (since patch 8.0.1708). However, without the
7675 "p" option the call will fail.
7676
7677 The function result is a Number, which is TRUE if the call was
7678 successful or FALSE if the directory creation failed or partly
7679 failed.
7680
7681 Not available on all systems. To check use: >
7682 :if exists("*mkdir")
7683
7684< Can also be used as a |method|: >
7685 GetName()->mkdir()
7686<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007687 Return type: |Number|
7688
7689
7690mode([{expr}]) *mode()*
7691 Return a string that indicates the current mode.
Doug Kearns9cd9e752024-04-07 17:42:17 +02007692 If {expr} is supplied and it evaluates to a non-zero Number or
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007693 a non-empty String (|non-zero-arg|), then the full mode is
7694 returned, otherwise only the first letter is returned.
7695 Also see |state()|.
7696
7697 n Normal
7698 no Operator-pending
7699 nov Operator-pending (forced characterwise |o_v|)
7700 noV Operator-pending (forced linewise |o_V|)
7701 noCTRL-V Operator-pending (forced blockwise |o_CTRL-V|);
7702 CTRL-V is one character
7703 niI Normal using |i_CTRL-O| in |Insert-mode|
7704 niR Normal using |i_CTRL-O| in |Replace-mode|
7705 niV Normal using |i_CTRL-O| in |Virtual-Replace-mode|
7706 nt Terminal-Normal (insert goes to Terminal-Job mode)
7707 v Visual by character
7708 vs Visual by character using |v_CTRL-O| in Select mode
7709 V Visual by line
7710 Vs Visual by line using |v_CTRL-O| in Select mode
7711 CTRL-V Visual blockwise
7712 CTRL-Vs Visual blockwise using |v_CTRL-O| in Select mode
7713 s Select by character
7714 S Select by line
7715 CTRL-S Select blockwise
7716 i Insert
7717 ic Insert mode completion |compl-generic|
7718 ix Insert mode |i_CTRL-X| completion
7719 R Replace |R|
7720 Rc Replace mode completion |compl-generic|
7721 Rx Replace mode |i_CTRL-X| completion
7722 Rv Virtual Replace |gR|
7723 Rvc Virtual Replace mode completion |compl-generic|
7724 Rvx Virtual Replace mode |i_CTRL-X| completion
7725 c Command-line editing
h-east71ebf3b2023-09-03 17:12:55 +02007726 ct Command-line editing via Terminal-Job mode
zeertzjqfcaeb3d2023-11-28 20:46:29 +01007727 cr Command-line editing overstrike mode |c_<Insert>|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007728 cv Vim Ex mode |gQ|
zeertzjqfcaeb3d2023-11-28 20:46:29 +01007729 cvr Vim Ex mode while in overstrike mode |c_<Insert>|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007730 ce Normal Ex mode |Q|
7731 r Hit-enter prompt
7732 rm The -- more -- prompt
7733 r? A |:confirm| query of some sort
7734 ! Shell or external command is executing
7735 t Terminal-Job mode: keys go to the job
7736
7737 This is useful in the 'statusline' option or when used
7738 with |remote_expr()| In most other places it always returns
7739 "c" or "n".
7740 Note that in the future more modes and more specific modes may
7741 be added. It's better not to compare the whole string but only
7742 the leading character(s).
7743 Also see |visualmode()|.
7744
7745 Can also be used as a |method|: >
7746 DoFull()->mode()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007747<
7748 Return type: |String|
7749
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007750
7751mzeval({expr}) *mzeval()*
7752 Evaluate MzScheme expression {expr} and return its result
7753 converted to Vim data structures.
7754 Numbers and strings are returned as they are.
7755 Pairs (including lists and improper lists) and vectors are
7756 returned as Vim |Lists|.
7757 Hash tables are represented as Vim |Dictionary| type with keys
7758 converted to strings.
7759 All other types are converted to string with display function.
7760 Examples: >
7761 :mz (define l (list 1 2 3))
7762 :mz (define h (make-hash)) (hash-set! h "list" l)
7763 :echo mzeval("l")
7764 :echo mzeval("h")
7765<
7766 Note that in a `:def` function local variables are not visible
7767 to {expr}.
7768
7769 Can also be used as a |method|: >
7770 GetExpr()->mzeval()
7771<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007772 Return type: any, depending on {expr}
7773
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007774 {only available when compiled with the |+mzscheme| feature}
7775
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007776
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007777nextnonblank({lnum}) *nextnonblank()*
7778 Return the line number of the first line at or below {lnum}
7779 that is not blank. Example: >
7780 if getline(nextnonblank(1)) =~ "Java"
7781< When {lnum} is invalid or there is no non-blank line at or
7782 below it, zero is returned.
7783 {lnum} is used like with |getline()|.
7784 See also |prevnonblank()|.
7785
7786 Can also be used as a |method|: >
7787 GetLnum()->nextnonblank()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007788<
7789 Return type: |Number|
7790
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007791
Christ van Willegenc0786752025-02-01 15:42:16 +01007792ngettext({single}, {plural}, {number}[, {domain}) *ngettext()*
7793 Return a string that contains the correct value for a
7794 message based on the rules for plural form(s) in
7795 a language. Examples: >
7796 ngettext("File", "Files", 2) # returns "Files"
7797<
7798 Can be used as a |method|: >
7799 1->ngettext("File", "Files") # returns "File"
7800<
7801 See |gettext()| for information on the domain parameter.
7802
7803 Return type: |String|
7804
7805
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007806nr2char({expr} [, {utf8}]) *nr2char()*
7807 Return a string with a single character, which has the number
7808 value {expr}. Examples: >
7809 nr2char(64) returns "@"
7810 nr2char(32) returns " "
7811< When {utf8} is omitted or zero, the current 'encoding' is used.
7812 Example for "utf-8": >
7813 nr2char(300) returns I with bow character
7814< When {utf8} is TRUE, always return UTF-8 characters.
7815 Note that a NUL character in the file is specified with
7816 nr2char(10), because NULs are represented with newline
7817 characters. nr2char(0) is a real NUL and terminates the
7818 string, thus results in an empty string.
7819 To turn a list of character numbers into a string: >
7820 let list = [65, 66, 67]
7821 let str = join(map(list, {_, val -> nr2char(val)}), '')
7822< Result: "ABC"
7823
7824 Can also be used as a |method|: >
7825 GetNumber()->nr2char()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007826<
7827 Return type: |String|
7828
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007829
7830or({expr}, {expr}) *or()*
7831 Bitwise OR on the two arguments. The arguments are converted
7832 to a number. A List, Dict or Float argument causes an error.
Bram Moolenaar5a6ec102022-05-27 21:58:00 +01007833 Also see `and()` and `xor()`.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007834 Example: >
7835 :let bits = or(bits, 0x80)
7836< Can also be used as a |method|: >
7837 :let bits = bits->or(0x80)
7838
Bram Moolenaar5a6ec102022-05-27 21:58:00 +01007839< Rationale: The reason this is a function and not using the "|"
7840 character like many languages, is that Vi has always used "|"
7841 to separate commands. In many places it would not be clear if
7842 "|" is an operator or a command separator.
7843
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007844 Return type: |Number|
7845
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007846
7847pathshorten({path} [, {len}]) *pathshorten()*
7848 Shorten directory names in the path {path} and return the
7849 result. The tail, the file name, is kept as-is. The other
7850 components in the path are reduced to {len} letters in length.
7851 If {len} is omitted or smaller than 1 then 1 is used (single
7852 letters). Leading '~' and '.' characters are kept. Examples: >
7853 :echo pathshorten('~/.vim/autoload/myfile.vim')
7854< ~/.v/a/myfile.vim ~
7855>
7856 :echo pathshorten('~/.vim/autoload/myfile.vim', 2)
7857< ~/.vi/au/myfile.vim ~
7858 It doesn't matter if the path exists or not.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007859 Returns an empty string on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007860
7861 Can also be used as a |method|: >
7862 GetDirectories()->pathshorten()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007863<
7864 Return type: |String|
7865
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007866
7867perleval({expr}) *perleval()*
7868 Evaluate Perl expression {expr} in scalar context and return
7869 its result converted to Vim data structures. If value can't be
7870 converted, it is returned as a string Perl representation.
7871 Note: If you want an array or hash, {expr} must return a
7872 reference to it.
7873 Example: >
7874 :echo perleval('[1 .. 4]')
7875< [1, 2, 3, 4]
7876
7877 Note that in a `:def` function local variables are not visible
7878 to {expr}.
7879
7880 Can also be used as a |method|: >
7881 GetExpr()->perleval()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007882<
7883 Return type: any, depending on {expr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007884
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007885 {only available when compiled with the |+perl| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007886
7887
7888popup_ functions are documented here: |popup-functions|
7889
7890
7891pow({x}, {y}) *pow()*
7892 Return the power of {x} to the exponent {y} as a |Float|.
7893 {x} and {y} must evaluate to a |Float| or a |Number|.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007894 Returns 0.0 if {x} or {y} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007895 Examples: >
7896 :echo pow(3, 3)
7897< 27.0 >
7898 :echo pow(2, 16)
7899< 65536.0 >
7900 :echo pow(32, 0.20)
7901< 2.0
7902
7903 Can also be used as a |method|: >
7904 Compute()->pow(3)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007905<
7906 Return type: |Number|
7907
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007908
7909prevnonblank({lnum}) *prevnonblank()*
7910 Return the line number of the first line at or above {lnum}
7911 that is not blank. Example: >
7912 let ind = indent(prevnonblank(v:lnum - 1))
7913< When {lnum} is invalid or there is no non-blank line at or
7914 above it, zero is returned.
7915 {lnum} is used like with |getline()|.
7916 Also see |nextnonblank()|.
7917
7918 Can also be used as a |method|: >
7919 GetLnum()->prevnonblank()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02007920<
7921 Return type: |Number|
7922
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007923
7924printf({fmt}, {expr1} ...) *printf()*
7925 Return a String with {fmt}, where "%" items are replaced by
7926 the formatted form of their respective arguments. Example: >
7927 printf("%4d: E%d %.30s", lnum, errno, msg)
7928< May result in:
7929 " 99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~
7930
7931 When used as a |method| the base is passed as the second
7932 argument: >
7933 Compute()->printf("result: %d")
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01007934<
7935 You can use `call()` to pass the items as a list.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007936
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01007937 Often used items are:
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007938 %s string
7939 %6S string right-aligned in 6 display cells
7940 %6s string right-aligned in 6 bytes
7941 %.9s string truncated to 9 bytes
7942 %c single byte
7943 %d decimal number
7944 %5d decimal number padded with spaces to 5 characters
7945 %x hex number
7946 %04x hex number padded with zeros to at least 4 characters
7947 %X hex number using upper case letters
7948 %o octal number
7949 %08b binary number padded with zeros to at least 8 chars
7950 %f floating point number as 12.23, inf, -inf or nan
7951 %F floating point number as 12.23, INF, -INF or NAN
7952 %e floating point number as 1.23e3, inf, -inf or nan
7953 %E floating point number as 1.23E3, INF, -INF or NAN
7954 %g floating point number, as %f or %e depending on value
7955 %G floating point number, as %F or %E depending on value
7956 %% the % character itself
7957
7958 Conversion specifications start with '%' and end with the
7959 conversion type. All other characters are copied unchanged to
7960 the result.
7961
7962 The "%" starts a conversion specification. The following
7963 arguments appear in sequence:
7964
Christ van Willegen0c6181f2023-08-13 18:03:14 +02007965 % [pos-argument] [flags] [field-width] [.precision] type
7966
7967 pos-argument
7968 At most one positional argument specifier. These
7969 take the form {n$}, where n is >= 1.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007970
7971 flags
7972 Zero or more of the following flags:
7973
7974 # The value should be converted to an "alternate
7975 form". For c, d, and s conversions, this option
7976 has no effect. For o conversions, the precision
7977 of the number is increased to force the first
7978 character of the output string to a zero (except
7979 if a zero value is printed with an explicit
7980 precision of zero).
7981 For b and B conversions, a non-zero result has
7982 the string "0b" (or "0B" for B conversions)
7983 prepended to it.
7984 For x and X conversions, a non-zero result has
7985 the string "0x" (or "0X" for X conversions)
7986 prepended to it.
7987
7988 0 (zero) Zero padding. For all conversions the converted
7989 value is padded on the left with zeros rather
7990 than blanks. If a precision is given with a
7991 numeric conversion (d, b, B, o, x, and X), the 0
7992 flag is ignored.
7993
7994 - A negative field width flag; the converted value
7995 is to be left adjusted on the field boundary.
7996 The converted value is padded on the right with
7997 blanks, rather than on the left with blanks or
7998 zeros. A - overrides a 0 if both are given.
7999
8000 ' ' (space) A blank should be left before a positive
8001 number produced by a signed conversion (d).
8002
8003 + A sign must always be placed before a number
8004 produced by a signed conversion. A + overrides
8005 a space if both are used.
8006
8007 field-width
8008 An optional decimal digit string specifying a minimum
8009 field width. If the converted value has fewer bytes
8010 than the field width, it will be padded with spaces on
8011 the left (or right, if the left-adjustment flag has
8012 been given) to fill out the field width. For the S
8013 conversion the count is in cells.
8014
8015 .precision
8016 An optional precision, in the form of a period '.'
8017 followed by an optional digit string. If the digit
8018 string is omitted, the precision is taken as zero.
8019 This gives the minimum number of digits to appear for
8020 d, o, x, and X conversions, the maximum number of
8021 bytes to be printed from a string for s conversions,
8022 or the maximum number of cells to be printed from a
8023 string for S conversions.
8024 For floating point it is the number of digits after
8025 the decimal point.
8026
8027 type
8028 A character that specifies the type of conversion to
8029 be applied, see below.
8030
8031 A field width or precision, or both, may be indicated by an
8032 asterisk '*' instead of a digit string. In this case, a
8033 Number argument supplies the field width or precision. A
8034 negative field width is treated as a left adjustment flag
8035 followed by a positive field width; a negative precision is
8036 treated as though it were missing. Example: >
8037 :echo printf("%d: %.*s", nr, width, line)
8038< This limits the length of the text used from "line" to
8039 "width" bytes.
8040
Dominique Pellé17dca3c2023-12-14 20:36:32 +01008041 If the argument to be formatted is specified using a
8042 positional argument specifier, and a '*' is used to indicate
8043 that a number argument is to be used to specify the width or
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008044 precision, the argument(s) to be used must also be specified
8045 using a {n$} positional argument specifier. See |printf-$|.
8046
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008047 The conversion specifiers and their meanings are:
8048
8049 *printf-d* *printf-b* *printf-B* *printf-o*
8050 *printf-x* *printf-X*
8051 dbBoxX The Number argument is converted to signed decimal
8052 (d), unsigned binary (b and B), unsigned octal (o), or
8053 unsigned hexadecimal (x and X) notation. The letters
8054 "abcdef" are used for x conversions; the letters
8055 "ABCDEF" are used for X conversions.
8056 The precision, if any, gives the minimum number of
8057 digits that must appear; if the converted value
8058 requires fewer digits, it is padded on the left with
8059 zeros.
8060 In no case does a non-existent or small field width
8061 cause truncation of a numeric field; if the result of
8062 a conversion is wider than the field width, the field
8063 is expanded to contain the conversion result.
8064 The 'h' modifier indicates the argument is 16 bits.
Christ van Willegenaa90d4f2023-09-03 17:22:37 +02008065 The 'l' modifier indicates the argument is a long
8066 integer. The size will be 32 bits or 64 bits
8067 depending on your platform.
8068 The "ll" modifier indicates the argument is 64 bits.
8069 The b and B conversion specifiers never take a width
8070 modifier and always assume their argument is a 64 bit
8071 integer.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008072 Generally, these modifiers are not useful. They are
8073 ignored when type is known from the argument.
8074
8075 i alias for d
8076 D alias for ld
8077 U alias for lu
8078 O alias for lo
8079
8080 *printf-c*
8081 c The Number argument is converted to a byte, and the
8082 resulting character is written.
8083
8084 *printf-s*
8085 s The text of the String argument is used. If a
8086 precision is specified, no more bytes than the number
8087 specified are used.
8088 If the argument is not a String type, it is
8089 automatically converted to text with the same format
8090 as ":echo".
8091 *printf-S*
8092 S The text of the String argument is used. If a
8093 precision is specified, no more display cells than the
8094 number specified are used.
8095
8096 *printf-f* *E807*
8097 f F The Float argument is converted into a string of the
8098 form 123.456. The precision specifies the number of
8099 digits after the decimal point. When the precision is
8100 zero the decimal point is omitted. When the precision
8101 is not specified 6 is used. A really big number
8102 (out of range or dividing by zero) results in "inf"
8103 or "-inf" with %f (INF or -INF with %F).
8104 "0.0 / 0.0" results in "nan" with %f (NAN with %F).
8105 Example: >
8106 echo printf("%.2f", 12.115)
8107< 12.12
8108 Note that roundoff depends on the system libraries.
8109 Use |round()| when in doubt.
8110
8111 *printf-e* *printf-E*
8112 e E The Float argument is converted into a string of the
8113 form 1.234e+03 or 1.234E+03 when using 'E'. The
8114 precision specifies the number of digits after the
8115 decimal point, like with 'f'.
8116
8117 *printf-g* *printf-G*
8118 g G The Float argument is converted like with 'f' if the
8119 value is between 0.001 (inclusive) and 10000000.0
8120 (exclusive). Otherwise 'e' is used for 'g' and 'E'
8121 for 'G'. When no precision is specified superfluous
8122 zeroes and '+' signs are removed, except for the zero
8123 immediately after the decimal point. Thus 10000000.0
8124 results in 1.0e7.
8125
8126 *printf-%*
8127 % A '%' is written. No argument is converted. The
8128 complete conversion specification is "%%".
8129
8130 When a Number argument is expected a String argument is also
8131 accepted and automatically converted.
8132 When a Float or String argument is expected a Number argument
8133 is also accepted and automatically converted.
8134 Any other argument type results in an error message.
8135
8136 *E766* *E767*
8137 The number of {exprN} arguments must exactly match the number
8138 of "%" items. If there are not sufficient or too many
8139 arguments an error is given. Up to 18 arguments can be used.
8140
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008141 *printf-$*
8142 In certain languages, error and informative messages are
8143 more readable when the order of words is different from the
Christian Brabandtee17b6f2023-09-09 11:23:50 +02008144 corresponding message in English. To accommodate translations
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008145 having a different word order, positional arguments may be
8146 used to indicate this. For instance: >
8147
h_east596a9f22023-11-21 21:24:23 +09008148 #, c-format
8149 msgid "%s returning %s"
8150 msgstr "waarde %2$s komt terug van %1$s"
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008151<
h_east596a9f22023-11-21 21:24:23 +09008152 In this example, the sentence has its 2 string arguments
8153 reversed in the output. >
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008154
h_east596a9f22023-11-21 21:24:23 +09008155 echo printf(
8156 "In The Netherlands, vim's creator's name is: %1$s %2$s",
8157 "Bram", "Moolenaar")
8158< In The Netherlands, vim's creator's name is: Bram Moolenaar >
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008159
h_east596a9f22023-11-21 21:24:23 +09008160 echo printf(
8161 "In Belgium, vim's creator's name is: %2$s %1$s",
8162 "Bram", "Moolenaar")
8163< In Belgium, vim's creator's name is: Moolenaar Bram
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008164
8165 Width (and precision) can be specified using the '*' specifier.
8166 In this case, you must specify the field width position in the
8167 argument list. >
8168
h_east596a9f22023-11-21 21:24:23 +09008169 echo printf("%1$*2$.*3$d", 1, 2, 3)
8170< 001 >
8171 echo printf("%2$*3$.*1$d", 1, 2, 3)
8172< 2 >
8173 echo printf("%3$*1$.*2$d", 1, 2, 3)
8174< 03 >
8175 echo printf("%1$*2$.*3$g", 1.4142, 2, 3)
8176< 1.414
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008177
8178 You can mix specifying the width and/or precision directly
8179 and via positional arguments: >
8180
h_east596a9f22023-11-21 21:24:23 +09008181 echo printf("%1$4.*2$f", 1.4142135, 6)
8182< 1.414214 >
8183 echo printf("%1$*2$.4f", 1.4142135, 6)
8184< 1.4142 >
8185 echo printf("%1$*2$.*3$f", 1.4142135, 6, 2)
8186< 1.41
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008187
Christ van Willegenc35fc032024-03-14 18:30:41 +01008188 You will get an overflow error |E1510|, when the field-width
Hirohito Higashi0ed11ba2025-04-18 18:45:31 +02008189 or precision will result in a string longer than 1 MiB
zeertzjqe9a27ef2025-04-18 10:45:45 +02008190 (1024*1024 = 1048576) chars.
Christ van Willegenc35fc032024-03-14 18:30:41 +01008191
Yegappan Lakshmanan413f8392023-09-28 22:46:37 +02008192 *E1500*
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008193 You cannot mix positional and non-positional arguments: >
h_east596a9f22023-11-21 21:24:23 +09008194 echo printf("%s%1$s", "One", "Two")
8195< E1500: Cannot mix positional and non-positional arguments:
8196 %s%1$s
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008197
Yegappan Lakshmanan413f8392023-09-28 22:46:37 +02008198 *E1501*
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008199 You cannot skip a positional argument in a format string: >
h_east596a9f22023-11-21 21:24:23 +09008200 echo printf("%3$s%1$s", "One", "Two", "Three")
8201< E1501: format argument 2 unused in $-style format:
8202 %3$s%1$s
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008203
Yegappan Lakshmanan413f8392023-09-28 22:46:37 +02008204 *E1502*
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008205 You can re-use a [field-width] (or [precision]) argument: >
h_east596a9f22023-11-21 21:24:23 +09008206 echo printf("%1$d at width %2$d is: %01$*2$d", 1, 2)
8207< 1 at width 2 is: 01
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008208
8209 However, you can't use it as a different type: >
h_east596a9f22023-11-21 21:24:23 +09008210 echo printf("%1$d at width %2$ld is: %01$*2$d", 1, 2)
8211< E1502: Positional argument 2 used as field width reused as
8212 different type: long int/int
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008213
Yegappan Lakshmanan413f8392023-09-28 22:46:37 +02008214 *E1503*
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008215 When a positional argument is used, but not the correct number
8216 or arguments is given, an error is raised: >
h_east596a9f22023-11-21 21:24:23 +09008217 echo printf("%1$d at width %2$d is: %01$*2$.*3$d", 1, 2)
8218< E1503: Positional argument 3 out of bounds: %1$d at width
8219 %2$d is: %01$*2$.*3$d
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008220
8221 Only the first error is reported: >
h_east596a9f22023-11-21 21:24:23 +09008222 echo printf("%01$*2$.*3$d %4$d", 1, 2)
8223< E1503: Positional argument 3 out of bounds: %01$*2$.*3$d
8224 %4$d
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008225
Yegappan Lakshmanan413f8392023-09-28 22:46:37 +02008226 *E1504*
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008227 A positional argument can be used more than once: >
h_east596a9f22023-11-21 21:24:23 +09008228 echo printf("%1$s %2$s %1$s", "One", "Two")
8229< One Two One
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008230
8231 However, you can't use a different type the second time: >
h_east596a9f22023-11-21 21:24:23 +09008232 echo printf("%1$s %2$s %1$d", "One", "Two")
8233< E1504: Positional argument 1 type used inconsistently:
8234 int/string
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008235
Yegappan Lakshmanan413f8392023-09-28 22:46:37 +02008236 *E1505*
Christ van Willegen0c6181f2023-08-13 18:03:14 +02008237 Various other errors that lead to a format string being
8238 wrongly formatted lead to: >
h_east596a9f22023-11-21 21:24:23 +09008239 echo printf("%1$d at width %2$d is: %01$*2$.3$d", 1, 2)
8240< E1505: Invalid format specifier: %1$d at width %2$d is:
8241 %01$*2$.3$d
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008242
Christ van Willegenea746f92023-10-05 20:48:36 +02008243 *E1507*
zeertzjq27e12c72023-10-07 01:34:04 +08008244 This internal error indicates that the logic to parse a
8245 positional format argument ran into a problem that couldn't be
8246 otherwise reported. Please file a bug against Vim if you run
8247 into this, copying the exact format string and parameters that
8248 were used.
Christ van Willegenea746f92023-10-05 20:48:36 +02008249
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008250 Return type: |String|
8251
Christ van Willegenea746f92023-10-05 20:48:36 +02008252
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008253prompt_getprompt({buf}) *prompt_getprompt()*
8254 Returns the effective prompt text for buffer {buf}. {buf} can
8255 be a buffer name or number. See |prompt-buffer|.
8256
8257 If the buffer doesn't exist or isn't a prompt buffer, an empty
8258 string is returned.
8259
8260 Can also be used as a |method|: >
8261 GetBuffer()->prompt_getprompt()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008262<
8263 Return type: |String|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008264
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008265 {only available when compiled with the |+channel| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008266
8267
8268prompt_setcallback({buf}, {expr}) *prompt_setcallback()*
8269 Set prompt callback for buffer {buf} to {expr}. When {expr}
8270 is an empty string the callback is removed. This has only
8271 effect if {buf} has 'buftype' set to "prompt".
8272
8273 The callback is invoked when pressing Enter. The current
8274 buffer will always be the prompt buffer. A new line for a
8275 prompt is added before invoking the callback, thus the prompt
8276 for which the callback was invoked will be in the last but one
8277 line.
8278 If the callback wants to add text to the buffer, it must
8279 insert it above the last line, since that is where the current
8280 prompt is. This can also be done asynchronously.
8281 The callback is invoked with one argument, which is the text
8282 that was entered at the prompt. This can be an empty string
8283 if the user only typed Enter.
8284 Example: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008285 func s:TextEntered(text)
8286 if a:text == 'exit' || a:text == 'quit'
8287 stopinsert
Bram Moolenaarb7398fe2023-05-14 18:50:25 +01008288 " Reset 'modified' to allow the buffer to be closed.
8289 " We assume there is nothing useful to be saved.
8290 set nomodified
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008291 close
8292 else
Bram Moolenaarb7398fe2023-05-14 18:50:25 +01008293 " Do something useful with "a:text". In this example
8294 " we just repeat it.
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008295 call append(line('$') - 1, 'Entered: "' .. a:text .. '"')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008296 endif
8297 endfunc
Bram Moolenaarb7398fe2023-05-14 18:50:25 +01008298 call prompt_setcallback(bufnr(), function('s:TextEntered'))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008299
8300< Can also be used as a |method|: >
8301 GetBuffer()->prompt_setcallback(callback)
8302
8303< {only available when compiled with the |+channel| feature}
8304
8305prompt_setinterrupt({buf}, {expr}) *prompt_setinterrupt()*
8306 Set a callback for buffer {buf} to {expr}. When {expr} is an
8307 empty string the callback is removed. This has only effect if
8308 {buf} has 'buftype' set to "prompt".
8309
8310 This callback will be invoked when pressing CTRL-C in Insert
8311 mode. Without setting a callback Vim will exit Insert mode,
8312 as in any buffer.
8313
8314 Can also be used as a |method|: >
8315 GetBuffer()->prompt_setinterrupt(callback)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008316<
8317 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008318
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008319 {only available when compiled with the |+channel| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008320
8321prompt_setprompt({buf}, {text}) *prompt_setprompt()*
8322 Set prompt for buffer {buf} to {text}. You most likely want
8323 {text} to end in a space.
8324 The result is only visible if {buf} has 'buftype' set to
8325 "prompt". Example: >
8326 call prompt_setprompt(bufnr(), 'command: ')
8327<
8328 Can also be used as a |method|: >
8329 GetBuffer()->prompt_setprompt('command: ')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008330<
8331 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008332
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008333 {only available when compiled with the |+channel| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008334
8335prop_ functions are documented here: |text-prop-functions|
8336
8337pum_getpos() *pum_getpos()*
8338 If the popup menu (see |ins-completion-menu|) is not visible,
8339 returns an empty |Dictionary|, otherwise, returns a
8340 |Dictionary| with the following keys:
8341 height nr of items visible
8342 width screen cells
8343 row top screen row (0 first row)
8344 col leftmost screen column (0 first col)
8345 size total nr of items
8346 scrollbar |TRUE| if scrollbar is visible
8347
8348 The values are the same as in |v:event| during
8349 |CompleteChanged|.
8350
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008351 Return type: dict<any>
8352
8353
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008354pumvisible() *pumvisible()*
8355 Returns non-zero when the popup menu is visible, zero
8356 otherwise. See |ins-completion-menu|.
8357 This can be used to avoid some things that would remove the
8358 popup menu.
8359
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008360 Return type: |Number|
8361
8362
zeertzjq7c515282024-11-10 20:26:12 +01008363py3eval({expr} [, {locals}]) *py3eval()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008364 Evaluate Python expression {expr} and return its result
8365 converted to Vim data structures.
Ben Jacksonea19e782024-11-06 21:50:05 +01008366 If a {locals} |Dictionary| is given, it defines set of local
8367 variables available in the expression. The keys are variable
Yegappan Lakshmanan038be272025-03-26 18:46:21 +01008368 names and the values are the variable values. |Dictionary|,
8369 |List| and |Tuple| values are referenced, and may be updated
8370 by the expression (as if |python-bindeval| was used).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008371 Numbers and strings are returned as they are (strings are
8372 copied though, Unicode strings are additionally converted to
8373 'encoding').
8374 Lists are represented as Vim |List| type.
Yegappan Lakshmanan038be272025-03-26 18:46:21 +01008375 Tuples are represented as Vim |Tuple| type.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008376 Dictionaries are represented as Vim |Dictionary| type with
8377 keys converted to strings.
8378 Note that in a `:def` function local variables are not visible
8379 to {expr}.
8380
8381 Can also be used as a |method|: >
8382 GetExpr()->py3eval()
Ben Jacksonea19e782024-11-06 21:50:05 +01008383 'b",".join(l)'->py3eval({'l': ['a', 'b', 'c']})
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008384<
8385 Return type: any, depending on {expr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008386
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008387 {only available when compiled with the |+python3| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008388
8389 *E858* *E859*
zeertzjq7c515282024-11-10 20:26:12 +01008390pyeval({expr} [, {locals}]) *pyeval()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008391 Evaluate Python expression {expr} and return its result
8392 converted to Vim data structures.
Ben Jacksonea19e782024-11-06 21:50:05 +01008393 For {locals} see |py3eval()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008394 Numbers and strings are returned as they are (strings are
8395 copied though).
8396 Lists are represented as Vim |List| type.
Yegappan Lakshmanan038be272025-03-26 18:46:21 +01008397 Tuples are represented as Vim |Tuple| type.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008398 Dictionaries are represented as Vim |Dictionary| type,
8399 non-string keys result in error.
8400 Note that in a `:def` function local variables are not visible
8401 to {expr}.
8402
8403 Can also be used as a |method|: >
8404 GetExpr()->pyeval()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008405<
8406 Return type: any, depending on {expr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008407
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008408 {only available when compiled with the |+python| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008409
zeertzjq7c515282024-11-10 20:26:12 +01008410pyxeval({expr} [, {locals}]) *pyxeval()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008411 Evaluate Python expression {expr} and return its result
8412 converted to Vim data structures.
Ben Jacksonea19e782024-11-06 21:50:05 +01008413 For {locals} see |py3eval()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008414 Uses Python 2 or 3, see |python_x| and 'pyxversion'.
8415 See also: |pyeval()|, |py3eval()|
8416
8417 Can also be used as a |method|: >
h-east52e7cc22024-07-28 17:03:29 +02008418 GetExpr()->pyxeval()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008419<
8420 Return type: any, depending on {expr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008421
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008422 {only available when compiled with the |+python| or the
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008423 |+python3| feature}
8424
8425rand([{expr}]) *rand()* *random*
8426 Return a pseudo-random Number generated with an xoshiro128**
8427 algorithm using seed {expr}. The returned number is 32 bits,
8428 also on 64 bits systems, for consistency.
8429 {expr} can be initialized by |srand()| and will be updated by
8430 rand(). If {expr} is omitted, an internal seed value is used
8431 and updated.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008432 Returns -1 if {expr} is invalid.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008433
8434 Examples: >
8435 :echo rand()
8436 :let seed = srand()
8437 :echo rand(seed)
8438 :echo rand(seed) % 16 " random number 0 - 15
8439<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008440 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008441
8442 *E726* *E727*
8443range({expr} [, {max} [, {stride}]]) *range()*
8444 Returns a |List| with Numbers:
8445 - If only {expr} is specified: [0, 1, ..., {expr} - 1]
8446 - If {max} is specified: [{expr}, {expr} + 1, ..., {max}]
8447 - If {stride} is specified: [{expr}, {expr} + {stride}, ...,
8448 {max}] (increasing {expr} with {stride} each time, not
8449 producing a value past {max}).
8450 When the maximum is one before the start the result is an
8451 empty list. When the maximum is more than one before the
8452 start this is an error.
8453 Examples: >
8454 range(4) " [0, 1, 2, 3]
8455 range(2, 4) " [2, 3, 4]
8456 range(2, 9, 3) " [2, 5, 8]
8457 range(2, -2, -1) " [2, 1, 0, -1, -2]
8458 range(0) " []
8459 range(2, 0) " error!
8460<
8461 Can also be used as a |method|: >
8462 GetExpr()->range()
8463<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008464 Return type: list<number>
8465
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008466
K.Takata11df3ae2022-10-19 14:02:40 +01008467readblob({fname} [, {offset} [, {size}]]) *readblob()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008468 Read file {fname} in binary mode and return a |Blob|.
K.Takata11df3ae2022-10-19 14:02:40 +01008469 If {offset} is specified, read the file from the specified
8470 offset. If it is a negative value, it is used as an offset
8471 from the end of the file. E.g., to read the last 12 bytes: >
8472 readblob('file.bin', -12)
8473< If {size} is specified, only the specified size will be read.
8474 E.g. to read the first 100 bytes of a file: >
8475 readblob('file.bin', 0, 100)
8476< If {size} is -1 or omitted, the whole data starting from
8477 {offset} will be read.
K.Takata43625762022-10-20 13:28:51 +01008478 This can be also used to read the data from a character device
8479 on Unix when {size} is explicitly set. Only if the device
8480 supports seeking {offset} can be used. Otherwise it should be
8481 zero. E.g. to read 10 bytes from a serial console: >
8482 readblob('/dev/ttyS0', 0, 10)
8483< When the file can't be opened an error message is given and
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008484 the result is an empty |Blob|.
Bram Moolenaar5b2a3d72022-10-21 11:25:30 +01008485 When the offset is beyond the end of the file the result is an
8486 empty blob.
8487 When trying to read more bytes than are available the result
8488 is truncated.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008489 Also see |readfile()| and |writefile()|.
8490
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008491 Return type: |Blob|
8492
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008493
8494readdir({directory} [, {expr} [, {dict}]]) *readdir()*
8495 Return a list with file and directory names in {directory}.
8496 You can also use |glob()| if you don't need to do complicated
8497 things, such as limiting the number of matches.
8498 The list will be sorted (case sensitive), see the {dict}
8499 argument below for changing the sort order.
8500
8501 When {expr} is omitted all entries are included.
8502 When {expr} is given, it is evaluated to check what to do:
8503 If {expr} results in -1 then no further entries will
8504 be handled.
8505 If {expr} results in 0 then this entry will not be
8506 added to the list.
8507 If {expr} results in 1 then this entry will be added
8508 to the list.
8509 The entries "." and ".." are always excluded.
8510 Each time {expr} is evaluated |v:val| is set to the entry name.
8511 When {expr} is a function the name is passed as the argument.
8512 For example, to get a list of files ending in ".txt": >
8513 readdir(dirname, {n -> n =~ '.txt$'})
8514< To skip hidden and backup files: >
8515 readdir(dirname, {n -> n !~ '^\.\|\~$'})
Bram Moolenaar6f4754b2022-01-23 12:07:04 +00008516< *E857*
8517 The optional {dict} argument allows for further custom
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008518 values. Currently this is used to specify if and how sorting
8519 should be performed. The dict can have the following members:
8520
8521 sort How to sort the result returned from the system.
8522 Valid values are:
8523 "none" do not sort (fastest method)
8524 "case" sort case sensitive (byte value of
8525 each character, technically, using
8526 strcmp()) (default)
8527 "icase" sort case insensitive (technically
8528 using strcasecmp())
8529 "collate" sort using the collation order
8530 of the "POSIX" or "C" |locale|
8531 (technically using strcoll())
8532 Other values are silently ignored.
8533
8534 For example, to get a list of all files in the current
8535 directory without sorting the individual entries: >
8536 readdir('.', '1', #{sort: 'none'})
8537< If you want to get a directory tree: >
8538 function! s:tree(dir)
8539 return {a:dir : map(readdir(a:dir),
8540 \ {_, x -> isdirectory(x) ?
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008541 \ {x : s:tree(a:dir .. '/' .. x)} : x})}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008542 endfunction
8543 echo s:tree(".")
8544<
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008545 Returns an empty List on error.
8546
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008547 Can also be used as a |method|: >
8548 GetDirName()->readdir()
8549<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008550 Return type: list<string> or list<any>
8551
8552
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008553readdirex({directory} [, {expr} [, {dict}]]) *readdirex()*
8554 Extended version of |readdir()|.
8555 Return a list of Dictionaries with file and directory
8556 information in {directory}.
8557 This is useful if you want to get the attributes of file and
8558 directory at the same time as getting a list of a directory.
8559 This is much faster than calling |readdir()| then calling
8560 |getfperm()|, |getfsize()|, |getftime()| and |getftype()| for
8561 each file and directory especially on MS-Windows.
8562 The list will by default be sorted by name (case sensitive),
8563 the sorting can be changed by using the optional {dict}
8564 argument, see |readdir()|.
8565
8566 The Dictionary for file and directory information has the
8567 following items:
8568 group Group name of the entry. (Only on Unix)
8569 name Name of the entry.
8570 perm Permissions of the entry. See |getfperm()|.
8571 size Size of the entry. See |getfsize()|.
8572 time Timestamp of the entry. See |getftime()|.
8573 type Type of the entry.
8574 On Unix, almost same as |getftype()| except:
8575 Symlink to a dir "linkd"
8576 Other symlink "link"
8577 On MS-Windows:
8578 Normal file "file"
8579 Directory "dir"
8580 Junction "junction"
8581 Symlink to a dir "linkd"
8582 Other symlink "link"
8583 Other reparse point "reparse"
8584 user User name of the entry's owner. (Only on Unix)
8585 On Unix, if the entry is a symlink, the Dictionary includes
8586 the information of the target (except the "type" item).
8587 On MS-Windows, it includes the information of the symlink
8588 itself because of performance reasons.
8589
8590 When {expr} is omitted all entries are included.
8591 When {expr} is given, it is evaluated to check what to do:
8592 If {expr} results in -1 then no further entries will
8593 be handled.
8594 If {expr} results in 0 then this entry will not be
8595 added to the list.
8596 If {expr} results in 1 then this entry will be added
8597 to the list.
8598 The entries "." and ".." are always excluded.
8599 Each time {expr} is evaluated |v:val| is set to a |Dictionary|
8600 of the entry.
8601 When {expr} is a function the entry is passed as the argument.
8602 For example, to get a list of files ending in ".txt": >
8603 readdirex(dirname, {e -> e.name =~ '.txt$'})
8604<
8605 For example, to get a list of all files in the current
8606 directory without sorting the individual entries: >
8607 readdirex(dirname, '1', #{sort: 'none'})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008608<
8609 Can also be used as a |method|: >
8610 GetDirName()->readdirex()
8611<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008612 Return type: list<dict<any>> or list<any>
8613
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008614
8615 *readfile()*
8616readfile({fname} [, {type} [, {max}]])
8617 Read file {fname} and return a |List|, each line of the file
8618 as an item. Lines are broken at NL characters. Macintosh
8619 files separated with CR will result in a single long line
8620 (unless a NL appears somewhere).
8621 All NUL characters are replaced with a NL character.
8622 When {type} contains "b" binary mode is used:
8623 - When the last line ends in a NL an extra empty list item is
8624 added.
8625 - No CR characters are removed.
8626 Otherwise:
8627 - CR characters that appear before a NL are removed.
8628 - Whether the last line ends in a NL or not does not matter.
8629 - When 'encoding' is Unicode any UTF-8 byte order mark is
8630 removed from the text.
8631 When {max} is given this specifies the maximum number of lines
8632 to be read. Useful if you only want to check the first ten
8633 lines of a file: >
8634 :for line in readfile(fname, '', 10)
8635 : if line =~ 'Date' | echo line | endif
8636 :endfor
8637< When {max} is negative -{max} lines from the end of the file
8638 are returned, or as many as there are.
8639 When {max} is zero the result is an empty list.
8640 Note that without {max} the whole file is read into memory.
8641 Also note that there is no recognition of encoding. Read a
8642 file into a buffer if you need to.
8643 Deprecated (use |readblob()| instead): When {type} contains
8644 "B" a |Blob| is returned with the binary data of the file
8645 unmodified.
8646 When the file can't be opened an error message is given and
8647 the result is an empty list.
8648 Also see |writefile()|.
8649
8650 Can also be used as a |method|: >
8651 GetFileName()->readfile()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008652<
8653 Return type: list<string> or list<any>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008654
8655reduce({object}, {func} [, {initial}]) *reduce()* *E998*
8656 {func} is called for every item in {object}, which can be a
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01008657 |String|, |List|, |Tuple| or a |Blob|. {func} is called with
8658 two arguments: the result so far and current item. After
Bram Moolenaarf10911e2022-01-29 22:20:48 +00008659 processing all items the result is returned. *E1132*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008660
8661 {initial} is the initial result. When omitted, the first item
8662 in {object} is used and {func} is first called for the second
8663 item. If {initial} is not given and {object} is empty no
8664 result can be computed, an E998 error is given.
8665
8666 Examples: >
8667 echo reduce([1, 3, 5], { acc, val -> acc + val })
8668 echo reduce(['x', 'y'], { acc, val -> acc .. val }, 'a')
8669 echo reduce(0z1122, { acc, val -> 2 * acc + val })
8670 echo reduce('xyz', { acc, val -> acc .. ',' .. val })
8671<
8672 Can also be used as a |method|: >
8673 echo mylist->reduce({ acc, val -> acc + val }, 0)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008674<
8675 Return type: |String|, |Blob|, list<{type}> or dict<{type}>
8676 depending on {object} and {func}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008677
8678
8679reg_executing() *reg_executing()*
8680 Returns the single letter name of the register being executed.
8681 Returns an empty string when no register is being executed.
8682 See |@|.
8683
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008684 Return type: |String|
8685
8686
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008687reg_recording() *reg_recording()*
8688 Returns the single letter name of the register being recorded.
8689 Returns an empty string when not recording. See |q|.
8690
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008691 Return type: |String|
8692
8693
8694reltime() *reltime()*
Bram Moolenaarf269eab2022-10-03 18:04:35 +01008695reltime({start})
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008696reltime({start}, {end})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008697 Return an item that represents a time value. The item is a
8698 list with items that depend on the system. In Vim 9 script
Bram Moolenaar71badf92023-04-22 22:40:14 +01008699 the type list<any> can be used.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008700 The item can be passed to |reltimestr()| to convert it to a
Bram Moolenaarf269eab2022-10-03 18:04:35 +01008701 string or |reltimefloat()| to convert to a Float. For
8702 example, to see the time spent in function Work(): >
8703 var startTime = reltime()
8704 Work()
8705 echo startTime->reltime()->reltimestr()
8706<
Bram Moolenaar016188f2022-06-06 20:52:59 +01008707 Without an argument reltime() returns the current time (the
Lifepillar963fd7d2024-01-05 17:44:57 +01008708 representation is system-dependent, it cannot be used as the
Bram Moolenaar016188f2022-06-06 20:52:59 +01008709 wall-clock time, see |localtime()| for that).
Lifepillar963fd7d2024-01-05 17:44:57 +01008710 With one argument it returns the time passed since the time
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008711 specified in the argument.
8712 With two arguments it returns the time passed between {start}
8713 and {end}.
8714
8715 The {start} and {end} arguments must be values returned by
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008716 reltime(). If there is an error an empty List is returned in
8717 legacy script, in Vim9 script an error is given.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008718
8719 Can also be used as a |method|: >
8720 GetStart()->reltime()
8721<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008722 Return type: list<number>
8723
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008724 {only available when compiled with the |+reltime| feature}
8725
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008726
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008727reltimefloat({time}) *reltimefloat()*
8728 Return a Float that represents the time value of {time}.
8729 Example: >
8730 let start = reltime()
8731 call MyFunction()
8732 let seconds = reltimefloat(reltime(start))
8733< See the note of reltimestr() about overhead.
8734 Also see |profiling|.
8735 If there is an error 0.0 is returned in legacy script, in Vim9
8736 script an error is given.
8737
8738 Can also be used as a |method|: >
8739 reltime(start)->reltimefloat()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008740<
8741 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008742
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008743 {only available when compiled with the |+reltime| feature}
8744
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008745
8746reltimestr({time}) *reltimestr()*
8747 Return a String that represents the time value of {time}.
8748 This is the number of seconds, a dot and the number of
8749 microseconds. Example: >
8750 let start = reltime()
8751 call MyFunction()
8752 echo reltimestr(reltime(start))
8753< Note that overhead for the commands will be added to the time.
Ernie Rael076de792023-03-16 21:43:15 +00008754 The accuracy depends on the system. Use reltimefloat() for the
8755 greatest accuracy which is nanoseconds on some systems.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008756 Leading spaces are used to make the string align nicely. You
8757 can use split() to remove it. >
8758 echo split(reltimestr(reltime(start)))[0]
8759< Also see |profiling|.
8760 If there is an error an empty string is returned in legacy
8761 script, in Vim9 script an error is given.
8762
8763 Can also be used as a |method|: >
8764 reltime(start)->reltimestr()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008765<
8766 Return type: |String|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008767
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008768 {only available when compiled with the |+reltime| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008769
8770 *remote_expr()* *E449*
8771remote_expr({server}, {string} [, {idvar} [, {timeout}]])
Bram Moolenaar944697a2022-02-20 19:48:20 +00008772 Send the {string} to {server}. The {server} argument is a
8773 string, also see |{server}|.
8774
8775 The string is sent as an expression and the result is returned
Christian Brabandt1961caf2024-10-12 11:57:12 +02008776 after evaluation. The result must be a String or a |List|
8777 other types will be converted to String. A |List| is turned
8778 into a String by joining the items with a line break in
8779 between (not at the end), like with join(expr, "\n").
Bram Moolenaar944697a2022-02-20 19:48:20 +00008780
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008781 If {idvar} is present and not empty, it is taken as the name
8782 of a variable and a {serverid} for later use with
8783 |remote_read()| is stored there.
Bram Moolenaar944697a2022-02-20 19:48:20 +00008784
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008785 If {timeout} is given the read times out after this many
8786 seconds. Otherwise a timeout of 600 seconds is used.
Bram Moolenaar944697a2022-02-20 19:48:20 +00008787
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008788 See also |clientserver| |RemoteReply|.
8789 This function is not available in the |sandbox|.
8790 {only available when compiled with the |+clientserver| feature}
8791 Note: Any errors will cause a local error message to be issued
8792 and the result will be the empty string.
8793
8794 Variables will be evaluated in the global namespace,
8795 independent of a function currently being active. Except
8796 when in debug mode, then local function variables and
8797 arguments can be evaluated.
8798
8799 Examples: >
8800 :echo remote_expr("gvim", "2+2")
8801 :echo remote_expr("gvim1", "b:current_syntax")
8802<
8803 Can also be used as a |method|: >
8804 ServerName()->remote_expr(expr)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008805<
8806 Return type: |String| or list<{type}>
8807
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008808
8809remote_foreground({server}) *remote_foreground()*
8810 Move the Vim server with the name {server} to the foreground.
Bram Moolenaar944697a2022-02-20 19:48:20 +00008811 The {server} argument is a string, also see |{server}|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008812 This works like: >
8813 remote_expr({server}, "foreground()")
8814< Except that on Win32 systems the client does the work, to work
8815 around the problem that the OS doesn't always allow the server
8816 to bring itself to the foreground.
8817 Note: This does not restore the window if it was minimized,
8818 like foreground() does.
8819 This function is not available in the |sandbox|.
8820
8821 Can also be used as a |method|: >
8822 ServerName()->remote_foreground()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008823<
8824 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008825
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008826 {only in the Win32, Motif and GTK GUI versions and the
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008827 Win32 console version}
8828
8829
8830remote_peek({serverid} [, {retvar}]) *remote_peek()*
8831 Returns a positive number if there are available strings
8832 from {serverid}. Copies any reply string into the variable
8833 {retvar} if specified. {retvar} must be a string with the
8834 name of a variable.
8835 Returns zero if none are available.
8836 Returns -1 if something is wrong.
8837 See also |clientserver|.
8838 This function is not available in the |sandbox|.
8839 {only available when compiled with the |+clientserver| feature}
8840 Examples: >
Bram Moolenaarf269eab2022-10-03 18:04:35 +01008841 :let repl = ""
8842 :echo "PEEK: " .. remote_peek(id, "repl") .. ": " .. repl
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008843
8844< Can also be used as a |method|: >
8845 ServerId()->remote_peek()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008846<
8847 Return type: |Number|
8848
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008849
8850remote_read({serverid}, [{timeout}]) *remote_read()*
8851 Return the oldest available reply from {serverid} and consume
8852 it. Unless a {timeout} in seconds is given, it blocks until a
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008853 reply is available. Returns an empty string, if a reply is
8854 not available or on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008855 See also |clientserver|.
8856 This function is not available in the |sandbox|.
8857 {only available when compiled with the |+clientserver| feature}
8858 Example: >
8859 :echo remote_read(id)
8860
8861< Can also be used as a |method|: >
8862 ServerId()->remote_read()
8863<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008864 Return type: |String|
8865
8866
8867remote_send({server}, {string} [, {idvar}]) *remote_send()* *E241*
Bram Moolenaar944697a2022-02-20 19:48:20 +00008868 Send the {string} to {server}. The {server} argument is a
8869 string, also see |{server}|.
8870
8871 The string is sent as input keys and the function returns
8872 immediately. At the Vim server the keys are not mapped
8873 |:map|.
8874
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008875 If {idvar} is present, it is taken as the name of a variable
8876 and a {serverid} for later use with remote_read() is stored
8877 there.
Bram Moolenaar944697a2022-02-20 19:48:20 +00008878
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008879 See also |clientserver| |RemoteReply|.
8880 This function is not available in the |sandbox|.
8881 {only available when compiled with the |+clientserver| feature}
8882
8883 Note: Any errors will be reported in the server and may mess
8884 up the display.
8885 Examples: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008886 :echo remote_send("gvim", ":DropAndReply " .. file, "serverid") ..
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008887 \ remote_read(serverid)
8888
8889 :autocmd NONE RemoteReply *
8890 \ echo remote_read(expand("<amatch>"))
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008891 :echo remote_send("gvim", ":sleep 10 | echo " ..
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008892 \ 'server2client(expand("<client>"), "HELLO")<CR>')
8893<
8894 Can also be used as a |method|: >
8895 ServerName()->remote_send(keys)
8896<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008897 Return type: |String|
8898
8899
8900remote_startserver({name}) *remote_startserver()* *E941* *E942*
h-east17b69512023-05-01 22:36:56 +01008901 Become the server {name}. {name} must be a non-empty string.
8902 This fails if already running as a server, when |v:servername|
8903 is not empty.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008904
8905 Can also be used as a |method|: >
8906 ServerName()->remote_startserver()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008907<
8908 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008909
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008910 {only available when compiled with the |+clientserver| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008911
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008912
8913remove({list}, {idx}) *remove()*
8914remove({list}, {idx}, {end})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008915 Without {end}: Remove the item at {idx} from |List| {list} and
8916 return the item.
8917 With {end}: Remove items from {idx} to {end} (inclusive) and
8918 return a |List| with these items. When {idx} points to the same
8919 item as {end} a list with one item is returned. When {end}
8920 points to an item before {idx} this is an error.
8921 See |list-index| for possible values of {idx} and {end}.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008922 Returns zero on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008923 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008924 :echo "last item: " .. remove(mylist, -1)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008925 :call remove(mylist, 0, 9)
8926<
8927 Use |delete()| to remove a file.
8928
8929 Can also be used as a |method|: >
8930 mylist->remove(idx)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008931<
8932 Return type: any, depending on {list}
8933
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008934
Bram Moolenaarf269eab2022-10-03 18:04:35 +01008935remove({blob}, {idx})
8936remove({blob}, {idx}, {end})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008937 Without {end}: Remove the byte at {idx} from |Blob| {blob} and
8938 return the byte.
8939 With {end}: Remove bytes from {idx} to {end} (inclusive) and
8940 return a |Blob| with these bytes. When {idx} points to the same
8941 byte as {end} a |Blob| with one byte is returned. When {end}
8942 points to a byte before {idx} this is an error.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008943 Returns zero on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008944 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008945 :echo "last byte: " .. remove(myblob, -1)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008946 :call remove(mylist, 0, 9)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008947<
8948 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008949
8950remove({dict}, {key})
8951 Remove the entry from {dict} with key {key} and return it.
8952 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008953 :echo "removed " .. remove(dict, "one")
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008954< If there is no {key} in {dict} this is an error.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008955 Returns zero on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008956
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008957 Return type: any, depending on {dict}
8958
8959
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008960rename({from}, {to}) *rename()*
8961 Rename the file by the name {from} to the name {to}. This
8962 should also work to move files across file systems. The
8963 result is a Number, which is 0 if the file was renamed
8964 successfully, and non-zero when the renaming failed.
8965 NOTE: If {to} exists it is overwritten without warning.
8966 This function is not available in the |sandbox|.
8967
8968 Can also be used as a |method|: >
8969 GetOldName()->rename(newname)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008970<
8971 Return type: |Number|
8972
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008973
8974repeat({expr}, {count}) *repeat()*
8975 Repeat {expr} {count} times and return the concatenated
8976 result. Example: >
8977 :let separator = repeat('-', 80)
8978< When {count} is zero or negative the result is empty.
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01008979 When {expr} is a |List|, a |Tuple| or a |Blob| the result is
8980 {expr} concatenated {count} times. Example: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008981 :let longlist = repeat(['a', 'b'], 3)
8982< Results in ['a', 'b', 'a', 'b', 'a', 'b'].
8983
8984 Can also be used as a |method|: >
8985 mylist->repeat(count)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008986<
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01008987 Return type: |String|, |Blob|, list<{type}> or tuple<{type}>
8988 depending on {expr}
Christian Brabandt5674c9a2024-06-09 00:13:43 +02008989
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008990
8991resolve({filename}) *resolve()* *E655*
8992 On MS-Windows, when {filename} is a shortcut (a .lnk file),
8993 returns the path the shortcut points to in a simplified form.
8994 When {filename} is a symbolic link or junction point, return
8995 the full path to the target. If the target of junction is
8996 removed, return {filename}.
8997 On Unix, repeat resolving symbolic links in all path
8998 components of {filename} and return the simplified result.
8999 To cope with link cycles, resolving of symbolic links is
9000 stopped after 100 iterations.
9001 On other systems, return the simplified {filename}.
9002 The simplification step is done as by |simplify()|.
9003 resolve() keeps a leading path component specifying the
9004 current directory (provided the result is still a relative
9005 path name) and also keeps a trailing path separator.
9006
9007 Can also be used as a |method|: >
9008 GetName()->resolve()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009009<
9010 Return type: |String|
9011
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009012
9013reverse({object}) *reverse()*
Yegappan Lakshmanan03ff1c22023-05-06 14:08:21 +01009014 Reverse the order of items in {object}. {object} can be a
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01009015 |List|, a |Tuple|, a |Blob| or a |String|. For a List and a
9016 Blob the items are reversed in-place and {object} is returned.
9017 For a Tuple, a new Tuple is returned.
Yegappan Lakshmanan03ff1c22023-05-06 14:08:21 +01009018 For a String a new String is returned.
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01009019 Returns zero if {object} is not a List, Tuple, Blob or a
9020 String. If you want a List or Blob to remain unmodified make
9021 a copy first: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009022 :let revlist = reverse(copy(mylist))
9023< Can also be used as a |method|: >
9024 mylist->reverse()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009025<
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +01009026 Return type: |String|, |Blob|, list<{type}> or tuple<{type}>
9027 depending on {object}
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009028
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009029
9030round({expr}) *round()*
9031 Round off {expr} to the nearest integral value and return it
9032 as a |Float|. If {expr} lies halfway between two integral
9033 values, then use the larger one (away from zero).
9034 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01009035 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009036 Examples: >
9037 echo round(0.456)
9038< 0.0 >
9039 echo round(4.5)
9040< 5.0 >
9041 echo round(-4.5)
9042< -5.0
9043
9044 Can also be used as a |method|: >
9045 Compute()->round()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009046<
9047 Return type: |Float|
9048
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009049
9050rubyeval({expr}) *rubyeval()*
9051 Evaluate Ruby expression {expr} and return its result
9052 converted to Vim data structures.
9053 Numbers, floats and strings are returned as they are (strings
9054 are copied though).
9055 Arrays are represented as Vim |List| type.
9056 Hashes are represented as Vim |Dictionary| type.
9057 Other objects are represented as strings resulted from their
9058 "Object#to_s" method.
9059 Note that in a `:def` function local variables are not visible
9060 to {expr}.
9061
9062 Can also be used as a |method|: >
9063 GetRubyExpr()->rubyeval()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009064<
9065 Return type: any, depending on {expr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009066
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009067 {only available when compiled with the |+ruby| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009068
9069screenattr({row}, {col}) *screenattr()*
9070 Like |screenchar()|, but return the attribute. This is a rather
9071 arbitrary number that can only be used to compare to the
9072 attribute at other positions.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01009073 Returns -1 when row or col is out of range.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009074
9075 Can also be used as a |method|: >
9076 GetRow()->screenattr(col)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009077<
9078 Return type: |Number|
9079
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009080
9081screenchar({row}, {col}) *screenchar()*
9082 The result is a Number, which is the character at position
9083 [row, col] on the screen. This works for every possible
9084 screen position, also status lines, window separators and the
9085 command line. The top left position is row one, column one
9086 The character excludes composing characters. For double-byte
9087 encodings it may only be the first byte.
9088 This is mainly to be used for testing.
9089 Returns -1 when row or col is out of range.
9090
9091 Can also be used as a |method|: >
9092 GetRow()->screenchar(col)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009093<
9094 Return type: |Number|
9095
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009096
9097screenchars({row}, {col}) *screenchars()*
9098 The result is a |List| of Numbers. The first number is the same
9099 as what |screenchar()| returns. Further numbers are
9100 composing characters on top of the base character.
9101 This is mainly to be used for testing.
9102 Returns an empty List when row or col is out of range.
9103
9104 Can also be used as a |method|: >
9105 GetRow()->screenchars(col)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009106<
9107 Return type: list<number> or list<any>
9108
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009109
9110screencol() *screencol()*
9111 The result is a Number, which is the current screen column of
9112 the cursor. The leftmost column has number 1.
9113 This function is mainly used for testing.
9114
9115 Note: Always returns the current screen column, thus if used
9116 in a command (e.g. ":echo screencol()") it will return the
9117 column inside the command line, which is 1 when the command is
9118 executed. To get the cursor position in the file use one of
9119 the following mappings: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009120 nnoremap <expr> GG ":echom " .. screencol() .. "\n"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009121 nnoremap <silent> GG :echom screencol()<CR>
9122 nnoremap GG <Cmd>echom screencol()<CR>
9123<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009124 Return type: |Number|
9125
9126
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009127screenpos({winid}, {lnum}, {col}) *screenpos()*
9128 The result is a Dict with the screen position of the text
9129 character in window {winid} at buffer line {lnum} and column
9130 {col}. {col} is a one-based byte index.
9131 The Dict has these members:
9132 row screen row
9133 col first screen column
9134 endcol last screen column
9135 curscol cursor screen column
9136 If the specified position is not visible, all values are zero.
9137 The "endcol" value differs from "col" when the character
9138 occupies more than one screen cell. E.g. for a Tab "col" can
9139 be 1 and "endcol" can be 8.
9140 The "curscol" value is where the cursor would be placed. For
9141 a Tab it would be the same as "endcol", while for a double
9142 width character it would be the same as "col".
9143 The |conceal| feature is ignored here, the column numbers are
9144 as if 'conceallevel' is zero. You can set the cursor to the
9145 right position and use |screencol()| to get the value with
9146 |conceal| taken into account.
Bram Moolenaar944697a2022-02-20 19:48:20 +00009147 If the position is in a closed fold the screen position of the
9148 first character is returned, {col} is not used.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01009149 Returns an empty Dict if {winid} is invalid.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009150
9151 Can also be used as a |method|: >
9152 GetWinid()->screenpos(lnum, col)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009153<
9154 Return type: dict<number> or dict<any>
9155
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009156
9157screenrow() *screenrow()*
9158 The result is a Number, which is the current screen row of the
9159 cursor. The top line has number one.
9160 This function is mainly used for testing.
9161 Alternatively you can use |winline()|.
9162
9163 Note: Same restrictions as with |screencol()|.
9164
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009165 Return type: |Number|
9166
9167
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009168screenstring({row}, {col}) *screenstring()*
9169 The result is a String that contains the base character and
9170 any composing characters at position [row, col] on the screen.
9171 This is like |screenchars()| but returning a String with the
9172 characters.
9173 This is mainly to be used for testing.
9174 Returns an empty String when row or col is out of range.
9175
9176 Can also be used as a |method|: >
9177 GetRow()->screenstring(col)
9178<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009179 Return type: |String|
9180
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009181 *search()*
9182search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
9183 Search for regexp pattern {pattern}. The search starts at the
9184 cursor position (you can use |cursor()| to set it).
9185
9186 When a match has been found its line number is returned.
9187 If there is no match a 0 is returned and the cursor doesn't
9188 move. No error message is given.
Christian Brabandt9a660d22024-03-12 22:03:09 +01009189 To get the matched string, use |matchbufline()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009190
9191 {flags} is a String, which can contain these character flags:
9192 'b' search Backward instead of forward
9193 'c' accept a match at the Cursor position
9194 'e' move to the End of the match
9195 'n' do Not move the cursor
9196 'p' return number of matching sub-Pattern (see below)
9197 's' Set the ' mark at the previous location of the cursor
9198 'w' Wrap around the end of the file
9199 'W' don't Wrap around the end of the file
Doug Kearns8a27d972025-01-05 15:56:57 +01009200 'z' start searching at the cursor column instead of Zero
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009201 If neither 'w' or 'W' is given, the 'wrapscan' option applies.
9202
9203 If the 's' flag is supplied, the ' mark is set, only if the
9204 cursor is moved. The 's' flag cannot be combined with the 'n'
9205 flag.
9206
9207 'ignorecase', 'smartcase' and 'magic' are used.
9208
9209 When the 'z' flag is not given, forward searching always
9210 starts in column zero and then matches before the cursor are
9211 skipped. When the 'c' flag is present in 'cpo' the next
9212 search starts after the match. Without the 'c' flag the next
Bram Moolenaarfd999452022-08-24 18:30:14 +01009213 search starts one column after the start of the match. This
9214 matters for overlapping matches. See |cpo-c|. You can also
9215 insert "\ze" to change where the match ends, see |/\ze|.
9216
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009217 When searching backwards and the 'z' flag is given then the
9218 search starts in column zero, thus no match in the current
9219 line will be found (unless wrapping around the end of the
9220 file).
9221
9222 When the {stopline} argument is given then the search stops
9223 after searching this line. This is useful to restrict the
9224 search to a range of lines. Examples: >
9225 let match = search('(', 'b', line("w0"))
9226 let end = search('END', '', line("w$"))
9227< When {stopline} is used and it is not zero this also implies
9228 that the search does not wrap around the end of the file.
9229 A zero value is equal to not giving the argument.
Bram Moolenaar2ecbe532022-07-29 21:36:21 +01009230 *E1285* *E1286* *E1287* *E1288* *E1289*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009231 When the {timeout} argument is given the search stops when
9232 more than this many milliseconds have passed. Thus when
9233 {timeout} is 500 the search stops after half a second.
9234 The value must not be negative. A zero value is like not
9235 giving the argument.
Christian Brabandtd657d3d2024-09-10 21:55:49 +02009236
9237 Note: the timeout is only considered when searching, not
9238 while evaluating the {skip} expression.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009239 {only available when compiled with the |+reltime| feature}
9240
9241 If the {skip} expression is given it is evaluated with the
9242 cursor positioned on the start of a match. If it evaluates to
9243 non-zero this match is skipped. This can be used, for
9244 example, to skip a match in a comment or a string.
9245 {skip} can be a string, which is evaluated as an expression, a
9246 function reference or a lambda.
9247 When {skip} is omitted or empty, every match is accepted.
9248 When evaluating {skip} causes an error the search is aborted
9249 and -1 returned.
9250 *search()-sub-match*
9251 With the 'p' flag the returned value is one more than the
9252 first sub-match in \(\). One if none of them matched but the
9253 whole pattern did match.
9254 To get the column number too use |searchpos()|.
9255
9256 The cursor will be positioned at the match, unless the 'n'
9257 flag is used.
9258
9259 Example (goes over all files in the argument list): >
9260 :let n = 1
9261 :while n <= argc() " loop over all files in arglist
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009262 : exe "argument " .. n
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009263 : " start at the last char in the file and wrap for the
9264 : " first search to find match at start of file
9265 : normal G$
9266 : let flags = "w"
9267 : while search("foo", flags) > 0
9268 : s/foo/bar/g
9269 : let flags = "W"
9270 : endwhile
9271 : update " write the file if modified
9272 : let n = n + 1
9273 :endwhile
9274<
9275 Example for using some flags: >
9276 :echo search('\<if\|\(else\)\|\(endif\)', 'ncpe')
9277< This will search for the keywords "if", "else", and "endif"
9278 under or after the cursor. Because of the 'p' flag, it
9279 returns 1, 2, or 3 depending on which keyword is found, or 0
9280 if the search fails. With the cursor on the first word of the
9281 line:
9282 if (foo == 0) | let foo = foo + 1 | endif ~
9283 the function returns 1. Without the 'c' flag, the function
9284 finds the "endif" and returns 3. The same thing happens
9285 without the 'e' flag if the cursor is on the "f" of "if".
9286 The 'n' flag tells the function not to move the cursor.
9287
9288 Can also be used as a |method|: >
9289 GetPattern()->search()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009290<
9291 Return type: |Number|
9292
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009293
9294searchcount([{options}]) *searchcount()*
9295 Get or update the last search count, like what is displayed
9296 without the "S" flag in 'shortmess'. This works even if
9297 'shortmess' does contain the "S" flag.
9298
9299 This returns a |Dictionary|. The dictionary is empty if the
9300 previous pattern was not set and "pattern" was not specified.
9301
9302 key type meaning ~
9303 current |Number| current position of match;
9304 0 if the cursor position is
9305 before the first match
9306 exact_match |Boolean| 1 if "current" is matched on
9307 "pos", otherwise 0
9308 total |Number| total count of matches found
9309 incomplete |Number| 0: search was fully completed
9310 1: recomputing was timed out
9311 2: max count exceeded
9312
9313 For {options} see further down.
9314
9315 To get the last search count when |n| or |N| was pressed, call
9316 this function with `recompute: 0` . This sometimes returns
9317 wrong information because |n| and |N|'s maximum count is 99.
9318 If it exceeded 99 the result must be max count + 1 (100). If
9319 you want to get correct information, specify `recompute: 1`: >
9320
9321 " result == maxcount + 1 (100) when many matches
9322 let result = searchcount(#{recompute: 0})
9323
9324 " Below returns correct result (recompute defaults
9325 " to 1)
9326 let result = searchcount()
9327<
Bram Moolenaarb529cfb2022-07-25 15:42:07 +01009328 The function is useful to add the count to 'statusline': >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009329 function! LastSearchCount() abort
9330 let result = searchcount(#{recompute: 0})
9331 if empty(result)
9332 return ''
9333 endif
9334 if result.incomplete ==# 1 " timed out
9335 return printf(' /%s [?/??]', @/)
9336 elseif result.incomplete ==# 2 " max count exceeded
9337 if result.total > result.maxcount &&
9338 \ result.current > result.maxcount
9339 return printf(' /%s [>%d/>%d]', @/,
9340 \ result.current, result.total)
9341 elseif result.total > result.maxcount
9342 return printf(' /%s [%d/>%d]', @/,
9343 \ result.current, result.total)
9344 endif
9345 endif
9346 return printf(' /%s [%d/%d]', @/,
9347 \ result.current, result.total)
9348 endfunction
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009349 let &statusline ..= '%{LastSearchCount()}'
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009350
9351 " Or if you want to show the count only when
9352 " 'hlsearch' was on
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009353 " let &statusline ..=
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009354 " \ '%{v:hlsearch ? LastSearchCount() : ""}'
9355<
9356 You can also update the search count, which can be useful in a
9357 |CursorMoved| or |CursorMovedI| autocommand: >
9358
9359 autocmd CursorMoved,CursorMovedI *
9360 \ let s:searchcount_timer = timer_start(
9361 \ 200, function('s:update_searchcount'))
9362 function! s:update_searchcount(timer) abort
9363 if a:timer ==# s:searchcount_timer
9364 call searchcount(#{
9365 \ recompute: 1, maxcount: 0, timeout: 100})
9366 redrawstatus
9367 endif
9368 endfunction
9369<
9370 This can also be used to count matched texts with specified
9371 pattern in the current buffer using "pattern": >
9372
9373 " Count '\<foo\>' in this buffer
9374 " (Note that it also updates search count)
9375 let result = searchcount(#{pattern: '\<foo\>'})
9376
9377 " To restore old search count by old pattern,
9378 " search again
9379 call searchcount()
9380<
9381 {options} must be a |Dictionary|. It can contain:
9382 key type meaning ~
9383 recompute |Boolean| if |TRUE|, recompute the count
9384 like |n| or |N| was executed.
9385 otherwise returns the last
9386 computed result (when |n| or
9387 |N| was used when "S" is not
9388 in 'shortmess', or this
9389 function was called).
9390 (default: |TRUE|)
9391 pattern |String| recompute if this was given
9392 and different with |@/|.
9393 this works as same as the
9394 below command is executed
9395 before calling this function >
9396 let @/ = pattern
9397< (default: |@/|)
9398 timeout |Number| 0 or negative number is no
9399 timeout. timeout milliseconds
9400 for recomputing the result
9401 (default: 0)
9402 maxcount |Number| 0 or negative number is no
9403 limit. max count of matched
9404 text while recomputing the
9405 result. if search exceeded
9406 total count, "total" value
9407 becomes `maxcount + 1`
9408 (default: 99)
9409 pos |List| `[lnum, col, off]` value
9410 when recomputing the result.
9411 this changes "current" result
9412 value. see |cursor()|,
9413 |getpos()|
9414 (default: cursor's position)
9415
9416 Can also be used as a |method|: >
9417 GetSearchOpts()->searchcount()
9418<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009419 Return type: dict<number>
9420
9421
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009422searchdecl({name} [, {global} [, {thisblock}]]) *searchdecl()*
9423 Search for the declaration of {name}.
9424
9425 With a non-zero {global} argument it works like |gD|, find
9426 first match in the file. Otherwise it works like |gd|, find
9427 first match in the function.
9428
9429 With a non-zero {thisblock} argument matches in a {} block
9430 that ends before the cursor position are ignored. Avoids
9431 finding variable declarations only valid in another scope.
9432
9433 Moves the cursor to the found match.
9434 Returns zero for success, non-zero for failure.
9435 Example: >
9436 if searchdecl('myvar') == 0
9437 echo getline('.')
9438 endif
9439<
9440 Can also be used as a |method|: >
9441 GetName()->searchdecl()
9442<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009443 Return type: |Number|
9444
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009445 *searchpair()*
9446searchpair({start}, {middle}, {end} [, {flags} [, {skip}
9447 [, {stopline} [, {timeout}]]]])
9448 Search for the match of a nested start-end pair. This can be
9449 used to find the "endif" that matches an "if", while other
9450 if/endif pairs in between are ignored.
9451 The search starts at the cursor. The default is to search
9452 forward, include 'b' in {flags} to search backward.
9453 If a match is found, the cursor is positioned at it and the
9454 line number is returned. If no match is found 0 or -1 is
9455 returned and the cursor doesn't move. No error message is
9456 given.
9457
9458 {start}, {middle} and {end} are patterns, see |pattern|. They
9459 must not contain \( \) pairs. Use of \%( \) is allowed. When
9460 {middle} is not empty, it is found when searching from either
9461 direction, but only when not in a nested start-end pair. A
9462 typical use is: >
9463 searchpair('\<if\>', '\<else\>', '\<endif\>')
9464< By leaving {middle} empty the "else" is skipped.
9465
9466 {flags} 'b', 'c', 'n', 's', 'w' and 'W' are used like with
9467 |search()|. Additionally:
9468 'r' Repeat until no more matches found; will find the
9469 outer pair. Implies the 'W' flag.
9470 'm' Return number of matches instead of line number with
9471 the match; will be > 1 when 'r' is used.
9472 Note: it's nearly always a good idea to use the 'W' flag, to
9473 avoid wrapping around the end of the file.
9474
9475 When a match for {start}, {middle} or {end} is found, the
9476 {skip} expression is evaluated with the cursor positioned on
9477 the start of the match. It should return non-zero if this
9478 match is to be skipped. E.g., because it is inside a comment
9479 or a string.
9480 When {skip} is omitted or empty, every match is accepted.
9481 When evaluating {skip} causes an error the search is aborted
9482 and -1 returned.
9483 {skip} can be a string, a lambda, a funcref or a partial.
9484 Anything else makes the function fail.
9485 In a `:def` function when the {skip} argument is a string
9486 constant it is compiled into instructions.
9487
9488 For {stopline} and {timeout} see |search()|.
9489
9490 The value of 'ignorecase' is used. 'magic' is ignored, the
9491 patterns are used like it's on.
9492
9493 The search starts exactly at the cursor. A match with
9494 {start}, {middle} or {end} at the next character, in the
9495 direction of searching, is the first one found. Example: >
9496 if 1
9497 if 2
9498 endif 2
9499 endif 1
9500< When starting at the "if 2", with the cursor on the "i", and
9501 searching forwards, the "endif 2" is found. When starting on
9502 the character just before the "if 2", the "endif 1" will be
9503 found. That's because the "if 2" will be found first, and
9504 then this is considered to be a nested if/endif from "if 2" to
9505 "endif 2".
9506 When searching backwards and {end} is more than one character,
9507 it may be useful to put "\zs" at the end of the pattern, so
9508 that when the cursor is inside a match with the end it finds
9509 the matching start.
9510
9511 Example, to find the "endif" command in a Vim script: >
9512
9513 :echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W',
9514 \ 'getline(".") =~ "^\\s*\""')
9515
9516< The cursor must be at or after the "if" for which a match is
9517 to be found. Note that single-quote strings are used to avoid
9518 having to double the backslashes. The skip expression only
9519 catches comments at the start of a line, not after a command.
9520 Also, a word "en" or "if" halfway a line is considered a
9521 match.
9522 Another example, to search for the matching "{" of a "}": >
9523
9524 :echo searchpair('{', '', '}', 'bW')
9525
9526< This works when the cursor is at or before the "}" for which a
9527 match is to be found. To reject matches that syntax
9528 highlighting recognized as strings: >
9529
9530 :echo searchpair('{', '', '}', 'bW',
9531 \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
9532<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009533 Return type: |Number|
9534
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009535 *searchpairpos()*
9536searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
9537 [, {stopline} [, {timeout}]]]])
9538 Same as |searchpair()|, but returns a |List| with the line and
9539 column position of the match. The first element of the |List|
9540 is the line number and the second element is the byte index of
9541 the column position of the match. If no match is found,
9542 returns [0, 0]. >
9543
9544 :let [lnum,col] = searchpairpos('{', '', '}', 'n')
9545<
9546 See |match-parens| for a bigger and more useful example.
9547
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009548 Return type: list<number>
9549
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009550 *searchpos()*
9551searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
9552 Same as |search()|, but returns a |List| with the line and
9553 column position of the match. The first element of the |List|
9554 is the line number and the second element is the byte index of
9555 the column position of the match. If no match is found,
9556 returns [0, 0].
9557 Example: >
9558 :let [lnum, col] = searchpos('mypattern', 'n')
9559
9560< When the 'p' flag is given then there is an extra item with
9561 the sub-pattern match number |search()-sub-match|. Example: >
9562 :let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np')
9563< In this example "submatch" is 2 when a lowercase letter is
9564 found |/\l|, 3 when an uppercase letter is found |/\u|.
9565
9566 Can also be used as a |method|: >
9567 GetPattern()->searchpos()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009568<
9569 Return type: list<number>
9570
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009571
9572server2client({clientid}, {string}) *server2client()*
9573 Send a reply string to {clientid}. The most recent {clientid}
9574 that sent a string can be retrieved with expand("<client>").
9575 {only available when compiled with the |+clientserver| feature}
9576 Returns zero for success, -1 for failure.
9577 Note:
9578 This id has to be stored before the next command can be
9579 received. I.e. before returning from the received command and
9580 before calling any commands that waits for input.
9581 See also |clientserver|.
9582 Example: >
9583 :echo server2client(expand("<client>"), "HELLO")
9584
9585< Can also be used as a |method|: >
9586 GetClientId()->server2client(string)
9587<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009588 Return type: |Number|
9589
9590
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009591serverlist() *serverlist()*
9592 Return a list of available server names, one per line.
9593 When there are no servers or the information is not available
9594 an empty string is returned. See also |clientserver|.
9595 {only available when compiled with the |+clientserver| feature}
9596 Example: >
9597 :echo serverlist()
9598<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009599 Return type: |String|
9600
9601
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009602setbufline({buf}, {lnum}, {text}) *setbufline()*
9603 Set line {lnum} to {text} in buffer {buf}. This works like
9604 |setline()| for the specified buffer.
9605
9606 This function works only for loaded buffers. First call
9607 |bufload()| if needed.
9608
9609 To insert lines use |appendbufline()|.
9610 Any text properties in {lnum} are cleared.
9611
Bram Moolenaarcd9c8d42022-11-05 23:46:43 +00009612 {text} can be a string to set one line, or a List of strings
9613 to set multiple lines. If the List extends below the last
9614 line then those lines are added. If the List is empty then
9615 nothing is changed and zero is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009616
9617 For the use of {buf}, see |bufname()| above.
9618
9619 {lnum} is used like with |setline()|.
9620 Use "$" to refer to the last line in buffer {buf}.
9621 When {lnum} is just below the last line the {text} will be
9622 added below the last line.
9623
9624 When {buf} is not a valid buffer, the buffer is not loaded or
9625 {lnum} is not valid then 1 is returned. In |Vim9| script an
9626 error is given.
9627 On success 0 is returned.
9628
9629 Can also be used as a |method|, the base is passed as the
9630 third argument: >
9631 GetText()->setbufline(buf, lnum)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009632<
9633 Return type: |Number|
9634
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009635
9636setbufvar({buf}, {varname}, {val}) *setbufvar()*
9637 Set option or local variable {varname} in buffer {buf} to
9638 {val}.
9639 This also works for a global or local window option, but it
9640 doesn't work for a global or local window variable.
9641 For a local window option the global value is unchanged.
9642 For the use of {buf}, see |bufname()| above.
9643 The {varname} argument is a string.
9644 Note that the variable name without "b:" must be used.
9645 Examples: >
9646 :call setbufvar(1, "&mod", 1)
9647 :call setbufvar("todo", "myvar", "foobar")
9648< This function is not available in the |sandbox|.
9649
9650 Can also be used as a |method|, the base is passed as the
9651 third argument: >
9652 GetValue()->setbufvar(buf, varname)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009653<
9654 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009655
9656
9657setcellwidths({list}) *setcellwidths()*
9658 Specify overrides for cell widths of character ranges. This
Bram Moolenaarb59ae592022-11-23 23:46:31 +00009659 tells Vim how wide characters are when displayed in the
9660 terminal, counted in screen cells. The values override
9661 'ambiwidth'. Example: >
9662 call setcellwidths([
Bram Moolenaar938ae282023-02-20 20:44:55 +00009663 \ [0x111, 0x111, 1],
Bram Moolenaarb59ae592022-11-23 23:46:31 +00009664 \ [0x2194, 0x2199, 2],
9665 \ ])
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009666
Bram Moolenaarb59ae592022-11-23 23:46:31 +00009667< The {list} argument is a List of Lists with each three
9668 numbers: [{low}, {high}, {width}]. *E1109* *E1110*
9669 {low} and {high} can be the same, in which case this refers to
9670 one character. Otherwise it is the range of characters from
9671 {low} to {high} (inclusive). *E1111* *E1114*
K.Takata71933232023-01-20 16:00:55 +00009672 Only characters with value 0x80 and higher can be used.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009673
Bram Moolenaarb59ae592022-11-23 23:46:31 +00009674 {width} must be either 1 or 2, indicating the character width
9675 in screen cells. *E1112*
9676 An error is given if the argument is invalid, also when a
Bram Moolenaar938ae282023-02-20 20:44:55 +00009677 range overlaps with another. *E1113*
Bram Moolenaarb59ae592022-11-23 23:46:31 +00009678
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009679 If the new value causes 'fillchars' or 'listchars' to become
9680 invalid it is rejected and an error is given.
9681
Bram Moolenaarb59ae592022-11-23 23:46:31 +00009682 To clear the overrides pass an empty {list}: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009683 setcellwidths([]);
Bram Moolenaarb59ae592022-11-23 23:46:31 +00009684
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009685< You can use the script $VIMRUNTIME/tools/emoji_list.vim to see
Bram Moolenaarb59ae592022-11-23 23:46:31 +00009686 the effect for known emoji characters. Move the cursor
9687 through the text to check if the cell widths of your terminal
9688 match with what Vim knows about each emoji. If it doesn't
9689 look right you need to adjust the {list} argument.
9690
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009691 Return type: |Number|
9692
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009693
9694setcharpos({expr}, {list}) *setcharpos()*
9695 Same as |setpos()| but uses the specified column number as the
9696 character index instead of the byte index in the line.
9697
9698 Example:
9699 With the text "여보세요" in line 8: >
9700 call setcharpos('.', [0, 8, 4, 0])
9701< positions the cursor on the fourth character '요'. >
9702 call setpos('.', [0, 8, 4, 0])
9703< positions the cursor on the second character '보'.
9704
9705 Can also be used as a |method|: >
9706 GetPosition()->setcharpos('.')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009707<
9708 Return type: |Number|
9709
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009710
9711setcharsearch({dict}) *setcharsearch()*
9712 Set the current character search information to {dict},
9713 which contains one or more of the following entries:
9714
9715 char character which will be used for a subsequent
9716 |,| or |;| command; an empty string clears the
9717 character search
9718 forward direction of character search; 1 for forward,
9719 0 for backward
9720 until type of character search; 1 for a |t| or |T|
9721 character search, 0 for an |f| or |F|
9722 character search
9723
9724 This can be useful to save/restore a user's character search
9725 from a script: >
9726 :let prevsearch = getcharsearch()
9727 :" Perform a command which clobbers user's search
9728 :call setcharsearch(prevsearch)
9729< Also see |getcharsearch()|.
9730
9731 Can also be used as a |method|: >
9732 SavedSearch()->setcharsearch()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009733<
9734 Return type: dict<any>
9735
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009736
Shougo Matsushita07ea5f12022-08-27 12:22:25 +01009737setcmdline({str} [, {pos}]) *setcmdline()*
9738 Set the command line to {str} and set the cursor position to
9739 {pos}.
9740 If {pos} is omitted, the cursor is positioned after the text.
9741 Returns 0 when successful, 1 when not editing the command
9742 line.
9743
9744 Can also be used as a |method|: >
9745 GetText()->setcmdline()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009746<
9747 Return type: |Number|
9748
Shougo Matsushita07ea5f12022-08-27 12:22:25 +01009749
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009750setcmdpos({pos}) *setcmdpos()*
9751 Set the cursor position in the command line to byte position
9752 {pos}. The first position is 1.
9753 Use |getcmdpos()| to obtain the current position.
9754 Only works while editing the command line, thus you must use
9755 |c_CTRL-\_e|, |c_CTRL-R_=| or |c_CTRL-R_CTRL-R| with '='. For
9756 |c_CTRL-\_e| and |c_CTRL-R_CTRL-R| with '=' the position is
9757 set after the command line is set to the expression. For
9758 |c_CTRL-R_=| it is set after evaluating the expression but
9759 before inserting the resulting text.
9760 When the number is too big the cursor is put at the end of the
9761 line. A number smaller than one has undefined results.
Shougo Matsushita07ea5f12022-08-27 12:22:25 +01009762 Returns 0 when successful, 1 when not editing the command
9763 line.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009764
9765 Can also be used as a |method|: >
9766 GetPos()->setcmdpos()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009767<
9768 Return type: |Number|
9769
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009770
9771setcursorcharpos({lnum}, {col} [, {off}]) *setcursorcharpos()*
9772setcursorcharpos({list})
9773 Same as |cursor()| but uses the specified column number as the
9774 character index instead of the byte index in the line.
9775
9776 Example:
9777 With the text "여보세요" in line 4: >
9778 call setcursorcharpos(4, 3)
9779< positions the cursor on the third character '세'. >
9780 call cursor(4, 3)
9781< positions the cursor on the first character '여'.
9782
9783 Can also be used as a |method|: >
9784 GetCursorPos()->setcursorcharpos()
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009785<
9786 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009787
9788
9789setenv({name}, {val}) *setenv()*
9790 Set environment variable {name} to {val}. Example: >
9791 call setenv('HOME', '/home/myhome')
9792
9793< When {val} is |v:null| the environment variable is deleted.
9794 See also |expr-env|.
9795
9796 Can also be used as a |method|, the base is passed as the
9797 second argument: >
9798 GetPath()->setenv('PATH')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009799<
9800 Return type: |Number|
9801
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009802
9803setfperm({fname}, {mode}) *setfperm()* *chmod*
9804 Set the file permissions for {fname} to {mode}.
9805 {mode} must be a string with 9 characters. It is of the form
9806 "rwxrwxrwx", where each group of "rwx" flags represent, in
9807 turn, the permissions of the owner of the file, the group the
9808 file belongs to, and other users. A '-' character means the
9809 permission is off, any other character means on. Multi-byte
9810 characters are not supported.
9811
9812 For example "rw-r-----" means read-write for the user,
9813 readable by the group, not accessible by others. "xx-x-----"
9814 would do the same thing.
9815
9816 Returns non-zero for success, zero for failure.
9817
9818 Can also be used as a |method|: >
9819 GetFilename()->setfperm(mode)
9820<
9821 To read permissions see |getfperm()|.
9822
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009823 Return type: |Number|
9824
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009825
9826setline({lnum}, {text}) *setline()*
9827 Set line {lnum} of the current buffer to {text}. To insert
9828 lines use |append()|. To set lines in another buffer use
Christian Brabandt946f61c2024-06-17 13:17:58 +02009829 |setbufline()|.
h-east52e7cc22024-07-28 17:03:29 +02009830 Any text properties in {lnum} are cleared. See
9831 |text-prop-cleared|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009832
9833 {lnum} is used like with |getline()|.
9834 When {lnum} is just below the last line the {text} will be
9835 added below the last line.
9836 {text} can be any type or a List of any type, each item is
Bram Moolenaarcd9c8d42022-11-05 23:46:43 +00009837 converted to a String. When {text} is an empty List then
9838 nothing is changed and FALSE is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009839
9840 If this succeeds, FALSE is returned. If this fails (most likely
9841 because {lnum} is invalid) TRUE is returned.
9842 In |Vim9| script an error is given if {lnum} is invalid.
9843
9844 Example: >
9845 :call setline(5, strftime("%c"))
9846
9847< When {text} is a |List| then line {lnum} and following lines
9848 will be set to the items in the list. Example: >
9849 :call setline(5, ['aaa', 'bbb', 'ccc'])
9850< This is equivalent to: >
9851 :for [n, l] in [[5, 'aaa'], [6, 'bbb'], [7, 'ccc']]
9852 : call setline(n, l)
9853 :endfor
9854
9855< Note: The '[ and '] marks are not set.
9856
9857 Can also be used as a |method|, the base is passed as the
9858 second argument: >
9859 GetText()->setline(lnum)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009860<
9861 Return type: |Number|
9862
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009863
9864setloclist({nr}, {list} [, {action} [, {what}]]) *setloclist()*
9865 Create or replace or add to the location list for window {nr}.
9866 {nr} can be the window number or the |window-ID|.
9867 When {nr} is zero the current window is used.
9868
9869 For a location list window, the displayed location list is
9870 modified. For an invalid window number {nr}, -1 is returned.
9871 Otherwise, same as |setqflist()|.
9872 Also see |location-list|.
9873
9874 For {action} see |setqflist-action|.
9875
9876 If the optional {what} dictionary argument is supplied, then
9877 only the items listed in {what} are set. Refer to |setqflist()|
9878 for the list of supported keys in {what}.
9879
9880 Can also be used as a |method|, the base is passed as the
9881 second argument: >
9882 GetLoclist()->setloclist(winnr)
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009883<
9884 Return type: |Number|
9885
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009886
9887setmatches({list} [, {win}]) *setmatches()*
9888 Restores a list of matches saved by |getmatches()| for the
9889 current window. Returns 0 if successful, otherwise -1. All
9890 current matches are cleared before the list is restored. See
9891 example for |getmatches()|.
9892 If {win} is specified, use the window with this number or
9893 window ID instead of the current window.
9894
9895 Can also be used as a |method|: >
9896 GetMatches()->setmatches()
9897<
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009898 Return type: |Number|
9899
9900
9901setpos({expr}, {list}) *setpos()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009902 Set the position for String {expr}. Possible values:
9903 . the cursor
9904 'x mark x
9905
9906 {list} must be a |List| with four or five numbers:
9907 [bufnum, lnum, col, off]
9908 [bufnum, lnum, col, off, curswant]
9909
9910 "bufnum" is the buffer number. Zero can be used for the
9911 current buffer. When setting an uppercase mark "bufnum" is
9912 used for the mark position. For other marks it specifies the
9913 buffer to set the mark in. You can use the |bufnr()| function
9914 to turn a file name into a buffer number.
9915 For setting the cursor and the ' mark "bufnum" is ignored,
9916 since these are associated with a window, not a buffer.
9917 Does not change the jumplist.
9918
9919 "lnum" and "col" are the position in the buffer. The first
9920 column is 1. Use a zero "lnum" to delete a mark. If "col" is
9921 smaller than 1 then 1 is used. To use the character count
9922 instead of the byte count, use |setcharpos()|.
9923
9924 The "off" number is only used when 'virtualedit' is set. Then
9925 it is the offset in screen columns from the start of the
9926 character. E.g., a position within a <Tab> or after the last
9927 character.
9928
9929 The "curswant" number is only used when setting the cursor
9930 position. It sets the preferred column for when moving the
9931 cursor vertically. When the "curswant" number is missing the
9932 preferred column is not set. When it is present and setting a
9933 mark position it is not used.
9934
9935 Note that for '< and '> changing the line number may result in
9936 the marks to be effectively be swapped, so that '< is always
9937 before '>.
9938
9939 Returns 0 when the position could be set, -1 otherwise.
9940 An error message is given if {expr} is invalid.
9941
9942 Also see |setcharpos()|, |getpos()| and |getcurpos()|.
9943
9944 This does not restore the preferred column for moving
9945 vertically; if you set the cursor position with this, |j| and
9946 |k| motions will jump to previous columns! Use |cursor()| to
9947 also set the preferred column. Also see the "curswant" key in
9948 |winrestview()|.
9949
9950 Can also be used as a |method|: >
9951 GetPosition()->setpos('.')
Christian Brabandt5674c9a2024-06-09 00:13:43 +02009952<
9953 Return type: |Number|
9954
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009955
9956setqflist({list} [, {action} [, {what}]]) *setqflist()*
9957 Create or replace or add to the quickfix list.
9958
9959 If the optional {what} dictionary argument is supplied, then
9960 only the items listed in {what} are set. The first {list}
9961 argument is ignored. See below for the supported items in
9962 {what}.
9963 *setqflist-what*
9964 When {what} is not present, the items in {list} are used. Each
9965 item must be a dictionary. Non-dictionary items in {list} are
9966 ignored. Each dictionary item can contain the following
9967 entries:
9968
9969 bufnr buffer number; must be the number of a valid
9970 buffer
9971 filename name of a file; only used when "bufnr" is not
9972 present or it is invalid.
9973 module name of a module; if given it will be used in
9974 quickfix error window instead of the filename.
9975 lnum line number in the file
Bram Moolenaara2baa732022-02-04 16:09:54 +00009976 end_lnum end of lines, if the item spans multiple lines
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009977 pattern search pattern used to locate the error
9978 col column number
9979 vcol when non-zero: "col" is visual column
9980 when zero: "col" is byte index
Bram Moolenaara2baa732022-02-04 16:09:54 +00009981 end_col end column, if the item spans multiple columns
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009982 nr error number
9983 text description of the error
9984 type single-character error type, 'E', 'W', etc.
9985 valid recognized error message
Tom Praschanca6ac992023-08-11 23:26:12 +02009986 user_data custom data associated with the item, can be
9987 any type.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009988
9989 The "col", "vcol", "nr", "type" and "text" entries are
9990 optional. Either "lnum" or "pattern" entry can be used to
9991 locate a matching error line.
9992 If the "filename" and "bufnr" entries are not present or
9993 neither the "lnum" or "pattern" entries are present, then the
9994 item will not be handled as an error line.
9995 If both "pattern" and "lnum" are present then "pattern" will
9996 be used.
9997 If the "valid" entry is not supplied, then the valid flag is
9998 set when "bufnr" is a valid buffer or "filename" exists.
9999 If you supply an empty {list}, the quickfix list will be
10000 cleared.
10001 Note that the list is not exactly the same as what
10002 |getqflist()| returns.
10003
10004 {action} values: *setqflist-action* *E927*
10005 'a' The items from {list} are added to the existing
10006 quickfix list. If there is no existing list, then a
10007 new list is created.
10008
10009 'r' The items from the current quickfix list are replaced
10010 with the items from {list}. This can also be used to
10011 clear the list: >
10012 :call setqflist([], 'r')
10013<
Jeremy Fleischman27fbf6e2024-10-14 20:46:27 +020010014 'u' Like 'r', but tries to preserve the current selection
10015 in the quickfix list.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010016 'f' All the quickfix lists in the quickfix stack are
10017 freed.
10018
10019 If {action} is not present or is set to ' ', then a new list
10020 is created. The new quickfix list is added after the current
10021 quickfix list in the stack and all the following lists are
10022 freed. To add a new quickfix list at the end of the stack,
10023 set "nr" in {what} to "$".
10024
10025 The following items can be specified in dictionary {what}:
10026 context quickfix list context. See |quickfix-context|
10027 efm errorformat to use when parsing text from
10028 "lines". If this is not present, then the
10029 'errorformat' option value is used.
10030 See |quickfix-parse|
10031 id quickfix list identifier |quickfix-ID|
10032 idx index of the current entry in the quickfix
10033 list specified by 'id' or 'nr'. If set to '$',
10034 then the last entry in the list is set as the
10035 current entry. See |quickfix-index|
10036 items list of quickfix entries. Same as the {list}
10037 argument.
10038 lines use 'errorformat' to parse a list of lines and
10039 add the resulting entries to the quickfix list
10040 {nr} or {id}. Only a |List| value is supported.
10041 See |quickfix-parse|
10042 nr list number in the quickfix stack; zero
10043 means the current quickfix list and "$" means
10044 the last quickfix list.
10045 quickfixtextfunc
10046 function to get the text to display in the
10047 quickfix window. The value can be the name of
10048 a function or a funcref or a lambda. Refer to
10049 |quickfix-window-function| for an explanation
10050 of how to write the function and an example.
10051 title quickfix list title text. See |quickfix-title|
10052 Unsupported keys in {what} are ignored.
10053 If the "nr" item is not present, then the current quickfix list
10054 is modified. When creating a new quickfix list, "nr" can be
10055 set to a value one greater than the quickfix stack size.
10056 When modifying a quickfix list, to guarantee that the correct
10057 list is modified, "id" should be used instead of "nr" to
10058 specify the list.
10059
10060 Examples (See also |setqflist-examples|): >
10061 :call setqflist([], 'r', {'title': 'My search'})
10062 :call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
10063 :call setqflist([], 'a', {'id':qfid, 'lines':["F1:10:L10"]})
10064<
10065 Returns zero for success, -1 for failure.
10066
10067 This function can be used to create a quickfix list
10068 independent of the 'errorformat' setting. Use a command like
10069 `:cc 1` to jump to the first position.
10070
10071 Can also be used as a |method|, the base is passed as the
10072 second argument: >
10073 GetErrorlist()->setqflist()
10074<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010075 Return type: |Number|
10076
10077
10078setreg({regname}, {value} [, {options}]) *setreg()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010079 Set the register {regname} to {value}.
10080 If {regname} is "" or "@", the unnamed register '"' is used.
10081 The {regname} argument is a string. In |Vim9-script|
10082 {regname} must be one character.
10083
10084 {value} may be any value returned by |getreg()| or
10085 |getreginfo()|, including a |List| or |Dict|.
10086 If {options} contains "a" or {regname} is upper case,
10087 then the value is appended.
10088
10089 {options} can also contain a register type specification:
10090 "c" or "v" |characterwise| mode
10091 "l" or "V" |linewise| mode
10092 "b" or "<CTRL-V>" |blockwise-visual| mode
10093 If a number immediately follows "b" or "<CTRL-V>" then this is
10094 used as the width of the selection - if it is not specified
10095 then the width of the block is set to the number of characters
10096 in the longest line (counting a <Tab> as 1 character).
10097
10098 If {options} contains no register settings, then the default
10099 is to use character mode unless {value} ends in a <NL> for
10100 string {value} and linewise mode for list {value}. Blockwise
10101 mode is never selected automatically.
10102 Returns zero for success, non-zero for failure.
10103
10104 *E883*
10105 Note: you may not use |List| containing more than one item to
10106 set search and expression registers. Lists containing no
10107 items act like empty strings.
10108
10109 Examples: >
10110 :call setreg(v:register, @*)
10111 :call setreg('*', @%, 'ac')
10112 :call setreg('a', "1\n2\n3", 'b5')
10113 :call setreg('"', { 'points_to': 'a'})
10114
10115< This example shows using the functions to save and restore a
10116 register: >
10117 :let var_a = getreginfo()
10118 :call setreg('a', var_a)
10119< or: >
10120 :let var_a = getreg('a', 1, 1)
10121 :let var_amode = getregtype('a')
10122 ....
10123 :call setreg('a', var_a, var_amode)
10124< Note: you may not reliably restore register value
10125 without using the third argument to |getreg()| as without it
10126 newlines are represented as newlines AND Nul bytes are
10127 represented as newlines as well, see |NL-used-for-Nul|.
10128
10129 You can also change the type of a register by appending
10130 nothing: >
10131 :call setreg('a', '', 'al')
10132
10133< Can also be used as a |method|, the base is passed as the
10134 second argument: >
10135 GetText()->setreg('a')
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010136<
10137 Return type: |Number|
10138
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010139
10140settabvar({tabnr}, {varname}, {val}) *settabvar()*
10141 Set tab-local variable {varname} to {val} in tab page {tabnr}.
10142 |t:var|
10143 The {varname} argument is a string.
10144 Note that autocommands are blocked, side effects may not be
10145 triggered, e.g. when setting 'filetype'.
10146 Note that the variable name without "t:" must be used.
10147 Tabs are numbered starting with one.
10148 This function is not available in the |sandbox|.
10149
10150 Can also be used as a |method|, the base is passed as the
10151 third argument: >
10152 GetValue()->settabvar(tab, name)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010153<
10154 Return type: |Number|
10155
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010156
10157settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()*
10158 Set option or local variable {varname} in window {winnr} to
10159 {val}.
10160 Tabs are numbered starting with one. For the current tabpage
10161 use |setwinvar()|.
10162 {winnr} can be the window number or the |window-ID|.
10163 When {winnr} is zero the current window is used.
10164 Note that autocommands are blocked, side effects may not be
10165 triggered, e.g. when setting 'filetype' or 'syntax'.
10166 This also works for a global or local buffer option, but it
10167 doesn't work for a global or local buffer variable.
10168 For a local buffer option the global value is unchanged.
10169 Note that the variable name without "w:" must be used.
10170 Examples: >
10171 :call settabwinvar(1, 1, "&list", 0)
10172 :call settabwinvar(3, 2, "myvar", "foobar")
10173< This function is not available in the |sandbox|.
10174
10175 Can also be used as a |method|, the base is passed as the
10176 fourth argument: >
10177 GetValue()->settabwinvar(tab, winnr, name)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010178<
10179 Return type: |Number|
10180
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010181
10182settagstack({nr}, {dict} [, {action}]) *settagstack()*
10183 Modify the tag stack of the window {nr} using {dict}.
10184 {nr} can be the window number or the |window-ID|.
10185
10186 For a list of supported items in {dict}, refer to
10187 |gettagstack()|. "curidx" takes effect before changing the tag
10188 stack.
10189 *E962*
10190 How the tag stack is modified depends on the {action}
10191 argument:
10192 - If {action} is not present or is set to 'r', then the tag
10193 stack is replaced.
10194 - If {action} is set to 'a', then new entries from {dict} are
10195 pushed (added) onto the tag stack.
10196 - If {action} is set to 't', then all the entries from the
10197 current entry in the tag stack or "curidx" in {dict} are
10198 removed and then new entries are pushed to the stack.
10199
10200 The current index is set to one after the length of the tag
10201 stack after the modification.
10202
10203 Returns zero for success, -1 for failure.
10204
10205 Examples (for more examples see |tagstack-examples|):
10206 Empty the tag stack of window 3: >
10207 call settagstack(3, {'items' : []})
10208
10209< Save and restore the tag stack: >
10210 let stack = gettagstack(1003)
10211 " do something else
10212 call settagstack(1003, stack)
10213 unlet stack
10214<
10215 Can also be used as a |method|, the base is passed as the
10216 second argument: >
10217 GetStack()->settagstack(winnr)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010218<
10219 Return type: |Number|
10220
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010221
10222setwinvar({winnr}, {varname}, {val}) *setwinvar()*
10223 Like |settabwinvar()| for the current tab page.
10224 Examples: >
10225 :call setwinvar(1, "&list", 0)
10226 :call setwinvar(2, "myvar", "foobar")
10227
10228< Can also be used as a |method|, the base is passed as the
10229 third argument: >
10230 GetValue()->setwinvar(winnr, name)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010231<
10232 Return type: |Number|
10233
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010234
10235sha256({string}) *sha256()*
10236 Returns a String with 64 hex characters, which is the SHA256
10237 checksum of {string}.
10238
10239 Can also be used as a |method|: >
10240 GetText()->sha256()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010241<
10242 Return type: |String|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010243
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010244 {only available when compiled with the |+cryptv| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010245
10246shellescape({string} [, {special}]) *shellescape()*
10247 Escape {string} for use as a shell command argument.
10248 When the 'shell' contains powershell (MS-Windows) or pwsh
Bram Moolenaar944697a2022-02-20 19:48:20 +000010249 (MS-Windows, Linux, and macOS) then it will enclose {string}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010250 in single quotes and will double up all internal single
10251 quotes.
10252 On MS-Windows, when 'shellslash' is not set, it will enclose
10253 {string} in double quotes and double all double quotes within
10254 {string}.
10255 Otherwise it will enclose {string} in single quotes and
10256 replace all "'" with "'\''".
10257
Enno5faeb602024-05-15 21:54:19 +020010258 The {special} argument adds additional escaping of keywords
10259 used in Vim commands. When it is not omitted and a non-zero
K.Takatac0e038b2024-05-16 12:39:01 +090010260 number or a non-empty String (|non-zero-arg|), then special
10261 items such as "!", "%", "#" and "<cword>" (as listed in
10262 |expand()|) will be preceded by a backslash.
Enno5faeb602024-05-15 21:54:19 +020010263 This backslash will be removed again by the |:!| command.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010264
10265 The "!" character will be escaped (again with a |non-zero-arg|
10266 {special}) when 'shell' contains "csh" in the tail. That is
10267 because for csh and tcsh "!" is used for history replacement
10268 even when inside single quotes.
10269
10270 With a |non-zero-arg| {special} the <NL> character is also
10271 escaped. When 'shell' containing "csh" in the tail it's
10272 escaped a second time.
10273
10274 The "\" character will be escaped when 'shell' contains "fish"
10275 in the tail. That is because for fish "\" is used as an escape
10276 character inside single quotes.
10277
10278 Example of use with a |:!| command: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +000010279 :exe '!dir ' .. shellescape(expand('<cfile>'), 1)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010280< This results in a directory listing for the file under the
10281 cursor. Example of use with |system()|: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +000010282 :call system("chmod +w -- " .. shellescape(expand("%")))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010283< See also |::S|.
10284
10285 Can also be used as a |method|: >
10286 GetCommand()->shellescape()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010287<
10288 Return type: |String|
10289
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010290
10291shiftwidth([{col}]) *shiftwidth()*
10292 Returns the effective value of 'shiftwidth'. This is the
10293 'shiftwidth' value unless it is zero, in which case it is the
10294 'tabstop' value. This function was introduced with patch
10295 7.3.694 in 2012, everybody should have it by now (however it
10296 did not allow for the optional {col} argument until 8.1.542).
10297
10298 When there is one argument {col} this is used as column number
10299 for which to return the 'shiftwidth' value. This matters for the
10300 'vartabstop' feature. If the 'vartabstop' setting is enabled and
10301 no {col} argument is given, column 1 will be assumed.
10302
10303 Can also be used as a |method|: >
10304 GetColumn()->shiftwidth()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010305<
10306 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010307
10308sign_ functions are documented here: |sign-functions-details|
10309
10310
10311simplify({filename}) *simplify()*
10312 Simplify the file name as much as possible without changing
10313 the meaning. Shortcuts (on MS-Windows) or symbolic links (on
10314 Unix) are not resolved. If the first path component in
10315 {filename} designates the current directory, this will be
10316 valid for the result as well. A trailing path separator is
10317 not removed either. On Unix "//path" is unchanged, but
10318 "///path" is simplified to "/path" (this follows the Posix
10319 standard).
10320 Example: >
10321 simplify("./dir/.././/file/") == "./file/"
10322< Note: The combination "dir/.." is only removed if "dir" is
10323 a searchable directory or does not exist. On Unix, it is also
10324 removed when "dir" is a symbolic link within the same
10325 directory. In order to resolve all the involved symbolic
10326 links before simplifying the path name, use |resolve()|.
10327
10328 Can also be used as a |method|: >
10329 GetName()->simplify()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010330<
10331 Return type: |String|
10332
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010333
10334sin({expr}) *sin()*
10335 Return the sine of {expr}, measured in radians, as a |Float|.
10336 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +010010337 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010338 Examples: >
10339 :echo sin(100)
10340< -0.506366 >
10341 :echo sin(-4.01)
10342< 0.763301
10343
10344 Can also be used as a |method|: >
10345 Compute()->sin()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010346<
10347 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010348
10349
10350sinh({expr}) *sinh()*
10351 Return the hyperbolic sine of {expr} as a |Float| in the range
10352 [-inf, inf].
10353 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +010010354 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010355 Examples: >
10356 :echo sinh(0.5)
10357< 0.521095 >
10358 :echo sinh(-0.9)
10359< -1.026517
10360
10361 Can also be used as a |method|: >
10362 Compute()->sinh()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010363<
10364 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010365
10366
10367slice({expr}, {start} [, {end}]) *slice()*
10368 Similar to using a |slice| "expr[start : end]", but "end" is
10369 used exclusive. And for a string the indexes are used as
10370 character indexes instead of byte indexes, like in
zeertzjqad387692024-03-23 08:23:48 +010010371 |vim9script|. Also, composing characters are treated as a
10372 part of the preceding base character.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010373 When {end} is omitted the slice continues to the last item.
10374 When {end} is -1 the last item is omitted.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +010010375 Returns an empty value if {start} or {end} are invalid.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010376
10377 Can also be used as a |method|: >
10378 GetList()->slice(offset)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010379<
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +010010380 Return type: list<{type}> or tuple<{type}>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010381
10382
Bram Moolenaar2007dd42022-02-23 13:17:47 +000010383sort({list} [, {how} [, {dict}]]) *sort()* *E702*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010384 Sort the items in {list} in-place. Returns {list}.
10385
10386 If you want a list to remain unmodified make a copy first: >
10387 :let sortedlist = sort(copy(mylist))
10388
Bram Moolenaar2d8ed022022-05-21 13:08:16 +010010389< When {how} is omitted or is a string, then sort() uses the
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010390 string representation of each item to sort on. Numbers sort
10391 after Strings, |Lists| after Numbers. For sorting text in the
10392 current buffer use |:sort|.
10393
Bram Moolenaar2007dd42022-02-23 13:17:47 +000010394 When {how} is given and it is 'i' then case is ignored.
10395 In legacy script, for backwards compatibility, the value one
10396 can be used to ignore case. Zero means to not ignore case.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010397
Bram Moolenaar2007dd42022-02-23 13:17:47 +000010398 When {how} is given and it is 'l' then the current collation
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010399 locale is used for ordering. Implementation details: strcoll()
10400 is used to compare strings. See |:language| check or set the
10401 collation locale. |v:collate| can also be used to check the
10402 current locale. Sorting using the locale typically ignores
10403 case. Example: >
10404 " ö is sorted similarly to o with English locale.
10405 :language collate en_US.UTF8
10406 :echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
10407< ['n', 'o', 'O', 'ö', 'p', 'z'] ~
10408>
10409 " ö is sorted after z with Swedish locale.
10410 :language collate sv_SE.UTF8
10411 :echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
10412< ['n', 'o', 'O', 'p', 'z', 'ö'] ~
10413 This does not work properly on Mac.
10414
Bram Moolenaar2007dd42022-02-23 13:17:47 +000010415 When {how} is given and it is 'n' then all items will be
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010416 sorted numerical (Implementation detail: this uses the
Bram Moolenaarbe19d782023-03-09 22:06:49 +000010417 strtod() function to parse numbers. Strings, Lists, Dicts and
10418 Funcrefs will be considered as being 0). Note that this won't
10419 sort a list of strings with numbers!
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010420
Bram Moolenaar2007dd42022-02-23 13:17:47 +000010421 When {how} is given and it is 'N' then all items will be
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010422 sorted numerical. This is like 'n' but a string containing
10423 digits will be used as the number they represent.
10424
Bram Moolenaar2007dd42022-02-23 13:17:47 +000010425 When {how} is given and it is 'f' then all items will be
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010426 sorted numerical. All values must be a Number or a Float.
10427
Bram Moolenaar2007dd42022-02-23 13:17:47 +000010428 When {how} is a |Funcref| or a function name, this function
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010429 is called to compare items. The function is invoked with two
10430 items as argument and must return zero if they are equal, 1 or
10431 bigger if the first one sorts after the second one, -1 or
10432 smaller if the first one sorts before the second one.
10433
10434 {dict} is for functions with the "dict" attribute. It will be
10435 used to set the local variable "self". |Dictionary-function|
10436
10437 The sort is stable, items which compare equal (as number or as
10438 string) will keep their relative position. E.g., when sorting
10439 on numbers, text strings will sort next to each other, in the
10440 same order as they were originally.
10441
10442 Can also be used as a |method|: >
10443 mylist->sort()
10444
10445< Also see |uniq()|.
10446
10447 Example: >
10448 func MyCompare(i1, i2)
10449 return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
10450 endfunc
10451 eval mylist->sort("MyCompare")
10452< A shorter compare version for this specific simple case, which
10453 ignores overflow: >
10454 func MyCompare(i1, i2)
10455 return a:i1 - a:i2
10456 endfunc
10457< For a simple expression you can use a lambda: >
10458 eval mylist->sort({i1, i2 -> i1 - i2})
10459<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010460 Return type: list<{type}>
10461
10462
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010463sound_clear() *sound_clear()*
10464 Stop playing all sounds.
10465
10466 On some Linux systems you may need the libcanberra-pulse
10467 package, otherwise sound may not stop.
10468
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010469 Return type: |Number|
10470
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010471 {only available when compiled with the |+sound| feature}
10472
10473 *sound_playevent()*
10474sound_playevent({name} [, {callback}])
10475 Play a sound identified by {name}. Which event names are
10476 supported depends on the system. Often the XDG sound names
10477 are used. On Ubuntu they may be found in
10478 /usr/share/sounds/freedesktop/stereo. Example: >
10479 call sound_playevent('bell')
10480< On MS-Windows, {name} can be SystemAsterisk, SystemDefault,
10481 SystemExclamation, SystemExit, SystemHand, SystemQuestion,
10482 SystemStart, SystemWelcome, etc.
Yee Cheng Chin4314e4f2022-10-08 13:50:05 +010010483 On macOS, {name} refers to files located in
10484 /System/Library/Sounds (e.g. "Tink"). It will also work for
10485 custom installed sounds in folders like ~/Library/Sounds.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010486
10487 When {callback} is specified it is invoked when the sound is
10488 finished. The first argument is the sound ID, the second
10489 argument is the status:
10490 0 sound was played to the end
10491 1 sound was interrupted
10492 2 error occurred after sound started
10493 Example: >
10494 func Callback(id, status)
10495 echomsg "sound " .. a:id .. " finished with " .. a:status
10496 endfunc
10497 call sound_playevent('bell', 'Callback')
10498
10499< MS-Windows: {callback} doesn't work for this function.
10500
10501 Returns the sound ID, which can be passed to `sound_stop()`.
10502 Returns zero if the sound could not be played.
10503
10504 Can also be used as a |method|: >
10505 GetSoundName()->sound_playevent()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010506<
10507 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010508
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010509 {only available when compiled with the |+sound| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010510
10511 *sound_playfile()*
10512sound_playfile({path} [, {callback}])
10513 Like `sound_playevent()` but play sound file {path}. {path}
10514 must be a full path. On Ubuntu you may find files to play
10515 with this command: >
10516 :!find /usr/share/sounds -type f | grep -v index.theme
10517
10518< Can also be used as a |method|: >
10519 GetSoundPath()->sound_playfile()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010520<
10521 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010522
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010523 {only available when compiled with the |+sound| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010524
10525
10526sound_stop({id}) *sound_stop()*
10527 Stop playing sound {id}. {id} must be previously returned by
10528 `sound_playevent()` or `sound_playfile()`.
10529
10530 On some Linux systems you may need the libcanberra-pulse
10531 package, otherwise sound may not stop.
10532
10533 On MS-Windows, this does not work for event sound started by
10534 `sound_playevent()`. To stop event sounds, use `sound_clear()`.
10535
10536 Can also be used as a |method|: >
10537 soundid->sound_stop()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010538<
10539 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010540
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010541 {only available when compiled with the |+sound| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010542
10543 *soundfold()*
10544soundfold({word})
10545 Return the sound-folded equivalent of {word}. Uses the first
10546 language in 'spelllang' for the current window that supports
10547 soundfolding. 'spell' must be set. When no sound folding is
10548 possible the {word} is returned unmodified.
10549 This can be used for making spelling suggestions. Note that
10550 the method can be quite slow.
10551
10552 Can also be used as a |method|: >
10553 GetWord()->soundfold()
10554<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010555 Return type: |String|
10556
10557
10558spellbadword([{sentence}]) *spellbadword()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010559 Without argument: The result is the badly spelled word under
10560 or after the cursor. The cursor is moved to the start of the
10561 bad word. When no bad word is found in the cursor line the
10562 result is an empty string and the cursor doesn't move.
10563
10564 With argument: The result is the first word in {sentence} that
10565 is badly spelled. If there are no spelling mistakes the
10566 result is an empty string.
10567
10568 The return value is a list with two items:
10569 - The badly spelled word or an empty string.
10570 - The type of the spelling error:
10571 "bad" spelling mistake
10572 "rare" rare word
10573 "local" word only valid in another region
10574 "caps" word should start with Capital
10575 Example: >
10576 echo spellbadword("the quik brown fox")
10577< ['quik', 'bad'] ~
10578
10579 The spelling information for the current window and the value
10580 of 'spelllang' are used.
10581
10582 Can also be used as a |method|: >
10583 GetText()->spellbadword()
10584<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010585 Return type: list<string>
10586
10587
10588spellsuggest({word} [, {max} [, {capital}]]) *spellsuggest()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010589 Return a |List| with spelling suggestions to replace {word}.
10590 When {max} is given up to this number of suggestions are
10591 returned. Otherwise up to 25 suggestions are returned.
10592
10593 When the {capital} argument is given and it's non-zero only
10594 suggestions with a leading capital will be given. Use this
10595 after a match with 'spellcapcheck'.
10596
10597 {word} can be a badly spelled word followed by other text.
10598 This allows for joining two words that were split. The
10599 suggestions also include the following text, thus you can
10600 replace a line.
10601
10602 {word} may also be a good word. Similar words will then be
10603 returned. {word} itself is not included in the suggestions,
10604 although it may appear capitalized.
10605
10606 The spelling information for the current window is used. The
10607 values of 'spelllang' and 'spellsuggest' are used.
10608
10609 Can also be used as a |method|: >
10610 GetWord()->spellsuggest()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010611<
10612 Return type: list<string> or list<any>
10613
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010614
10615split({string} [, {pattern} [, {keepempty}]]) *split()*
10616 Make a |List| out of {string}. When {pattern} is omitted or
Shane Harperc1b39842024-07-17 19:40:40 +020010617 empty each white space separated sequence of characters
10618 becomes an item.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010619 Otherwise the string is split where {pattern} matches,
10620 removing the matched characters. 'ignorecase' is not used
10621 here, add \c to ignore case. |/\c|
10622 When the first or last item is empty it is omitted, unless the
10623 {keepempty} argument is given and it's non-zero.
10624 Other empty items are kept when {pattern} matches at least one
10625 character or when {keepempty} is non-zero.
10626 Example: >
10627 :let words = split(getline('.'), '\W\+')
10628< To split a string in individual characters: >
10629 :for c in split(mystring, '\zs')
10630< If you want to keep the separator you can also use '\zs' at
10631 the end of the pattern: >
10632 :echo split('abc:def:ghi', ':\zs')
10633< ['abc:', 'def:', 'ghi'] ~
10634 Splitting a table where the first element can be empty: >
10635 :let items = split(line, ':', 1)
10636< The opposite function is |join()|.
10637
10638 Can also be used as a |method|: >
10639 GetString()->split()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010640<
10641 Return type: list<string>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010642
10643sqrt({expr}) *sqrt()*
10644 Return the non-negative square root of Float {expr} as a
10645 |Float|.
10646 {expr} must evaluate to a |Float| or a |Number|. When {expr}
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +010010647 is negative the result is NaN (Not a Number). Returns 0.0 if
10648 {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010649 Examples: >
10650 :echo sqrt(100)
10651< 10.0 >
10652 :echo sqrt(-4.01)
10653< nan
10654 "nan" may be different, it depends on system libraries.
10655
10656 Can also be used as a |method|: >
10657 Compute()->sqrt()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010658<
10659 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010660
10661
10662srand([{expr}]) *srand()*
10663 Initialize seed used by |rand()|:
10664 - If {expr} is not given, seed values are initialized by
10665 reading from /dev/urandom, if possible, or using time(NULL)
10666 a.k.a. epoch time otherwise; this only has second accuracy.
10667 - If {expr} is given it must be a Number. It is used to
10668 initialize the seed values. This is useful for testing or
10669 when a predictable sequence is intended.
10670
10671 Examples: >
10672 :let seed = srand()
10673 :let seed = srand(userinput)
10674 :echo rand(seed)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010675<
10676 Return type: list<number>
10677
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010678
10679state([{what}]) *state()*
10680 Return a string which contains characters indicating the
10681 current state. Mostly useful in callbacks that want to do
10682 work that may not always be safe. Roughly this works like:
10683 - callback uses state() to check if work is safe to do.
10684 Yes: then do it right away.
10685 No: add to work queue and add a |SafeState| and/or
10686 |SafeStateAgain| autocommand (|SafeState| triggers at
10687 toplevel, |SafeStateAgain| triggers after handling
10688 messages and callbacks).
10689 - When SafeState or SafeStateAgain is triggered and executes
10690 your autocommand, check with `state()` if the work can be
10691 done now, and if yes remove it from the queue and execute.
10692 Remove the autocommand if the queue is now empty.
10693 Also see |mode()|.
10694
10695 When {what} is given only characters in this string will be
10696 added. E.g, this checks if the screen has scrolled: >
10697 if state('s') == ''
10698 " screen has not scrolled
10699<
10700 These characters indicate the state, generally indicating that
10701 something is busy:
10702 m halfway a mapping, :normal command, feedkeys() or
10703 stuffed command
10704 o operator pending, e.g. after |d|
10705 a Insert mode autocomplete active
10706 x executing an autocommand
10707 w blocked on waiting, e.g. ch_evalexpr(), ch_read() and
10708 ch_readraw() when reading json
10709 S not triggering SafeState or SafeStateAgain, e.g. after
10710 |f| or a count
10711 c callback invoked, including timer (repeats for
10712 recursiveness up to "ccc")
10713 s screen has scrolled for messages
10714
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010715 Return type: |String|
10716
10717
Yegappan Lakshmanana11b23c2025-01-16 19:16:42 +010010718str2blob({list} [, {options}]) *str2blob()*
10719 Return a Blob by converting the characters in the List of
10720 strings in {list} into bytes.
10721
10722 A <NL> byte is added to the blob after each list item. A
10723 newline character in the string is translated into a <NUL>
10724 byte in the blob.
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +010010725
10726 If {options} is not supplied, the current 'encoding' value is
Yegappan Lakshmanana11b23c2025-01-16 19:16:42 +010010727 used to convert the characters into bytes.
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +010010728
10729 The argument {options} is a |Dict| and supports the following
10730 items:
Bakudankunb3854bf2025-02-23 20:29:21 +010010731 encoding Convert the characters using this encoding
10732 before making the Blob.
Yegappan Lakshmanana11b23c2025-01-16 19:16:42 +010010733 The value is a |String|. See |encoding-names|
10734 for the supported values.
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +010010735
10736 An error is given and an empty blob is returned if the
10737 character encoding fails.
10738
Yegappan Lakshmanana11b23c2025-01-16 19:16:42 +010010739 Returns an empty Blob if {list} is empty.
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +010010740
10741 See also |blob2str()|
10742
10743 Examples: >
Hirohito Higashi932a5352025-03-23 10:20:20 +010010744 str2blob(["ab"]) returns 0z6162
10745 str2blob(["«»"]) returns 0zC2ABC2BB
10746 str2blob(["a\nb"]) returns 0z610062
10747 str2blob(["a","b"]) returns 0z610A62
Yegappan Lakshmanana11b23c2025-01-16 19:16:42 +010010748 str2blob(["«»"], {'encoding': 'latin1'}) returns 0zABBB
Hirohito Higashi932a5352025-03-23 10:20:20 +010010749 str2blob(readfile('myfile.txt'))
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +010010750<
10751 Can also be used as a |method|: >
Yegappan Lakshmanana11b23c2025-01-16 19:16:42 +010010752 GetListOfStrings()->str2blob()
Yegappan Lakshmanan1aefe1d2025-01-14 17:29:42 +010010753<
10754 Return type: |Blob|
10755
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010756str2float({string} [, {quoted}]) *str2float()*
10757 Convert String {string} to a Float. This mostly works the
10758 same as when using a floating point number in an expression,
10759 see |floating-point-format|. But it's a bit more permissive.
10760 E.g., "1e40" is accepted, while in an expression you need to
10761 write "1.0e40". The hexadecimal form "0x123" is also
10762 accepted, but not others, like binary or octal.
10763 When {quoted} is present and non-zero then embedded single
10764 quotes before the dot are ignored, thus "1'000.0" is a
10765 thousand.
10766 Text after the number is silently ignored.
10767 The decimal point is always '.', no matter what the locale is
10768 set to. A comma ends the number: "12,345.67" is converted to
10769 12.0. You can strip out thousands separators with
10770 |substitute()|: >
10771 let f = str2float(substitute(text, ',', '', 'g'))
10772<
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +010010773 Returns 0.0 if the conversion fails.
10774
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010775 Can also be used as a |method|: >
10776 let f = text->substitute(',', '', 'g')->str2float()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010777<
10778 Return type: |Float|
10779
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010780
10781str2list({string} [, {utf8}]) *str2list()*
10782 Return a list containing the number values which represent
10783 each character in String {string}. Examples: >
10784 str2list(" ") returns [32]
10785 str2list("ABC") returns [65, 66, 67]
10786< |list2str()| does the opposite.
10787
10788 When {utf8} is omitted or zero, the current 'encoding' is used.
10789 When {utf8} is TRUE, always treat the String as UTF-8
10790 characters. With UTF-8 composing characters are handled
10791 properly: >
10792 str2list("á") returns [97, 769]
10793
10794< Can also be used as a |method|: >
10795 GetString()->str2list()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010796<
10797 Return type: list<number>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010798
10799
10800str2nr({string} [, {base} [, {quoted}]]) *str2nr()*
10801 Convert string {string} to a number.
10802 {base} is the conversion base, it can be 2, 8, 10 or 16.
10803 When {quoted} is present and non-zero then embedded single
10804 quotes are ignored, thus "1'000'000" is a million.
10805
10806 When {base} is omitted base 10 is used. This also means that
10807 a leading zero doesn't cause octal conversion to be used, as
10808 with the default String to Number conversion. Example: >
10809 let nr = str2nr('0123')
10810<
10811 When {base} is 16 a leading "0x" or "0X" is ignored. With a
10812 different base the result will be zero. Similarly, when
10813 {base} is 8 a leading "0", "0o" or "0O" is ignored, and when
10814 {base} is 2 a leading "0b" or "0B" is ignored.
10815 Text after the number is silently ignored.
10816
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +010010817 Returns 0 if {string} is empty or on error.
10818
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010819 Can also be used as a |method|: >
10820 GetText()->str2nr()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010821<
10822 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010823
10824
10825strcharlen({string}) *strcharlen()*
10826 The result is a Number, which is the number of characters
10827 in String {string}. Composing characters are ignored.
10828 |strchars()| can count the number of characters, counting
10829 composing characters separately.
10830
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +010010831 Returns 0 if {string} is empty or on error.
10832
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010833 Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
10834
10835 Can also be used as a |method|: >
10836 GetText()->strcharlen()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010837<
10838 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010839
10840
10841strcharpart({src}, {start} [, {len} [, {skipcc}]]) *strcharpart()*
10842 Like |strpart()| but using character index and length instead
10843 of byte index and length.
10844 When {skipcc} is omitted or zero, composing characters are
10845 counted separately.
zeertzjqad387692024-03-23 08:23:48 +010010846 When {skipcc} set to 1, composing characters are treated as a
10847 part of the preceding base character, similar to |slice()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010848 When a character index is used where a character does not
10849 exist it is omitted and counted as one character. For
10850 example: >
10851 strcharpart('abc', -1, 2)
10852< results in 'a'.
10853
Bram Moolenaard592deb2022-06-17 15:42:40 +010010854 Returns an empty string on error.
10855
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010856 Can also be used as a |method|: >
10857 GetText()->strcharpart(5)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010858<
10859 Return type: |String|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010860
10861
10862strchars({string} [, {skipcc}]) *strchars()*
10863 The result is a Number, which is the number of characters
10864 in String {string}.
10865 When {skipcc} is omitted or zero, composing characters are
10866 counted separately.
zeertzjqad387692024-03-23 08:23:48 +010010867 When {skipcc} set to 1, composing characters are ignored.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010868 |strcharlen()| always does this.
10869
Bram Moolenaard592deb2022-06-17 15:42:40 +010010870 Returns zero on error.
10871
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010872 Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
10873
10874 {skipcc} is only available after 7.4.755. For backward
10875 compatibility, you can define a wrapper function: >
10876 if has("patch-7.4.755")
10877 function s:strchars(str, skipcc)
10878 return strchars(a:str, a:skipcc)
10879 endfunction
10880 else
10881 function s:strchars(str, skipcc)
10882 if a:skipcc
10883 return strlen(substitute(a:str, ".", "x", "g"))
10884 else
10885 return strchars(a:str)
10886 endif
10887 endfunction
10888 endif
10889<
10890 Can also be used as a |method|: >
10891 GetText()->strchars()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010892<
10893 Return type: |Number|
10894
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010895
10896strdisplaywidth({string} [, {col}]) *strdisplaywidth()*
10897 The result is a Number, which is the number of display cells
10898 String {string} occupies on the screen when it starts at {col}
10899 (first column is zero). When {col} is omitted zero is used.
10900 Otherwise it is the screen column where to start. This
10901 matters for Tab characters.
10902 The option settings of the current window are used. This
10903 matters for anything that's displayed differently, such as
10904 'tabstop' and 'display'.
10905 When {string} contains characters with East Asian Width Class
10906 Ambiguous, this function's return value depends on 'ambiwidth'.
Bram Moolenaard592deb2022-06-17 15:42:40 +010010907 Returns zero on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010908 Also see |strlen()|, |strwidth()| and |strchars()|.
10909
10910 Can also be used as a |method|: >
10911 GetText()->strdisplaywidth()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010912<
10913 Return type: |Number|
10914
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010915
10916strftime({format} [, {time}]) *strftime()*
10917 The result is a String, which is a formatted date and time, as
10918 specified by the {format} string. The given {time} is used,
10919 or the current time if no time is given. The accepted
10920 {format} depends on your system, thus this is not portable!
10921 See the manual page of the C function strftime() for the
10922 format. The maximum length of the result is 80 characters.
10923 See also |localtime()|, |getftime()| and |strptime()|.
10924 The language can be changed with the |:language| command.
10925 Examples: >
10926 :echo strftime("%c") Sun Apr 27 11:49:23 1997
10927 :echo strftime("%Y %b %d %X") 1997 Apr 27 11:53:25
10928 :echo strftime("%y%m%d %T") 970427 11:53:55
10929 :echo strftime("%H:%M") 11:55
10930 :echo strftime("%c", getftime("file.c"))
10931 Show mod time of file.c.
10932< Not available on all systems. To check use: >
10933 :if exists("*strftime")
10934
10935< Can also be used as a |method|: >
10936 GetFormat()->strftime()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010937<
10938 Return type: |String|
10939
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010940
10941strgetchar({str}, {index}) *strgetchar()*
Bram Moolenaar2d8ed022022-05-21 13:08:16 +010010942 Get a Number corresponding to the character at {index} in
10943 {str}. This uses a zero-based character index, not a byte
10944 index. Composing characters are considered separate
10945 characters here. Use |nr2char()| to convert the Number to a
10946 String.
Bram Moolenaard592deb2022-06-17 15:42:40 +010010947 Returns -1 if {index} is invalid.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010948 Also see |strcharpart()| and |strchars()|.
10949
10950 Can also be used as a |method|: >
10951 GetText()->strgetchar(5)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010952<
10953 Return type: |Number|
10954
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010955
10956stridx({haystack}, {needle} [, {start}]) *stridx()*
10957 The result is a Number, which gives the byte index in
10958 {haystack} of the first occurrence of the String {needle}.
10959 If {start} is specified, the search starts at index {start}.
10960 This can be used to find a second match: >
10961 :let colon1 = stridx(line, ":")
10962 :let colon2 = stridx(line, ":", colon1 + 1)
10963< The search is done case-sensitive.
10964 For pattern searches use |match()|.
10965 -1 is returned if the {needle} does not occur in {haystack}.
10966 See also |strridx()|.
10967 Examples: >
10968 :echo stridx("An Example", "Example") 3
10969 :echo stridx("Starting point", "Start") 0
10970 :echo stridx("Starting point", "start") -1
10971< *strstr()* *strchr()*
10972 stridx() works similar to the C function strstr(). When used
10973 with a single character it works similar to strchr().
10974
10975 Can also be used as a |method|: >
10976 GetHaystack()->stridx(needle)
10977<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020010978 Return type: |Number|
10979
10980
10981string({expr}) *string()*
10982 Return {expr} converted to a String. If {expr} is a Number,
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010983 Float, String, Blob or a composition of them, then the result
10984 can be parsed back with |eval()|.
10985 {expr} type result ~
10986 String 'string' (single quotes are doubled)
10987 Number 123
10988 Float 123.123456 or 1.123456e8
10989 Funcref function('name')
10990 Blob 0z00112233.44556677.8899
10991 List [item, item]
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +010010992 Tuple (item, item)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010993 Dictionary {key: value, key: value}
Bram Moolenaarf1dcd142022-12-31 15:30:45 +000010994 Class class SomeName
10995 Object object of SomeName {lnum: 1, col: 3}
Yegappan Lakshmanan3164cf82024-03-28 10:36:42 +010010996 Enum enum EnumName
Yegappan Lakshmanan3cf121e2024-03-31 18:45:35 +020010997 EnumValue enum name.value {name: str, ordinal: nr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010998
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +010010999 When a |List|, |Tuple| or |Dictionary| has a recursive
11000 reference it is replaced by "[...]" or "(...)" or "{...}".
11001 Using eval() on the result will then fail.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011002
mityu7f0bba22024-03-29 10:14:41 +010011003 For an object, invokes the string() method to get a textual
Yegappan Lakshmanand3eae7b2024-03-03 16:26:58 +010011004 representation of the object. If the method is not present,
mityu7f0bba22024-03-29 10:14:41 +010011005 then the default representation is used. |object-string()|
Yegappan Lakshmanand3eae7b2024-03-03 16:26:58 +010011006
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011007 Can also be used as a |method|: >
11008 mylist->string()
11009
11010< Also see |strtrans()|.
11011
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011012 Return type: |String|
11013
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011014
11015strlen({string}) *strlen()*
11016 The result is a Number, which is the length of the String
11017 {string} in bytes.
11018 If the argument is a Number it is first converted to a String.
Bram Moolenaard592deb2022-06-17 15:42:40 +010011019 For other types an error is given and zero is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011020 If you want to count the number of multibyte characters use
11021 |strchars()|.
11022 Also see |len()|, |strdisplaywidth()| and |strwidth()|.
11023
11024 Can also be used as a |method|: >
11025 GetString()->strlen()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011026<
11027 Return type: |Number|
11028
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011029
11030strpart({src}, {start} [, {len} [, {chars}]]) *strpart()*
11031 The result is a String, which is part of {src}, starting from
11032 byte {start}, with the byte length {len}.
11033 When {chars} is present and TRUE then {len} is the number of
11034 characters positions (composing characters are not counted
11035 separately, thus "1" means one base character and any
11036 following composing characters).
11037 To count {start} as characters instead of bytes use
11038 |strcharpart()|.
11039
11040 When bytes are selected which do not exist, this doesn't
11041 result in an error, the bytes are simply omitted.
11042 If {len} is missing, the copy continues from {start} till the
11043 end of the {src}. >
11044 strpart("abcdefg", 3, 2) == "de"
11045 strpart("abcdefg", -2, 4) == "ab"
11046 strpart("abcdefg", 5, 4) == "fg"
11047 strpart("abcdefg", 3) == "defg"
11048
11049< Note: To get the first character, {start} must be 0. For
11050 example, to get the character under the cursor: >
11051 strpart(getline("."), col(".") - 1, 1, v:true)
11052<
Bram Moolenaard592deb2022-06-17 15:42:40 +010011053 Returns an empty string on error.
11054
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011055 Can also be used as a |method|: >
11056 GetText()->strpart(5)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011057<
11058 Return type: |String|
11059
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011060
11061strptime({format}, {timestring}) *strptime()*
11062 The result is a Number, which is a unix timestamp representing
11063 the date and time in {timestring}, which is expected to match
11064 the format specified in {format}.
11065
11066 The accepted {format} depends on your system, thus this is not
11067 portable! See the manual page of the C function strptime()
11068 for the format. Especially avoid "%c". The value of $TZ also
11069 matters.
11070
11071 If the {timestring} cannot be parsed with {format} zero is
11072 returned. If you do not know the format of {timestring} you
11073 can try different {format} values until you get a non-zero
11074 result.
11075
11076 See also |strftime()|.
11077 Examples: >
11078 :echo strptime("%Y %b %d %X", "1997 Apr 27 11:49:23")
11079< 862156163 >
11080 :echo strftime("%c", strptime("%y%m%d %T", "970427 11:53:55"))
11081< Sun Apr 27 11:53:55 1997 >
11082 :echo strftime("%c", strptime("%Y%m%d%H%M%S", "19970427115355") + 3600)
11083< Sun Apr 27 12:53:55 1997
11084
11085 Can also be used as a |method|: >
11086 GetFormat()->strptime(timestring)
11087<
11088 Not available on all systems. To check use: >
11089 :if exists("*strptime")
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011090<
11091 Return type: |Number|
11092
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011093
11094strridx({haystack}, {needle} [, {start}]) *strridx()*
11095 The result is a Number, which gives the byte index in
11096 {haystack} of the last occurrence of the String {needle}.
11097 When {start} is specified, matches beyond this index are
11098 ignored. This can be used to find a match before a previous
11099 match: >
11100 :let lastcomma = strridx(line, ",")
11101 :let comma2 = strridx(line, ",", lastcomma - 1)
11102< The search is done case-sensitive.
11103 For pattern searches use |match()|.
11104 -1 is returned if the {needle} does not occur in {haystack}.
11105 If the {needle} is empty the length of {haystack} is returned.
11106 See also |stridx()|. Examples: >
11107 :echo strridx("an angry armadillo", "an") 3
11108< *strrchr()*
11109 When used with a single character it works similar to the C
11110 function strrchr().
11111
11112 Can also be used as a |method|: >
11113 GetHaystack()->strridx(needle)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011114<
11115 Return type: |Number|
11116
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011117
11118strtrans({string}) *strtrans()*
11119 The result is a String, which is {string} with all unprintable
11120 characters translated into printable characters |'isprint'|.
11121 Like they are shown in a window. Example: >
11122 echo strtrans(@a)
11123< This displays a newline in register a as "^@" instead of
11124 starting a new line.
11125
Bram Moolenaard592deb2022-06-17 15:42:40 +010011126 Returns an empty string on error.
11127
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011128 Can also be used as a |method|: >
11129 GetString()->strtrans()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011130<
11131 Return type: |String|
11132
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011133
Christian Brabandt67672ef2023-04-24 21:09:54 +010011134strutf16len({string} [, {countcc}]) *strutf16len()*
11135 The result is a Number, which is the number of UTF-16 code
11136 units in String {string} (after converting it to UTF-16).
11137
11138 When {countcc} is TRUE, composing characters are counted
11139 separately.
11140 When {countcc} is omitted or FALSE, composing characters are
11141 ignored.
11142
11143 Returns zero on error.
11144
11145 Also see |strlen()| and |strcharlen()|.
11146 Examples: >
11147 echo strutf16len('a') returns 1
11148 echo strutf16len('©') returns 1
11149 echo strutf16len('😊') returns 2
11150 echo strutf16len('ą́') returns 1
11151 echo strutf16len('ą́', v:true) returns 3
a5ob7r790f9a82023-09-25 06:05:47 +090011152<
Christian Brabandt67672ef2023-04-24 21:09:54 +010011153 Can also be used as a |method|: >
11154 GetText()->strutf16len()
11155<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011156 Return type: |Number|
11157
11158
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011159strwidth({string}) *strwidth()*
11160 The result is a Number, which is the number of display cells
11161 String {string} occupies. A Tab character is counted as one
11162 cell, alternatively use |strdisplaywidth()|.
11163 When {string} contains characters with East Asian Width Class
11164 Ambiguous, this function's return value depends on 'ambiwidth'.
Bram Moolenaard592deb2022-06-17 15:42:40 +010011165 Returns zero on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011166 Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
11167
11168 Can also be used as a |method|: >
11169 GetString()->strwidth()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011170<
11171 Return type: |Number|
11172
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011173
11174submatch({nr} [, {list}]) *submatch()* *E935*
11175 Only for an expression in a |:substitute| command or
11176 substitute() function.
11177 Returns the {nr}'th submatch of the matched text. When {nr}
11178 is 0 the whole matched text is returned.
11179 Note that a NL in the string can stand for a line break of a
11180 multi-line match or a NUL character in the text.
11181 Also see |sub-replace-expression|.
11182
11183 If {list} is present and non-zero then submatch() returns
11184 a list of strings, similar to |getline()| with two arguments.
11185 NL characters in the text represent NUL characters in the
11186 text.
11187 Only returns more than one item for |:substitute|, inside
11188 |substitute()| this list will always contain one or zero
11189 items, since there are no real line breaks.
11190
11191 When substitute() is used recursively only the submatches in
11192 the current (deepest) call can be obtained.
11193
Bram Moolenaard592deb2022-06-17 15:42:40 +010011194 Returns an empty string or list on error.
11195
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011196 Examples: >
11197 :s/\d\+/\=submatch(0) + 1/
11198 :echo substitute(text, '\d\+', '\=submatch(0) + 1', '')
11199< This finds the first number in the line and adds one to it.
11200 A line break is included as a newline character.
11201
11202 Can also be used as a |method|: >
11203 GetNr()->submatch()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011204<
11205 Return type: |String| or list<string> depending on {list}
11206
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011207
11208substitute({string}, {pat}, {sub}, {flags}) *substitute()*
11209 The result is a String, which is a copy of {string}, in which
11210 the first match of {pat} is replaced with {sub}.
11211 When {flags} is "g", all matches of {pat} in {string} are
11212 replaced. Otherwise {flags} should be "".
11213
11214 This works like the ":substitute" command (without any flags).
11215 But the matching with {pat} is always done like the 'magic'
11216 option is set and 'cpoptions' is empty (to make scripts
11217 portable). 'ignorecase' is still relevant, use |/\c| or |/\C|
11218 if you want to ignore or match case and ignore 'ignorecase'.
11219 'smartcase' is not used. See |string-match| for how {pat} is
11220 used.
11221
11222 A "~" in {sub} is not replaced with the previous {sub}.
11223 Note that some codes in {sub} have a special meaning
11224 |sub-replace-special|. For example, to replace something with
11225 "\n" (two characters), use "\\\\n" or '\\n'.
11226
11227 When {pat} does not match in {string}, {string} is returned
11228 unmodified.
11229
11230 Example: >
11231 :let &path = substitute(&path, ",\\=[^,]*$", "", "")
11232< This removes the last component of the 'path' option. >
11233 :echo substitute("testing", ".*", "\\U\\0", "")
11234< results in "TESTING".
11235
11236 When {sub} starts with "\=", the remainder is interpreted as
11237 an expression. See |sub-replace-expression|. Example: >
11238 :echo substitute(s, '%\(\x\x\)',
Bram Moolenaarc51cf032022-02-26 12:25:45 +000011239 \ '\=nr2char("0x" .. submatch(1))', 'g')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011240
11241< When {sub} is a Funcref that function is called, with one
11242 optional argument. Example: >
11243 :echo substitute(s, '%\(\x\x\)', SubNr, 'g')
11244< The optional argument is a list which contains the whole
11245 matched string and up to nine submatches, like what
11246 |submatch()| returns. Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +000011247 :echo substitute(s, '%\(\x\x\)', {m -> '0x' .. m[1]}, 'g')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011248
Bram Moolenaard592deb2022-06-17 15:42:40 +010011249< Returns an empty string on error.
11250
11251 Can also be used as a |method|: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011252 GetString()->substitute(pat, sub, flags)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011253<
11254 Return type: |String|
11255
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011256
Bram Moolenaarc216a7a2022-12-05 13:50:55 +000011257swapfilelist() *swapfilelist()*
11258 Returns a list of swap file names, like what "vim -r" shows.
11259 See the |-r| command argument. The 'directory' option is used
11260 for the directories to inspect. If you only want to get a
11261 list of swap files in the current directory then temporarily
11262 set 'directory' to a dot: >
11263 let save_dir = &directory
11264 let &directory = '.'
11265 let swapfiles = swapfilelist()
11266 let &directory = save_dir
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011267<
11268 Return type: list<string>
11269
Bram Moolenaarc216a7a2022-12-05 13:50:55 +000011270
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011271swapinfo({fname}) *swapinfo()*
11272 The result is a dictionary, which holds information about the
11273 swapfile {fname}. The available fields are:
11274 version Vim version
11275 user user name
11276 host host name
11277 fname original file name
11278 pid PID of the Vim process that created the swap
11279 file
11280 mtime last modification time in seconds
11281 inode Optional: INODE number of the file
11282 dirty 1 if file was modified, 0 if not
11283 Note that "user" and "host" are truncated to at most 39 bytes.
11284 In case of failure an "error" item is added with the reason:
11285 Cannot open file: file not found or in accessible
11286 Cannot read file: cannot read first block
11287 Not a swap file: does not contain correct block ID
11288 Magic number mismatch: Info in first block is invalid
11289
11290 Can also be used as a |method|: >
11291 GetFilename()->swapinfo()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011292<
11293 Return type: dict<any> or dict<string>
11294
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011295
11296swapname({buf}) *swapname()*
11297 The result is the swap file path of the buffer {expr}.
11298 For the use of {buf}, see |bufname()| above.
11299 If buffer {buf} is the current buffer, the result is equal to
11300 |:swapname| (unless there is no swap file).
11301 If buffer {buf} has no swap file, returns an empty string.
11302
11303 Can also be used as a |method|: >
11304 GetBufname()->swapname()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011305<
11306 Return type: |String|
11307
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011308
11309synID({lnum}, {col}, {trans}) *synID()*
11310 The result is a Number, which is the syntax ID at the position
11311 {lnum} and {col} in the current window.
11312 The syntax ID can be used with |synIDattr()| and
11313 |synIDtrans()| to obtain syntax information about text.
11314
11315 {col} is 1 for the leftmost column, {lnum} is 1 for the first
11316 line. 'synmaxcol' applies, in a longer line zero is returned.
11317 Note that when the position is after the last character,
11318 that's where the cursor can be in Insert mode, synID() returns
11319 zero. {lnum} is used like with |getline()|.
11320
11321 When {trans} is |TRUE|, transparent items are reduced to the
11322 item that they reveal. This is useful when wanting to know
11323 the effective color. When {trans} is |FALSE|, the transparent
11324 item is returned. This is useful when wanting to know which
11325 syntax item is effective (e.g. inside parens).
11326 Warning: This function can be very slow. Best speed is
11327 obtained by going through the file in forward direction.
11328
Bram Moolenaard592deb2022-06-17 15:42:40 +010011329 Returns zero on error.
11330
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011331 Example (echoes the name of the syntax item under the cursor): >
11332 :echo synIDattr(synID(line("."), col("."), 1), "name")
11333<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011334 Return type: |Number|
11335
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011336
11337synIDattr({synID}, {what} [, {mode}]) *synIDattr()*
11338 The result is a String, which is the {what} attribute of
11339 syntax ID {synID}. This can be used to obtain information
11340 about a syntax item.
11341 {mode} can be "gui", "cterm" or "term", to get the attributes
11342 for that mode. When {mode} is omitted, or an invalid value is
11343 used, the attributes for the currently active highlighting are
11344 used (GUI, cterm or term).
11345 Use synIDtrans() to follow linked highlight groups.
11346 {what} result
11347 "name" the name of the syntax item
11348 "fg" foreground color (GUI: color name used to set
11349 the color, cterm: color number as a string,
11350 term: empty string)
11351 "bg" background color (as with "fg")
11352 "font" font name (only available in the GUI)
11353 |highlight-font|
11354 "sp" special color for the GUI (as with "fg")
11355 |highlight-guisp|
11356 "ul" underline color for cterm: number as a string
11357 "fg#" like "fg", but for the GUI and the GUI is
11358 running the name in "#RRGGBB" form
11359 "bg#" like "fg#" for "bg"
11360 "sp#" like "fg#" for "sp"
11361 "bold" "1" if bold
11362 "italic" "1" if italic
11363 "reverse" "1" if reverse
11364 "inverse" "1" if inverse (= reverse)
11365 "standout" "1" if standout
11366 "underline" "1" if underlined
11367 "undercurl" "1" if undercurled
11368 "strike" "1" if strikethrough
Bram Moolenaarde786322022-07-30 14:56:17 +010011369 "nocombine" "1" if nocombine
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011370
Bram Moolenaard592deb2022-06-17 15:42:40 +010011371 Returns an empty string on error.
11372
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011373 Example (echoes the color of the syntax item under the
11374 cursor): >
11375 :echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg")
11376<
11377 Can also be used as a |method|: >
11378 :echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011379<
11380 Return type: |String|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011381
11382
11383synIDtrans({synID}) *synIDtrans()*
11384 The result is a Number, which is the translated syntax ID of
11385 {synID}. This is the syntax group ID of what is being used to
11386 highlight the character. Highlight links given with
11387 ":highlight link" are followed.
11388
Bram Moolenaard592deb2022-06-17 15:42:40 +010011389 Returns zero on error.
11390
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011391 Can also be used as a |method|: >
11392 :echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011393<
11394 Return type: |Number|
11395
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011396
11397synconcealed({lnum}, {col}) *synconcealed()*
11398 The result is a |List| with currently three items:
11399 1. The first item in the list is 0 if the character at the
11400 position {lnum} and {col} is not part of a concealable
11401 region, 1 if it is. {lnum} is used like with |getline()|.
11402 2. The second item in the list is a string. If the first item
11403 is 1, the second item contains the text which will be
11404 displayed in place of the concealed text, depending on the
11405 current setting of 'conceallevel' and 'listchars'.
11406 3. The third and final item in the list is a number
11407 representing the specific syntax region matched in the
11408 line. When the character is not concealed the value is
11409 zero. This allows detection of the beginning of a new
11410 concealable region if there are two consecutive regions
11411 with the same replacement character. For an example, if
11412 the text is "123456" and both "23" and "45" are concealed
11413 and replaced by the character "X", then:
11414 call returns ~
11415 synconcealed(lnum, 1) [0, '', 0]
11416 synconcealed(lnum, 2) [1, 'X', 1]
11417 synconcealed(lnum, 3) [1, 'X', 1]
11418 synconcealed(lnum, 4) [1, 'X', 2]
11419 synconcealed(lnum, 5) [1, 'X', 2]
11420 synconcealed(lnum, 6) [0, '', 0]
11421
Christian Brabandtfe1e2b52024-04-26 18:42:59 +020011422 Note: Doesn't consider |matchadd()| highlighting items,
11423 since syntax and matching highlighting are two different
11424 mechanisms |syntax-vs-match|.
h-east52e7cc22024-07-28 17:03:29 +020011425
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011426 Return type: list<any>
Christian Brabandtfe1e2b52024-04-26 18:42:59 +020011427
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011428
11429synstack({lnum}, {col}) *synstack()*
11430 Return a |List|, which is the stack of syntax items at the
11431 position {lnum} and {col} in the current window. {lnum} is
11432 used like with |getline()|. Each item in the List is an ID
11433 like what |synID()| returns.
11434 The first item in the List is the outer region, following are
11435 items contained in that one. The last one is what |synID()|
11436 returns, unless not the whole item is highlighted or it is a
11437 transparent item.
11438 This function is useful for debugging a syntax file.
11439 Example that shows the syntax stack under the cursor: >
11440 for id in synstack(line("."), col("."))
11441 echo synIDattr(id, "name")
11442 endfor
11443< When the position specified with {lnum} and {col} is invalid
Bram Moolenaard592deb2022-06-17 15:42:40 +010011444 an empty List is returned. The position just after the last
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011445 character in a line and the first column in an empty line are
11446 valid positions.
11447
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011448 Return type: list<number> or list<any>
11449
11450
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011451system({expr} [, {input}]) *system()* *E677*
11452 Get the output of the shell command {expr} as a |String|. See
11453 |systemlist()| to get the output as a |List|.
11454
11455 When {input} is given and is a |String| this string is written
11456 to a file and passed as stdin to the command. The string is
11457 written as-is, you need to take care of using the correct line
11458 separators yourself.
11459 If {input} is given and is a |List| it is written to the file
11460 in a way |writefile()| does with {binary} set to "b" (i.e.
11461 with a newline between each list item with newlines inside
11462 list items converted to NULs).
11463 When {input} is given and is a number that is a valid id for
11464 an existing buffer then the content of the buffer is written
11465 to the file line by line, each line terminated by a NL and
11466 NULs characters where the text has a NL.
11467
11468 Pipes are not used, the 'shelltemp' option is not used.
11469
11470 When prepended by |:silent| the terminal will not be set to
11471 cooked mode. This is meant to be used for commands that do
11472 not need the user to type. It avoids stray characters showing
11473 up on the screen which require |CTRL-L| to remove. >
11474 :silent let f = system('ls *.vim')
11475<
11476 Note: Use |shellescape()| or |::S| with |expand()| or
11477 |fnamemodify()| to escape special characters in a command
11478 argument. Newlines in {expr} may cause the command to fail.
11479 The characters in 'shellquote' and 'shellxquote' may also
11480 cause trouble.
11481 This is not to be used for interactive commands.
11482
11483 The result is a String. Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +000011484 :let files = system('ls ' .. shellescape(expand('%:h')))
11485 :let files = system('ls ' .. expand('%:h:S'))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011486
11487< To make the result more system-independent, the shell output
11488 is filtered to replace <CR> with <NL> for Macintosh, and
11489 <CR><NL> with <NL> for DOS-like systems.
11490 To avoid the string being truncated at a NUL, all NUL
11491 characters are replaced with SOH (0x01).
11492
11493 The command executed is constructed using several options:
11494 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote'
11495 ({tmp} is an automatically generated file name).
11496 For Unix, braces are put around {expr} to allow for
11497 concatenated commands.
11498
11499 The command will be executed in "cooked" mode, so that a
11500 CTRL-C will interrupt the command (on Unix at least).
11501
11502 The resulting error code can be found in |v:shell_error|.
11503 This function will fail in |restricted-mode|.
11504
11505 Note that any wrong value in the options mentioned above may
11506 make the function fail. It has also been reported to fail
11507 when using a security agent application.
11508 Unlike ":!cmd" there is no automatic check for changed files.
11509 Use |:checktime| to force a check.
11510
11511 Can also be used as a |method|: >
11512 :echo GetCmd()->system()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011513<
11514 Return type: |String|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011515
11516
11517systemlist({expr} [, {input}]) *systemlist()*
11518 Same as |system()|, but returns a |List| with lines (parts of
11519 output separated by NL) with NULs transformed into NLs. Output
11520 is the same as |readfile()| will output with {binary} argument
11521 set to "b", except that there is no extra empty item when the
11522 result ends in a NL.
11523 Note that on MS-Windows you may get trailing CR characters.
11524
11525 To see the difference between "echo hello" and "echo -n hello"
11526 use |system()| and |split()|: >
11527 echo system('echo hello')->split('\n', 1)
11528<
11529 Returns an empty string on error.
11530
11531 Can also be used as a |method|: >
11532 :echo GetCmd()->systemlist()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011533<
11534 Return type: list<string>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011535
11536
11537tabpagebuflist([{arg}]) *tabpagebuflist()*
11538 The result is a |List|, where each item is the number of the
11539 buffer associated with each window in the current tab page.
11540 {arg} specifies the number of the tab page to be used. When
11541 omitted the current tab page is used.
11542 When {arg} is invalid the number zero is returned.
11543 To get a list of all buffers in all tabs use this: >
11544 let buflist = []
11545 for i in range(tabpagenr('$'))
11546 call extend(buflist, tabpagebuflist(i + 1))
11547 endfor
11548< Note that a buffer may appear in more than one window.
11549
11550 Can also be used as a |method|: >
11551 GetTabpage()->tabpagebuflist()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011552<
11553 Return type: list<number>
11554
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011555
11556tabpagenr([{arg}]) *tabpagenr()*
11557 The result is a Number, which is the number of the current
11558 tab page. The first tab page has number 1.
11559
11560 The optional argument {arg} supports the following values:
11561 $ the number of the last tab page (the tab page
11562 count).
11563 # the number of the last accessed tab page
11564 (where |g<Tab>| goes to). if there is no
11565 previous tab page 0 is returned.
11566 The number can be used with the |:tab| command.
11567
Bram Moolenaard592deb2022-06-17 15:42:40 +010011568 Returns zero on error.
11569
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011570 Return type: |Number|
11571
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011572
11573tabpagewinnr({tabarg} [, {arg}]) *tabpagewinnr()*
11574 Like |winnr()| but for tab page {tabarg}.
11575 {tabarg} specifies the number of tab page to be used.
11576 {arg} is used like with |winnr()|:
11577 - When omitted the current window number is returned. This is
11578 the window which will be used when going to this tab page.
11579 - When "$" the number of windows is returned.
11580 - When "#" the previous window nr is returned.
11581 Useful examples: >
11582 tabpagewinnr(1) " current window of tab page 1
11583 tabpagewinnr(4, '$') " number of windows in tab page 4
11584< When {tabarg} is invalid zero is returned.
11585
11586 Can also be used as a |method|: >
11587 GetTabpage()->tabpagewinnr()
11588<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011589 Return type: |Number|
11590
11591
11592tagfiles() *tagfiles()*
11593 Returns a |List| with the file names used to search for tags
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011594 for the current buffer. This is the 'tags' option expanded.
11595
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011596 Return type: list<string> or list<any>
11597
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011598
11599taglist({expr} [, {filename}]) *taglist()*
11600 Returns a |List| of tags matching the regular expression {expr}.
11601
11602 If {filename} is passed it is used to prioritize the results
11603 in the same way that |:tselect| does. See |tag-priority|.
11604 {filename} should be the full path of the file.
11605
11606 Each list item is a dictionary with at least the following
11607 entries:
11608 name Name of the tag.
11609 filename Name of the file where the tag is
11610 defined. It is either relative to the
11611 current directory or a full path.
11612 cmd Ex command used to locate the tag in
11613 the file.
11614 kind Type of the tag. The value for this
11615 entry depends on the language specific
11616 kind values. Only available when
11617 using a tags file generated by
Bram Moolenaar47c532e2022-03-19 15:18:53 +000011618 Universal/Exuberant ctags or hdrtag.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011619 static A file specific tag. Refer to
11620 |static-tag| for more information.
11621 More entries may be present, depending on the content of the
11622 tags file: access, implementation, inherits and signature.
11623 Refer to the ctags documentation for information about these
11624 fields. For C code the fields "struct", "class" and "enum"
11625 may appear, they give the name of the entity the tag is
11626 contained in.
11627
11628 The ex-command "cmd" can be either an ex search pattern, a
11629 line number or a line number followed by a byte number.
11630
11631 If there are no matching tags, then an empty list is returned.
11632
11633 To get an exact tag match, the anchors '^' and '$' should be
11634 used in {expr}. This also make the function work faster.
11635 Refer to |tag-regexp| for more information about the tag
11636 search regular expression pattern.
11637
11638 Refer to |'tags'| for information about how the tags file is
11639 located by Vim. Refer to |tags-file-format| for the format of
11640 the tags file generated by the different ctags tools.
11641
11642 Can also be used as a |method|: >
11643 GetTagpattern()->taglist()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011644<
11645 Return type: list<dict<any>> or list<any>
11646
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011647
11648tan({expr}) *tan()*
11649 Return the tangent of {expr}, measured in radians, as a |Float|
11650 in the range [-inf, inf].
11651 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaard592deb2022-06-17 15:42:40 +010011652 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011653 Examples: >
11654 :echo tan(10)
11655< 0.648361 >
11656 :echo tan(-4.01)
11657< -1.181502
11658
11659 Can also be used as a |method|: >
11660 Compute()->tan()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011661<
11662 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011663
11664
11665tanh({expr}) *tanh()*
11666 Return the hyperbolic tangent of {expr} as a |Float| in the
11667 range [-1, 1].
11668 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaard592deb2022-06-17 15:42:40 +010011669 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011670 Examples: >
11671 :echo tanh(0.5)
11672< 0.462117 >
11673 :echo tanh(-1)
11674< -0.761594
11675
11676 Can also be used as a |method|: >
11677 Compute()->tanh()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011678<
11679 Return type: |Float|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011680
11681
11682tempname() *tempname()* *temp-file-name*
11683 The result is a String, which is the name of a file that
11684 doesn't exist. It can be used for a temporary file. The name
11685 is different for at least 26 consecutive calls. Example: >
11686 :let tmpfile = tempname()
Bram Moolenaarc51cf032022-02-26 12:25:45 +000011687 :exe "redir > " .. tmpfile
Christian Brabandt5cf53012024-05-18 10:13:11 +020011688< For Unix, the file will be in a private directory |tempfile|
11689 that is recursively deleted when Vim exits, on other systems
11690 temporary files are not cleaned up automatically on exit.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011691 For MS-Windows forward slashes are used when the 'shellslash'
11692 option is set, or when 'shellcmdflag' starts with '-' and
11693 'shell' does not contain powershell or pwsh.
11694
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011695 Return type: |String|
11696
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011697
11698term_ functions are documented here: |terminal-function-details|
11699
11700
11701terminalprops() *terminalprops()*
11702 Returns a |Dictionary| with properties of the terminal that Vim
11703 detected from the response to |t_RV| request. See
11704 |v:termresponse| for the response itself. If |v:termresponse|
11705 is empty most values here will be 'u' for unknown.
11706 cursor_style whether sending |t_RS| works **
11707 cursor_blink_mode whether sending |t_RC| works **
11708 underline_rgb whether |t_8u| works **
11709 mouse mouse type supported
Bram Moolenaar4bc85f22022-10-21 14:17:24 +010011710 kitty whether Kitty terminal was detected
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011711
11712 ** value 'u' for unknown, 'y' for yes, 'n' for no
11713
11714 If the |+termresponse| feature is missing then the result is
11715 an empty dictionary.
11716
11717 If "cursor_style" is 'y' then |t_RS| will be sent to request the
11718 current cursor style.
11719 If "cursor_blink_mode" is 'y' then |t_RC| will be sent to
11720 request the cursor blink status.
11721 "cursor_style" and "cursor_blink_mode" are also set if |t_u7|
11722 is not empty, Vim will detect the working of sending |t_RS|
11723 and |t_RC| on startup.
11724
11725 When "underline_rgb" is not 'y', then |t_8u| will be made empty.
11726 This avoids sending it to xterm, which would clear the colors.
11727
11728 For "mouse" the value 'u' is unknown
11729
11730 Also see:
11731 - 'ambiwidth' - detected by using |t_u7|.
11732 - |v:termstyleresp| and |v:termblinkresp| for the response to
11733 |t_RS| and |t_RC|.
11734
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011735 Return type: dict<string>
11736
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011737
11738test_ functions are documented here: |test-functions-details|
11739
11740
11741 *timer_info()*
11742timer_info([{id}])
11743 Return a list with information about timers.
11744 When {id} is given only information about this timer is
11745 returned. When timer {id} does not exist an empty list is
11746 returned.
11747 When {id} is omitted information about all timers is returned.
11748
11749 For each timer the information is stored in a |Dictionary| with
11750 these items:
11751 "id" the timer ID
11752 "time" time the timer was started with
11753 "remaining" time until the timer fires
11754 "repeat" number of times the timer will still fire;
11755 -1 means forever
11756 "callback" the callback
11757 "paused" 1 if the timer is paused, 0 otherwise
11758
11759 Can also be used as a |method|: >
11760 GetTimer()->timer_info()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011761<
11762 Return type: list<dict<any>> or list<any>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011763
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011764 {only available when compiled with the |+timers| feature}
11765
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011766
11767timer_pause({timer}, {paused}) *timer_pause()*
11768 Pause or unpause a timer. A paused timer does not invoke its
11769 callback when its time expires. Unpausing a timer may cause
11770 the callback to be invoked almost immediately if enough time
11771 has passed.
11772
11773 Pausing a timer is useful to avoid the callback to be called
11774 for a short time.
11775
11776 If {paused} evaluates to a non-zero Number or a non-empty
11777 String, then the timer is paused, otherwise it is unpaused.
11778 See |non-zero-arg|.
11779
11780 Can also be used as a |method|: >
11781 GetTimer()->timer_pause(1)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011782<
11783 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011784
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011785 {only available when compiled with the |+timers| feature}
11786
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011787
11788 *timer_start()* *timer* *timers*
11789timer_start({time}, {callback} [, {options}])
11790 Create a timer and return the timer ID.
11791
11792 {time} is the waiting time in milliseconds. This is the
11793 minimum time before invoking the callback. When the system is
11794 busy or Vim is not waiting for input the time will be longer.
Bram Moolenaardd60c362023-02-27 15:49:53 +000011795 Zero can be used to execute the callback when Vim is back in
11796 the main loop.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011797
11798 {callback} is the function to call. It can be the name of a
11799 function or a |Funcref|. It is called with one argument, which
11800 is the timer ID. The callback is only invoked when Vim is
11801 waiting for input.
11802 If you want to show a message look at |popup_notification()|
11803 to avoid interfering with what the user is doing.
11804
11805 {options} is a dictionary. Supported entries:
11806 "repeat" Number of times to repeat calling the
11807 callback. -1 means forever. When not present
11808 the callback will be called once.
11809 If the timer causes an error three times in a
11810 row the repeat is cancelled. This avoids that
11811 Vim becomes unusable because of all the error
11812 messages.
11813
Bram Moolenaard592deb2022-06-17 15:42:40 +010011814 Returns -1 on error.
11815
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011816 Example: >
11817 func MyHandler(timer)
11818 echo 'Handler called'
11819 endfunc
11820 let timer = timer_start(500, 'MyHandler',
11821 \ {'repeat': 3})
11822< This will invoke MyHandler() three times at 500 msec
11823 intervals.
11824
11825 Can also be used as a |method|: >
11826 GetMsec()->timer_start(callback)
11827
11828< Not available in the |sandbox|.
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011829
11830 Return type: |Number|
11831
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011832 {only available when compiled with the |+timers| feature}
11833
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011834
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011835timer_stop({timer}) *timer_stop()*
11836 Stop a timer. The timer callback will no longer be invoked.
11837 {timer} is an ID returned by timer_start(), thus it must be a
11838 Number. If {timer} does not exist there is no error.
11839
11840 Can also be used as a |method|: >
11841 GetTimer()->timer_stop()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011842<
11843 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011844
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011845 {only available when compiled with the |+timers| feature}
11846
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011847
11848timer_stopall() *timer_stopall()*
11849 Stop all timers. The timer callbacks will no longer be
11850 invoked. Useful if a timer is misbehaving. If there are no
11851 timers there is no error.
11852
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011853 Return type: |Number|
11854
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011855 {only available when compiled with the |+timers| feature}
11856
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011857
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011858tolower({expr}) *tolower()*
11859 The result is a copy of the String given, with all uppercase
11860 characters turned into lowercase (just like applying |gu| to
Bram Moolenaard592deb2022-06-17 15:42:40 +010011861 the string). Returns an empty string on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011862
11863 Can also be used as a |method|: >
11864 GetText()->tolower()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011865<
11866 Return type: |String|
11867
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011868
11869toupper({expr}) *toupper()*
11870 The result is a copy of the String given, with all lowercase
11871 characters turned into uppercase (just like applying |gU| to
Bram Moolenaard592deb2022-06-17 15:42:40 +010011872 the string). Returns an empty string on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011873
11874 Can also be used as a |method|: >
11875 GetText()->toupper()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011876<
11877 Return type: |String|
11878
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011879
11880tr({src}, {fromstr}, {tostr}) *tr()*
11881 The result is a copy of the {src} string with all characters
11882 which appear in {fromstr} replaced by the character in that
11883 position in the {tostr} string. Thus the first character in
11884 {fromstr} is translated into the first character in {tostr}
11885 and so on. Exactly like the unix "tr" command.
11886 This code also deals with multibyte characters properly.
11887
Bram Moolenaard592deb2022-06-17 15:42:40 +010011888 Returns an empty string on error.
11889
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011890 Examples: >
11891 echo tr("hello there", "ht", "HT")
11892< returns "Hello THere" >
11893 echo tr("<blob>", "<>", "{}")
11894< returns "{blob}"
11895
11896 Can also be used as a |method|: >
11897 GetText()->tr(from, to)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011898<
11899 Return type: |String|
11900
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011901
11902trim({text} [, {mask} [, {dir}]]) *trim()*
11903 Return {text} as a String where any character in {mask} is
11904 removed from the beginning and/or end of {text}.
11905
Illia Bobyr80799172023-10-17 18:00:50 +020011906 If {mask} is not given, or is an empty string, {mask} is all
11907 characters up to 0x20, which includes Tab, space, NL and CR,
11908 plus the non-breaking space character 0xa0.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011909
11910 The optional {dir} argument specifies where to remove the
11911 characters:
11912 0 remove from the beginning and end of {text}
11913 1 remove only at the beginning of {text}
11914 2 remove only at the end of {text}
11915 When omitted both ends are trimmed.
11916
11917 This function deals with multibyte characters properly.
Bram Moolenaard592deb2022-06-17 15:42:40 +010011918 Returns an empty string on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011919
11920 Examples: >
11921 echo trim(" some text ")
11922< returns "some text" >
Bram Moolenaarc51cf032022-02-26 12:25:45 +000011923 echo trim(" \r\t\t\r RESERVE \t\n\x0B\xA0") .. "_TAIL"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011924< returns "RESERVE_TAIL" >
11925 echo trim("rm<Xrm<>X>rrm", "rm<>")
11926< returns "Xrm<>X" (characters in the middle are not removed) >
11927 echo trim(" vim ", " ", 2)
11928< returns " vim"
11929
11930 Can also be used as a |method|: >
11931 GetText()->trim()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011932<
11933 Return type: |String|
11934
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011935
11936trunc({expr}) *trunc()*
11937 Return the largest integral value with magnitude less than or
11938 equal to {expr} as a |Float| (truncate towards zero).
11939 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaard592deb2022-06-17 15:42:40 +010011940 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011941 Examples: >
11942 echo trunc(1.456)
11943< 1.0 >
11944 echo trunc(-5.456)
11945< -5.0 >
11946 echo trunc(4.0)
11947< 4.0
11948
11949 Can also be used as a |method|: >
11950 Compute()->trunc()
11951<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020011952 Return type: |Float|
11953
11954
Yegappan Lakshmanan1c2f4752025-03-30 15:37:24 +020011955tuple2list({tuple}) *tuple2list()*
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +010011956 Create a List from a shallow copy of the tuple items.
11957 Examples: >
11958 tuple2list((1, 2, 3)) returns [1, 2, 3]
11959< |list2tuple()| does the opposite.
11960
11961 This function doesn't recursively convert all the Tuple items
11962 in {tuple} to a List. Note that the items are identical
11963 between the list and the tuple, changing an item changes the
11964 contents of both the tuple and the list.
11965
11966 Returns an empty list on error.
11967
11968 Can also be used as a |method|: >
11969 GetTuple()->tuple2list()
11970<
11971 Return type: list<{type}> (depending on the given |Tuple|)
11972
11973
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011974 *type()*
11975type({expr}) The result is a Number representing the type of {expr}.
11976 Instead of using the number directly, it is better to use the
11977 v:t_ variable that has the value:
11978 Number: 0 |v:t_number|
11979 String: 1 |v:t_string|
11980 Funcref: 2 |v:t_func|
11981 List: 3 |v:t_list|
11982 Dictionary: 4 |v:t_dict|
11983 Float: 5 |v:t_float|
11984 Boolean: 6 |v:t_bool| (v:false and v:true)
11985 None: 7 |v:t_none| (v:null and v:none)
11986 Job: 8 |v:t_job|
11987 Channel: 9 |v:t_channel|
11988 Blob: 10 |v:t_blob|
h_east596a9f22023-11-21 21:24:23 +090011989 Class: 12 |v:t_class|
11990 Object: 13 |v:t_object|
Yegappan Lakshmanan2a71b542023-12-14 20:03:03 +010011991 Typealias: 14 |v:t_typealias|
Yegappan Lakshmanan3164cf82024-03-28 10:36:42 +010011992 Enum: 15 |v:t_enum|
11993 EnumValue: 16 |v:t_enumvalue|
Yegappan Lakshmanan9cb865e2025-03-23 16:42:16 +010011994 Tuple: 17 |v:t_tuple|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000011995 For backward compatibility, this method can be used: >
11996 :if type(myvar) == type(0)
11997 :if type(myvar) == type("")
11998 :if type(myvar) == type(function("tr"))
11999 :if type(myvar) == type([])
12000 :if type(myvar) == type({})
12001 :if type(myvar) == type(0.0)
12002 :if type(myvar) == type(v:false)
12003 :if type(myvar) == type(v:none)
12004< To check if the v:t_ variables exist use this: >
12005 :if exists('v:t_number')
12006
12007< Can also be used as a |method|: >
12008 mylist->type()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012009<
12010 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012011
12012
12013typename({expr}) *typename()*
12014 Return a string representation of the type of {expr}.
12015 Example: >
12016 echo typename([1, 2, 3])
Kota Kato66bb9ae2023-01-17 18:31:56 +000012017< list<number> ~
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012018
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012019 Return type: |String|
12020
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012021
12022undofile({name}) *undofile()*
12023 Return the name of the undo file that would be used for a file
12024 with name {name} when writing. This uses the 'undodir'
12025 option, finding directories that exist. It does not check if
12026 the undo file exists.
12027 {name} is always expanded to the full path, since that is what
12028 is used internally.
12029 If {name} is empty undofile() returns an empty string, since a
12030 buffer without a file name will not write an undo file.
12031 Useful in combination with |:wundo| and |:rundo|.
12032 When compiled without the |+persistent_undo| option this always
12033 returns an empty string.
12034
12035 Can also be used as a |method|: >
12036 GetFilename()->undofile()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012037<
12038 Return type: |String|
12039
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012040
Devin J. Pohly5fee1112023-04-23 20:26:59 -050012041undotree([{buf}]) *undotree()*
12042 Return the current state of the undo tree for the current
12043 buffer, or for a specific buffer if {buf} is given. The
12044 result is a dictionary with the following items:
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012045 "seq_last" The highest undo sequence number used.
12046 "seq_cur" The sequence number of the current position in
12047 the undo tree. This differs from "seq_last"
12048 when some changes were undone.
12049 "time_cur" Time last used for |:earlier| and related
12050 commands. Use |strftime()| to convert to
12051 something readable.
12052 "save_last" Number of the last file write. Zero when no
12053 write yet.
12054 "save_cur" Number of the current position in the undo
12055 tree.
12056 "synced" Non-zero when the last undo block was synced.
12057 This happens when waiting from input from the
12058 user. See |undo-blocks|.
12059 "entries" A list of dictionaries with information about
12060 undo blocks.
12061
12062 The first item in the "entries" list is the oldest undo item.
12063 Each List item is a |Dictionary| with these items:
12064 "seq" Undo sequence number. Same as what appears in
12065 |:undolist|.
12066 "time" Timestamp when the change happened. Use
12067 |strftime()| to convert to something readable.
12068 "newhead" Only appears in the item that is the last one
12069 that was added. This marks the last change
12070 and where further changes will be added.
12071 "curhead" Only appears in the item that is the last one
12072 that was undone. This marks the current
12073 position in the undo tree, the block that will
12074 be used by a redo command. When nothing was
12075 undone after the last change this item will
12076 not appear anywhere.
12077 "save" Only appears on the last block before a file
12078 write. The number is the write count. The
12079 first write has number 1, the last one the
12080 "save_last" mentioned above.
12081 "alt" Alternate entry. This is again a List of undo
12082 blocks. Each item may again have an "alt"
12083 item.
12084
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012085 Return type: dict<any>
12086
12087
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012088uniq({list} [, {func} [, {dict}]]) *uniq()* *E882*
12089 Remove second and succeeding copies of repeated adjacent
12090 {list} items in-place. Returns {list}. If you want a list
12091 to remain unmodified make a copy first: >
12092 :let newlist = uniq(copy(mylist))
12093< The default compare function uses the string representation of
12094 each item. For the use of {func} and {dict} see |sort()|.
12095
Bram Moolenaard592deb2022-06-17 15:42:40 +010012096 Returns zero if {list} is not a |List|.
12097
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012098 Can also be used as a |method|: >
12099 mylist->uniq()
Christian Brabandt67672ef2023-04-24 21:09:54 +010012100<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012101 Return type: list<{type}>
12102
12103
Christian Brabandt67672ef2023-04-24 21:09:54 +010012104 *utf16idx()*
12105utf16idx({string}, {idx} [, {countcc} [, {charidx}]])
Yegappan Lakshmanan577922b2023-06-08 17:09:45 +010012106 Same as |charidx()| but returns the UTF-16 code unit index of
12107 the byte at {idx} in {string} (after converting it to UTF-16).
Christian Brabandt67672ef2023-04-24 21:09:54 +010012108
12109 When {charidx} is present and TRUE, {idx} is used as the
12110 character index in the String {string} instead of as the byte
12111 index.
Yegappan Lakshmanan95707032023-06-14 13:10:15 +010012112 An {idx} in the middle of a UTF-8 sequence is rounded
12113 downwards to the beginning of that sequence.
Christian Brabandt67672ef2023-04-24 21:09:54 +010012114
Yegappan Lakshmanan577922b2023-06-08 17:09:45 +010012115 Returns -1 if the arguments are invalid or if there are less
12116 than {idx} bytes in {string}. If there are exactly {idx} bytes
12117 the length of the string in UTF-16 code units is returned.
12118
Christian Brabandt67672ef2023-04-24 21:09:54 +010012119 See |byteidx()| and |byteidxcomp()| for getting the byte index
12120 from the UTF-16 index and |charidx()| for getting the
12121 character index from the UTF-16 index.
12122 Refer to |string-offset-encoding| for more information.
12123 Examples: >
12124 echo utf16idx('a😊😊', 3) returns 2
12125 echo utf16idx('a😊😊', 7) returns 4
12126 echo utf16idx('a😊😊', 1, 0, 1) returns 2
12127 echo utf16idx('a😊😊', 2, 0, 1) returns 4
12128 echo utf16idx('aą́c', 6) returns 2
12129 echo utf16idx('aą́c', 6, 1) returns 4
12130 echo utf16idx('a😊😊', 9) returns -1
12131<
12132 Can also be used as a |method|: >
12133 GetName()->utf16idx(idx)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012134<
12135 Return type: |Number|
Christian Brabandt67672ef2023-04-24 21:09:54 +010012136
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012137
12138values({dict}) *values()*
12139 Return a |List| with all the values of {dict}. The |List| is
12140 in arbitrary order. Also see |items()| and |keys()|.
Bram Moolenaard592deb2022-06-17 15:42:40 +010012141 Returns zero if {dict} is not a |Dict|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012142
12143 Can also be used as a |method|: >
12144 mydict->values()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012145<
12146 Return type: list<any>
12147
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012148
zeertzjq825cf812023-08-17 22:55:25 +020012149virtcol({expr} [, {list} [, {winid}]]) *virtcol()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012150 The result is a Number, which is the screen column of the file
12151 position given with {expr}. That is, the last screen position
12152 occupied by the character at that position, when the screen
12153 would be of unlimited width. When there is a <Tab> at the
12154 position, the returned Number will be the column at the end of
12155 the <Tab>. For example, for a <Tab> in column 1, with 'ts'
12156 set to 8, it returns 8. |conceal| is ignored.
12157 For the byte position use |col()|.
LemonBoy0f7a3e12022-05-26 12:10:37 +010012158
zeertzjq02f3eba2024-06-12 20:45:24 +020012159 For the use of {expr} see |getpos()| and |col()|.
zeertzjqd353d272024-06-13 23:00:25 +080012160 When {expr} is "$", it means the end of the cursor line, so
12161 the result is the number of cells in the cursor line plus one.
LemonBoy0f7a3e12022-05-26 12:10:37 +010012162
12163 When 'virtualedit' is used {expr} can be [lnum, col, off],
12164 where "off" is the offset in screen columns from the start of
12165 the character. E.g., a position within a <Tab> or after the
12166 last character. When "off" is omitted zero is used. When
12167 Virtual editing is active in the current mode, a position
12168 beyond the end of the line can be returned. Also see
12169 |'virtualedit'|
12170
zeertzjq825cf812023-08-17 22:55:25 +020012171 If {list} is present and non-zero then virtcol() returns a
12172 List with the first and last screen position occupied by the
LemonBoy0f7a3e12022-05-26 12:10:37 +010012173 character.
12174
zeertzjq825cf812023-08-17 22:55:25 +020012175 With the optional {winid} argument the values are obtained for
12176 that window instead of the current window.
12177
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012178 Note that only marks in the current file can be used.
zeertzjq02f3eba2024-06-12 20:45:24 +020012179
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012180 Examples: >
LemonBoy0f7a3e12022-05-26 12:10:37 +010012181 " With text "foo^Lbar" and cursor on the "^L":
12182
12183 virtcol(".") " returns 5
12184 virtcol(".", 1) " returns [4, 5]
12185 virtcol("$") " returns 9
12186
12187 " With text " there", with 't at 'h':
12188
12189 virtcol("'t") " returns 6
zeertzjq02f3eba2024-06-12 20:45:24 +020012190<
12191 The first column is 1. 0 or [0, 0] is returned for an error.
12192
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012193 A more advanced example that echoes the maximum length of
12194 all lines: >
12195 echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
12196
12197< Can also be used as a |method|: >
12198 GetPos()->virtcol()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012199<
12200 Return type: |Number|
12201
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012202
Bram Moolenaar5a6ec102022-05-27 21:58:00 +010012203virtcol2col({winid}, {lnum}, {col}) *virtcol2col()*
12204 The result is a Number, which is the byte index of the
12205 character in window {winid} at buffer line {lnum} and virtual
12206 column {col}.
12207
zeertzjqb583eda2023-10-14 11:32:28 +020012208 If buffer line {lnum} is an empty line, 0 is returned.
12209
Bram Moolenaar5a6ec102022-05-27 21:58:00 +010012210 If {col} is greater than the last virtual column in line
12211 {lnum}, then the byte index of the character at the last
12212 virtual column is returned.
12213
Yegappan Lakshmananb209b862023-08-15 23:01:44 +020012214 For a multi-byte character, the column number of the first
12215 byte in the character is returned.
12216
Bram Moolenaar5a6ec102022-05-27 21:58:00 +010012217 The {winid} argument can be the window number or the
12218 |window-ID|. If this is zero, then the current window is used.
12219
12220 Returns -1 if the window {winid} doesn't exist or the buffer
12221 line {lnum} or virtual column {col} is invalid.
12222
12223 See also |screenpos()|, |virtcol()| and |col()|.
12224
12225 Can also be used as a |method|: >
12226 GetWinid()->virtcol2col(lnum, col)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012227<
12228 Return type: |Number|
12229
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012230
12231visualmode([{expr}]) *visualmode()*
12232 The result is a String, which describes the last Visual mode
12233 used in the current buffer. Initially it returns an empty
12234 string, but once Visual mode has been used, it returns "v",
12235 "V", or "<CTRL-V>" (a single CTRL-V character) for
12236 character-wise, line-wise, or block-wise Visual mode
12237 respectively.
12238 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +000012239 :exe "normal " .. visualmode()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012240< This enters the same Visual mode as before. It is also useful
12241 in scripts if you wish to act differently depending on the
12242 Visual mode that was used.
12243 If Visual mode is active, use |mode()| to get the Visual mode
12244 (e.g., in a |:vmap|).
12245 If {expr} is supplied and it evaluates to a non-zero Number or
12246 a non-empty String, then the Visual mode will be cleared and
12247 the old value is returned. See |non-zero-arg|.
12248
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012249 Return type: |String|
12250
12251
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012252wildmenumode() *wildmenumode()*
12253 Returns |TRUE| when the wildmenu is active and |FALSE|
12254 otherwise. See 'wildmenu' and 'wildmode'.
12255 This can be used in mappings to handle the 'wildcharm' option
12256 gracefully. (Makes only sense with |mapmode-c| mappings).
12257
12258 For example to make <c-j> work like <down> in wildmode, use: >
12259 :cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"
12260<
Milly6c2fc372024-10-16 22:11:17 +020012261 (Note: this needs the 'wildcharm' option set appropriately).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012262
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012263 Return type: |Number|
12264
12265
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012266win_execute({id}, {command} [, {silent}]) *win_execute()*
12267 Like `execute()` but in the context of window {id}.
12268 The window will temporarily be made the current window,
12269 without triggering autocommands or changing directory. When
12270 executing {command} autocommands will be triggered, this may
Bram Moolenaarb7398fe2023-05-14 18:50:25 +010012271 have unexpected side effects. Use `:noautocmd` if needed.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012272 Example: >
12273 call win_execute(winid, 'set syntax=python')
12274< Doing the same with `setwinvar()` would not trigger
12275 autocommands and not actually show syntax highlighting.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012276 *E994*
12277 Not all commands are allowed in popup windows.
12278 When window {id} does not exist then no error is given and
12279 an empty string is returned.
12280
12281 Can also be used as a |method|, the base is passed as the
12282 second argument: >
12283 GetCommand()->win_execute(winid)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012284<
12285 Return type: |String|
12286
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012287
12288win_findbuf({bufnr}) *win_findbuf()*
12289 Returns a |List| with |window-ID|s for windows that contain
12290 buffer {bufnr}. When there is none the list is empty.
12291
12292 Can also be used as a |method|: >
12293 GetBufnr()->win_findbuf()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012294<
12295 Return type: list<number> or list<any>
12296
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012297
12298win_getid([{win} [, {tab}]]) *win_getid()*
12299 Get the |window-ID| for the specified window.
12300 When {win} is missing use the current window.
12301 With {win} this is the window number. The top window has
12302 number 1.
12303 Without {tab} use the current tab, otherwise the tab with
12304 number {tab}. The first tab has number one.
12305 Return zero if the window cannot be found.
12306
12307 Can also be used as a |method|: >
12308 GetWinnr()->win_getid()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012309<
12310 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012311
12312
12313win_gettype([{nr}]) *win_gettype()*
12314 Return the type of the window:
12315 "autocmd" autocommand window. Temporary window
12316 used to execute autocommands.
12317 "command" command-line window |cmdwin|
12318 (empty) normal window
12319 "loclist" |location-list-window|
12320 "popup" popup window |popup|
12321 "preview" preview window |preview-window|
12322 "quickfix" |quickfix-window|
12323 "unknown" window {nr} not found
12324
12325 When {nr} is omitted return the type of the current window.
12326 When {nr} is given return the type of this window by number or
12327 |window-ID|.
12328
12329 Also see the 'buftype' option. When running a terminal in a
12330 popup window then 'buftype' is "terminal" and win_gettype()
12331 returns "popup".
12332
12333 Can also be used as a |method|: >
12334 GetWinid()->win_gettype()
12335<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012336 Return type: |String|
12337
12338
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012339win_gotoid({expr}) *win_gotoid()*
12340 Go to window with ID {expr}. This may also change the current
12341 tabpage.
12342 Return TRUE if successful, FALSE if the window cannot be found.
12343
12344 Can also be used as a |method|: >
12345 GetWinid()->win_gotoid()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012346<
12347 Return type: |Number|
12348
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012349
12350win_id2tabwin({expr}) *win_id2tabwin()*
12351 Return a list with the tab number and window number of window
12352 with ID {expr}: [tabnr, winnr].
12353 Return [0, 0] if the window cannot be found.
12354
12355 Can also be used as a |method|: >
12356 GetWinid()->win_id2tabwin()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012357<
12358 Return type: list<number>
12359
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012360
12361win_id2win({expr}) *win_id2win()*
12362 Return the window number of window with ID {expr}.
12363 Return 0 if the window cannot be found in the current tabpage.
12364
12365 Can also be used as a |method|: >
12366 GetWinid()->win_id2win()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012367<
12368 Return type: |Number|
12369
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012370
Daniel Steinbergee630312022-01-10 13:36:34 +000012371win_move_separator({nr}, {offset}) *win_move_separator()*
12372 Move window {nr}'s vertical separator (i.e., the right border)
12373 by {offset} columns, as if being dragged by the mouse. {nr}
12374 can be a window number or |window-ID|. A positive {offset}
12375 moves right and a negative {offset} moves left. Moving a
12376 window's vertical separator will change the width of the
12377 window and the width of other windows adjacent to the vertical
12378 separator. The magnitude of movement may be smaller than
12379 specified (e.g., as a consequence of maintaining
12380 'winminwidth'). Returns TRUE if the window can be found and
12381 FALSE otherwise.
Bram Moolenaard592deb2022-06-17 15:42:40 +010012382 This will fail for the rightmost window and a full-width
12383 window, since it has no separator on the right.
Bram Moolenaar76db9e02022-11-09 21:21:04 +000012384 Only works for the current tab page. *E1308*
Daniel Steinbergee630312022-01-10 13:36:34 +000012385
12386 Can also be used as a |method|: >
12387 GetWinnr()->win_move_separator(offset)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012388<
12389 Return type: |Number|
12390
Daniel Steinbergee630312022-01-10 13:36:34 +000012391
12392win_move_statusline({nr}, {offset}) *win_move_statusline()*
12393 Move window {nr}'s status line (i.e., the bottom border) by
12394 {offset} rows, as if being dragged by the mouse. {nr} can be a
12395 window number or |window-ID|. A positive {offset} moves down
12396 and a negative {offset} moves up. Moving a window's status
12397 line will change the height of the window and the height of
12398 other windows adjacent to the status line. The magnitude of
12399 movement may be smaller than specified (e.g., as a consequence
12400 of maintaining 'winminheight'). Returns TRUE if the window can
12401 be found and FALSE otherwise.
Bram Moolenaar76db9e02022-11-09 21:21:04 +000012402 Only works for the current tab page.
Daniel Steinbergee630312022-01-10 13:36:34 +000012403
12404 Can also be used as a |method|: >
12405 GetWinnr()->win_move_statusline(offset)
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012406<
12407 Return type: |Number|
12408
Daniel Steinbergee630312022-01-10 13:36:34 +000012409
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012410win_screenpos({nr}) *win_screenpos()*
12411 Return the screen position of window {nr} as a list with two
12412 numbers: [row, col]. The first window always has position
12413 [1, 1], unless there is a tabline, then it is [2, 1].
12414 {nr} can be the window number or the |window-ID|. Use zero
12415 for the current window.
Sean Dewar5866bc32024-03-13 20:17:24 +010012416 Returns [0, 0] if the window cannot be found.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012417
12418 Can also be used as a |method|: >
12419 GetWinid()->win_screenpos()
12420<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012421 Return type: list<number>
12422
12423
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012424win_splitmove({nr}, {target} [, {options}]) *win_splitmove()*
Sean Dewar96cc4ae2024-02-20 21:52:31 +010012425 Temporarily switch to window {target}, then move window {nr}
12426 to a new split adjacent to {target}.
12427 Unlike commands such as |:split|, no new windows are created
12428 (the |window-ID| of window {nr} is unchanged after the move).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012429
12430 Both {nr} and {target} can be window numbers or |window-ID|s.
12431 Both must be in the current tab page.
12432
12433 Returns zero for success, non-zero for failure.
12434
12435 {options} is a |Dictionary| with the following optional entries:
12436 "vertical" When TRUE, the split is created vertically,
12437 like with |:vsplit|.
12438 "rightbelow" When TRUE, the split is made below or to the
12439 right (if vertical). When FALSE, it is done
12440 above or to the left (if vertical). When not
12441 present, the values of 'splitbelow' and
12442 'splitright' are used.
12443
12444 Can also be used as a |method|: >
12445 GetWinid()->win_splitmove(target)
12446<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012447 Return type: |Number|
12448
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012449
12450 *winbufnr()*
12451winbufnr({nr}) The result is a Number, which is the number of the buffer
12452 associated with window {nr}. {nr} can be the window number or
12453 the |window-ID|.
12454 When {nr} is zero, the number of the buffer in the current
12455 window is returned.
12456 When window {nr} doesn't exist, -1 is returned.
12457 Example: >
12458 :echo "The file in the current window is " . bufname(winbufnr(0))
12459<
12460 Can also be used as a |method|: >
12461 FindWindow()->winbufnr()->bufname()
12462<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012463 Return type: |Number|
12464
12465
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012466 *wincol()*
12467wincol() The result is a Number, which is the virtual column of the
12468 cursor in the window. This is counting screen cells from the
12469 left side of the window. The leftmost column is one.
12470
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012471 Return type: |Number|
12472
12473
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012474 *windowsversion()*
12475windowsversion()
12476 The result is a String. For MS-Windows it indicates the OS
12477 version. E.g, Windows 10 is "10.0", Windows 8 is "6.2",
12478 Windows XP is "5.1". For non-MS-Windows systems the result is
12479 an empty string.
12480
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012481 Return type: |String|
12482
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012483winheight({nr}) *winheight()*
12484 The result is a Number, which is the height of window {nr}.
12485 {nr} can be the window number or the |window-ID|.
12486 When {nr} is zero, the height of the current window is
12487 returned. When window {nr} doesn't exist, -1 is returned.
12488 An existing window always has a height of zero or more.
12489 This excludes any window toolbar line.
12490 Examples: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +000012491 :echo "The current window has " .. winheight(0) .. " lines."
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012492
12493< Can also be used as a |method|: >
12494 GetWinid()->winheight()
12495<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012496 Return type: |Number|
12497
12498
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012499winlayout([{tabnr}]) *winlayout()*
12500 The result is a nested List containing the layout of windows
12501 in a tabpage.
12502
12503 Without {tabnr} use the current tabpage, otherwise the tabpage
12504 with number {tabnr}. If the tabpage {tabnr} is not found,
12505 returns an empty list.
12506
12507 For a leaf window, it returns:
12508 ['leaf', {winid}]
12509 For horizontally split windows, which form a column, it
12510 returns:
12511 ['col', [{nested list of windows}]]
12512 For vertically split windows, which form a row, it returns:
12513 ['row', [{nested list of windows}]]
12514
12515 Example: >
12516 " Only one window in the tab page
12517 :echo winlayout()
12518 ['leaf', 1000]
12519 " Two horizontally split windows
12520 :echo winlayout()
12521 ['col', [['leaf', 1000], ['leaf', 1001]]]
12522 " The second tab page, with three horizontally split
12523 " windows, with two vertically split windows in the
12524 " middle window
12525 :echo winlayout(2)
12526 ['col', [['leaf', 1002], ['row', [['leaf', 1003],
12527 ['leaf', 1001]]], ['leaf', 1000]]]
12528<
12529 Can also be used as a |method|: >
12530 GetTabnr()->winlayout()
12531<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012532 Return type: list<any>
12533
12534
12535winline() *winline()*
12536 The result is a Number, which is the screen line of the cursor
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012537 in the window. This is counting screen lines from the top of
12538 the window. The first line is one.
12539 If the cursor was moved the view on the file will be updated
12540 first, this may cause a scroll.
12541
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012542 Return type: |Number|
12543
12544
12545winnr([{arg}]) *winnr()*
12546 The result is a Number, which is the number of the current
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012547 window. The top window has number 1.
12548 Returns zero for a popup window.
12549
12550 The optional argument {arg} supports the following values:
12551 $ the number of the last window (the window
12552 count).
12553 # the number of the last accessed window (where
12554 |CTRL-W_p| goes to). If there is no previous
12555 window or it is in another tab page 0 is
Sean Deward64801e2024-03-12 20:46:12 +010012556 returned. May refer to the current window in
12557 some cases (e.g. when evaluating 'statusline'
12558 expressions).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012559 {N}j the number of the Nth window below the
12560 current window (where |CTRL-W_j| goes to).
12561 {N}k the number of the Nth window above the current
12562 window (where |CTRL-W_k| goes to).
12563 {N}h the number of the Nth window left of the
12564 current window (where |CTRL-W_h| goes to).
12565 {N}l the number of the Nth window right of the
12566 current window (where |CTRL-W_l| goes to).
12567 The number can be used with |CTRL-W_w| and ":wincmd w"
12568 |:wincmd|.
Bram Moolenaar016188f2022-06-06 20:52:59 +010012569 When {arg} is invalid an error is given and zero is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012570 Also see |tabpagewinnr()| and |win_getid()|.
12571 Examples: >
12572 let window_count = winnr('$')
12573 let prev_window = winnr('#')
12574 let wnum = winnr('3k')
12575
12576< Can also be used as a |method|: >
12577 GetWinval()->winnr()
12578<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012579 Return type: |Number|
12580
12581
12582winrestcmd() *winrestcmd()*
12583 Returns a sequence of |:resize| commands that should restore
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012584 the current window sizes. Only works properly when no windows
12585 are opened or closed and the current window and tab page is
12586 unchanged.
12587 Example: >
12588 :let cmd = winrestcmd()
12589 :call MessWithWindowSizes()
12590 :exe cmd
12591<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012592 Return type: |String|
12593
12594
12595winrestview({dict}) *winrestview()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012596 Uses the |Dictionary| returned by |winsaveview()| to restore
12597 the view of the current window.
12598 Note: The {dict} does not have to contain all values, that are
12599 returned by |winsaveview()|. If values are missing, those
12600 settings won't be restored. So you can use: >
12601 :call winrestview({'curswant': 4})
12602<
12603 This will only set the curswant value (the column the cursor
12604 wants to move on vertical movements) of the cursor to column 5
12605 (yes, that is 5), while all other settings will remain the
12606 same. This is useful, if you set the cursor position manually.
12607
12608 If you have changed the values the result is unpredictable.
12609 If the window size changed the result won't be the same.
12610
12611 Can also be used as a |method|: >
12612 GetView()->winrestview()
12613<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012614 Return type: |Number|
12615
12616
12617winsaveview() *winsaveview()*
12618 Returns a |Dictionary| that contains information to restore
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012619 the view of the current window. Use |winrestview()| to
12620 restore the view.
12621 This is useful if you have a mapping that jumps around in the
12622 buffer and you want to go back to the original view.
12623 This does not save fold information. Use the 'foldenable'
12624 option to temporarily switch off folding, so that folds are
12625 not opened when moving around. This may have side effects.
12626 The return value includes:
12627 lnum cursor line number
12628 col cursor column (Note: the first column
naohiro ono56200ee2022-01-01 14:59:44 +000012629 zero, as opposed to what |getcurpos()|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012630 returns)
12631 coladd cursor column offset for 'virtualedit'
naohiro ono56200ee2022-01-01 14:59:44 +000012632 curswant column for vertical movement (Note:
12633 the first column is zero, as opposed
12634 to what |getcurpos()| returns). After
12635 |$| command it will be a very large
12636 number equal to |v:maxcol|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012637 topline first line in the window
12638 topfill filler lines, only in diff mode
12639 leftcol first column displayed; only used when
12640 'wrap' is off
12641 skipcol columns skipped
12642 Note that no option values are saved.
12643
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012644 Return type: dict<number>
12645
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012646
12647winwidth({nr}) *winwidth()*
12648 The result is a Number, which is the width of window {nr}.
12649 {nr} can be the window number or the |window-ID|.
12650 When {nr} is zero, the width of the current window is
12651 returned. When window {nr} doesn't exist, -1 is returned.
12652 An existing window always has a width of zero or more.
12653 Examples: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +000012654 :echo "The current window has " .. winwidth(0) .. " columns."
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012655 :if winwidth(0) <= 50
12656 : 50 wincmd |
12657 :endif
12658< For getting the terminal or screen size, see the 'columns'
12659 option.
12660
12661 Can also be used as a |method|: >
12662 GetWinid()->winwidth()
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012663<
12664 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012665
12666
12667wordcount() *wordcount()*
12668 The result is a dictionary of byte/chars/word statistics for
12669 the current buffer. This is the same info as provided by
12670 |g_CTRL-G|
12671 The return value includes:
12672 bytes Number of bytes in the buffer
12673 chars Number of chars in the buffer
12674 words Number of words in the buffer
12675 cursor_bytes Number of bytes before cursor position
12676 (not in Visual mode)
12677 cursor_chars Number of chars before cursor position
12678 (not in Visual mode)
12679 cursor_words Number of words before cursor position
12680 (not in Visual mode)
12681 visual_bytes Number of bytes visually selected
12682 (only in Visual mode)
12683 visual_chars Number of chars visually selected
12684 (only in Visual mode)
12685 visual_words Number of words visually selected
12686 (only in Visual mode)
12687
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012688 Return type: dict<number>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012689
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012690
12691writefile({object}, {fname} [, {flags}]) *writefile()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012692 When {object} is a |List| write it to file {fname}. Each list
12693 item is separated with a NL. Each list item must be a String
12694 or Number.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012695 All NL characters are replaced with a NUL character.
12696 Inserting CR characters needs to be done before passing {list}
12697 to writefile().
Bram Moolenaar806a2732022-09-04 15:40:36 +010012698
12699 When {object} is a |Blob| write the bytes to file {fname}
12700 unmodified, also when binary mode is not specified.
12701
12702 {flags} must be a String. These characters are recognized:
12703
12704 'b' Binary mode is used: There will not be a NL after the
12705 last list item. An empty item at the end does cause the
12706 last line in the file to end in a NL.
12707
12708 'a' Append mode is used, lines are appended to the file: >
12709 :call writefile(["foo"], "event.log", "a")
12710 :call writefile(["bar"], "event.log", "a")
12711<
12712 'D' Delete the file when the current function ends. This
12713 works like: >
Bram Moolenaar938ae282023-02-20 20:44:55 +000012714 :defer delete({fname})
Bram Moolenaar806a2732022-09-04 15:40:36 +010012715< Fails when not in a function. Also see |:defer|.
12716
12717 's' fsync() is called after writing the file. This flushes
12718 the file to disk, if possible. This takes more time but
12719 avoids losing the file if the system crashes.
12720
12721 'S' fsync() is not called, even when 'fsync' is set.
12722
12723 When {flags} does not contain "S" or "s" then fsync() is
12724 called if the 'fsync' option is set.
12725
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012726 An existing file is overwritten, if possible.
Bram Moolenaar806a2732022-09-04 15:40:36 +010012727
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012728 When the write fails -1 is returned, otherwise 0. There is an
12729 error message if the file can't be created or when writing
12730 fails.
Bram Moolenaar806a2732022-09-04 15:40:36 +010012731
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012732 Also see |readfile()|.
12733 To copy a file byte for byte: >
12734 :let fl = readfile("foo", "b")
12735 :call writefile(fl, "foocopy", "b")
12736
12737< Can also be used as a |method|: >
12738 GetText()->writefile("thefile")
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012739<
12740 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012741
12742
12743xor({expr}, {expr}) *xor()*
12744 Bitwise XOR on the two arguments. The arguments are converted
12745 to a number. A List, Dict or Float argument causes an error.
Bram Moolenaar5a6ec102022-05-27 21:58:00 +010012746 Also see `and()` and `or()`.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012747 Example: >
12748 :let bits = xor(bits, 0x80)
12749<
12750 Can also be used as a |method|: >
12751 :let bits = bits->xor(0x80)
12752<
Christian Brabandt5674c9a2024-06-09 00:13:43 +020012753 Return type: |Number|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012754
12755==============================================================================
127563. Feature list *feature-list*
12757
12758There are three types of features:
127591. Features that are only supported when they have been enabled when Vim
12760 was compiled |+feature-list|. Example: >
12761 :if has("cindent")
12762< *gui_running*
127632. Features that are only supported when certain conditions have been met.
12764 Example: >
12765 :if has("gui_running")
12766< *has-patch*
127673. Beyond a certain version or at a certain version and including a specific
12768 patch. The "patch-7.4.248" feature means that the Vim version is 7.5 or
12769 later, or it is version 7.4 and patch 248 was included. Example: >
12770 :if has("patch-7.4.248")
12771< Note that it's possible for patch 248 to be omitted even though 249 is
12772 included. Only happens when cherry-picking patches.
12773 Note that this form only works for patch 7.4.237 and later, before that
12774 you need to check for the patch and the v:version. Example (checking
12775 version 6.2.148 or later): >
12776 :if v:version > 602 || (v:version == 602 && has("patch148"))
12777
12778Hint: To find out if Vim supports backslashes in a file name (MS-Windows),
12779use: `if exists('+shellslash')`
12780
12781
12782acl Compiled with |ACL| support.
Bram Moolenaar2ee347f2022-08-26 17:53:44 +010012783all_builtin_terms Compiled with all builtin terminals enabled. (always
12784 true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012785amiga Amiga version of Vim.
12786arabic Compiled with Arabic support |Arabic|.
12787arp Compiled with ARP support (Amiga).
12788autocmd Compiled with autocommand support. (always true)
12789autochdir Compiled with support for 'autochdir'
12790autoservername Automatically enable |clientserver|
12791balloon_eval Compiled with |balloon-eval| support.
12792balloon_multiline GUI supports multiline balloons.
12793beos BeOS version of Vim.
12794browse Compiled with |:browse| support, and browse() will
12795 work.
12796browsefilter Compiled with support for |browsefilter|.
12797bsd Compiled on an OS in the BSD family (excluding macOS).
Bram Moolenaar2ee347f2022-08-26 17:53:44 +010012798builtin_terms Compiled with some builtin terminals. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012799byte_offset Compiled with support for 'o' in 'statusline'
12800channel Compiled with support for |channel| and |job|
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010012801cindent Compiled with 'cindent' support. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012802clientserver Compiled with remote invocation support |clientserver|.
12803clipboard Compiled with 'clipboard' support.
12804clipboard_working Compiled with 'clipboard' support and it can be used.
12805cmdline_compl Compiled with |cmdline-completion| support.
12806cmdline_hist Compiled with |cmdline-history| support.
12807cmdline_info Compiled with 'showcmd' and 'ruler' support.
12808comments Compiled with |'comments'| support.
12809compatible Compiled to be very Vi compatible.
12810conpty Platform where |ConPTY| can be used.
12811cryptv Compiled with encryption support |encryption|.
12812cscope Compiled with |cscope| support.
12813cursorbind Compiled with |'cursorbind'| (always true)
12814debug Compiled with "DEBUG" defined.
12815dialog_con Compiled with console dialog support.
glepnirdf461152024-04-04 22:23:29 +020012816dialog_con_gui Compiled with console and GUI dialog support.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012817dialog_gui Compiled with GUI dialog support.
12818diff Compiled with |vimdiff| and 'diff' support.
12819digraphs Compiled with support for digraphs.
12820directx Compiled with support for DirectX and 'renderoptions'.
12821dnd Compiled with support for the "~ register |quote_~|.
12822drop_file Compiled with |drop_file| support.
12823ebcdic Compiled on a machine with ebcdic character set.
12824emacs_tags Compiled with support for Emacs tags.
12825eval Compiled with expression evaluation support. Always
12826 true, of course!
12827ex_extra |+ex_extra| (always true)
12828extra_search Compiled with support for |'incsearch'| and
12829 |'hlsearch'|
12830farsi Support for Farsi was removed |farsi|.
Bram Moolenaarf80f40a2022-08-25 16:02:23 +010012831file_in_path Compiled with support for |gf| and |<cfile>| (always
12832 true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012833filterpipe When 'shelltemp' is off pipes are used for shell
12834 read/write/filter commands
12835find_in_path Compiled with support for include file searches
12836 |+find_in_path|.
12837float Compiled with support for |Float|.
12838fname_case Case in file names matters (for Amiga and MS-Windows
12839 this is not present).
12840folding Compiled with |folding| support.
12841footer Compiled with GUI footer support. |gui-footer|
12842fork Compiled to use fork()/exec() instead of system().
12843gettext Compiled with message translation |multi-lang|
12844gui Compiled with GUI enabled.
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +010012845gui_athena Compiled with Athena GUI (always false).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012846gui_gnome Compiled with Gnome support (gui_gtk is also defined).
12847gui_gtk Compiled with GTK+ GUI (any version).
12848gui_gtk2 Compiled with GTK+ 2 GUI (gui_gtk is also defined).
12849gui_gtk3 Compiled with GTK+ 3 GUI (gui_gtk is also defined).
12850gui_haiku Compiled with Haiku GUI.
12851gui_mac Compiled with Macintosh GUI.
12852gui_motif Compiled with Motif GUI.
12853gui_photon Compiled with Photon GUI.
12854gui_running Vim is running in the GUI, or it will start soon.
12855gui_win32 Compiled with MS-Windows Win32 GUI.
12856gui_win32s idem, and Win32s system being used (Windows 3.1)
12857haiku Haiku version of Vim.
12858hangul_input Compiled with Hangul input support. |hangul|
12859hpux HP-UX version of Vim.
Zhaoming Luoa41dfcd2025-02-06 21:39:35 +010012860hurd GNU/Hurd version of Vim
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012861iconv Can use iconv() for conversion.
12862insert_expand Compiled with support for CTRL-X expansion commands in
12863 Insert mode. (always true)
12864job Compiled with support for |channel| and |job|
12865ipv6 Compiled with support for IPv6 networking in |channel|.
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010012866jumplist Compiled with |jumplist| support. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012867keymap Compiled with 'keymap' support.
12868lambda Compiled with |lambda| support.
12869langmap Compiled with 'langmap' support.
12870libcall Compiled with |libcall()| support.
12871linebreak Compiled with 'linebreak', 'breakat', 'showbreak' and
12872 'breakindent' support.
12873linux Linux version of Vim.
12874lispindent Compiled with support for lisp indenting.
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010012875 (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012876listcmds Compiled with commands for the buffer list |:files|
12877 and the argument list |arglist|.
12878localmap Compiled with local mappings and abbr. |:map-local|
12879lua Compiled with Lua interface |Lua|.
12880mac Any Macintosh version of Vim cf. osx
12881macunix Synonym for osxdarwin
12882menu Compiled with support for |:menu|.
12883mksession Compiled with support for |:mksession|.
12884modify_fname Compiled with file name modifiers. |filename-modifiers|
12885 (always true)
12886mouse Compiled with support for mouse.
12887mouse_dec Compiled with support for Dec terminal mouse.
12888mouse_gpm Compiled with support for gpm (Linux console mouse)
12889mouse_gpm_enabled GPM mouse is working
12890mouse_netterm Compiled with support for netterm mouse.
12891mouse_pterm Compiled with support for qnx pterm mouse.
12892mouse_sysmouse Compiled with support for sysmouse (*BSD console mouse)
12893mouse_sgr Compiled with support for sgr mouse.
12894mouse_urxvt Compiled with support for urxvt mouse.
12895mouse_xterm Compiled with support for xterm mouse.
12896mouseshape Compiled with support for 'mouseshape'.
12897multi_byte Compiled with support for 'encoding' (always true)
12898multi_byte_encoding 'encoding' is set to a multibyte encoding.
12899multi_byte_ime Compiled with support for IME input method.
12900multi_lang Compiled with support for multiple languages.
12901mzscheme Compiled with MzScheme interface |mzscheme|.
12902nanotime Compiled with sub-second time stamp checks.
12903netbeans_enabled Compiled with support for |netbeans| and connected.
12904netbeans_intg Compiled with support for |netbeans|.
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010012905num64 Compiled with 64-bit |Number| support. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012906ole Compiled with OLE automation support for Win32.
12907osx Compiled for macOS cf. mac
12908osxdarwin Compiled for macOS, with |mac-darwin-feature|
12909packages Compiled with |packages| support.
12910path_extra Compiled with up/downwards search in 'path' and 'tags'
12911perl Compiled with Perl interface.
12912persistent_undo Compiled with support for persistent undo history.
12913postscript Compiled with PostScript file printing.
12914printer Compiled with |:hardcopy| support.
12915profile Compiled with |:profile| support.
Bram Moolenaar71badf92023-04-22 22:40:14 +010012916prof_nsec Profile results are in nanoseconds.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012917python Python 2.x interface available. |has-python|
12918python_compiled Compiled with Python 2.x interface. |has-python|
12919python_dynamic Python 2.x interface is dynamically loaded. |has-python|
12920python3 Python 3.x interface available. |has-python|
12921python3_compiled Compiled with Python 3.x interface. |has-python|
12922python3_dynamic Python 3.x interface is dynamically loaded. |has-python|
Yee Cheng Chinc13b3d12023-08-20 21:18:38 +020012923python3_stable Python 3.x interface is using Python Stable ABI. |has-python|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012924pythonx Python 2.x and/or 3.x interface available. |python_x|
12925qnx QNX version of Vim.
12926quickfix Compiled with |quickfix| support.
12927reltime Compiled with |reltime()| support.
12928rightleft Compiled with 'rightleft' support.
12929ruby Compiled with Ruby interface |ruby|.
12930scrollbind Compiled with 'scrollbind' support. (always true)
12931showcmd Compiled with 'showcmd' support.
12932signs Compiled with |:sign| support.
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010012933smartindent Compiled with 'smartindent' support. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012934sodium Compiled with libsodium for better crypt support
12935sound Compiled with sound support, e.g. `sound_playevent()`
12936spell Compiled with spell checking support |spell|.
12937startuptime Compiled with |--startuptime| support.
12938statusline Compiled with support for 'statusline', 'rulerformat'
12939 and special formats of 'titlestring' and 'iconstring'.
12940sun SunOS version of Vim.
12941sun_workshop Support for Sun |workshop| has been removed.
12942syntax Compiled with syntax highlighting support |syntax|.
12943syntax_items There are active syntax highlighting items for the
12944 current buffer.
12945system Compiled to use system() instead of fork()/exec().
12946tag_binary Compiled with binary searching in tags files
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010012947 |tag-binary-search|. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012948tag_old_static Support for old static tags was removed, see
12949 |tag-old-static|.
12950tcl Compiled with Tcl interface.
12951termguicolors Compiled with true color in terminal support.
12952terminal Compiled with |terminal| support.
12953terminfo Compiled with terminfo instead of termcap.
12954termresponse Compiled with support for |t_RV| and |v:termresponse|.
12955textobjects Compiled with support for |text-objects|.
12956textprop Compiled with support for |text-properties|.
12957tgetent Compiled with tgetent support, able to use a termcap
12958 or terminfo file.
12959timers Compiled with |timer_start()| support.
12960title Compiled with window title support |'title'|.
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010012961 (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012962toolbar Compiled with support for |gui-toolbar|.
12963ttyin input is a terminal (tty)
12964ttyout output is a terminal (tty)
12965unix Unix version of Vim. *+unix*
12966unnamedplus Compiled with support for "unnamedplus" in 'clipboard'
12967user_commands User-defined commands. (always true)
12968vartabs Compiled with variable tabstop support |'vartabstop'|.
12969vcon Win32: Virtual console support is working, can use
12970 'termguicolors'. Also see |+vtp|.
12971vertsplit Compiled with vertically split windows |:vsplit|.
12972 (always true)
12973vim_starting True while initial source'ing takes place. |startup|
12974 *vim_starting*
Bram Moolenaara6feb162022-01-02 12:06:33 +000012975vim9script Compiled with |Vim9| script support
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012976viminfo Compiled with viminfo support.
12977vimscript-1 Compiled Vim script version 1 support
12978vimscript-2 Compiled Vim script version 2 support
12979vimscript-3 Compiled Vim script version 3 support
Bram Moolenaar8a3b8052022-06-26 12:21:15 +010012980vimscript-4 Compiled Vim script version 4 support
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000012981virtualedit Compiled with 'virtualedit' option. (always true)
12982visual Compiled with Visual mode. (always true)
12983visualextra Compiled with extra Visual mode commands. (always
12984 true) |blockwise-operators|.
12985vms VMS version of Vim.
12986vreplace Compiled with |gR| and |gr| commands. (always true)
12987vtp Compiled for vcon support |+vtp| (check vcon to find
12988 out if it works in the current console).
12989wildignore Compiled with 'wildignore' option.
12990wildmenu Compiled with 'wildmenu' option.
12991win16 old version for MS-Windows 3.1 (always false)
12992win32 Win32 version of Vim (MS-Windows 95 and later, 32 or
12993 64 bits)
12994win32unix Win32 version of Vim, using Unix files (Cygwin)
12995win64 Win64 version of Vim (MS-Windows 64 bit).
12996win95 Win32 version for MS-Windows 95/98/ME (always false)
12997winaltkeys Compiled with 'winaltkeys' option.
12998windows Compiled with support for more than one window.
12999 (always true)
13000writebackup Compiled with 'writebackup' default on.
Christian Brabandte085dfd2023-09-30 12:49:18 +020013001xattr Compiled with extended attributes support |xattr|
13002 (currently only supported on Linux).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000013003xfontset Compiled with X fontset support |xfontset|.
13004xim Compiled with X input method support |xim|.
13005xpm Compiled with pixmap support.
13006xpm_w32 Compiled with pixmap support for Win32. (Only for
13007 backward compatibility. Use "xpm" instead.)
13008xsmp Compiled with X session management support.
13009xsmp_interact Compiled with interactive X session management support.
13010xterm_clipboard Compiled with support for xterm clipboard.
13011xterm_save Compiled with support for saving and restoring the
13012 xterm screen.
13013x11 Compiled with X11 support.
13014
13015
13016==============================================================================
130174. Matching a pattern in a String *string-match*
13018
13019This is common between several functions. A regexp pattern as explained at
13020|pattern| is normally used to find a match in the buffer lines. When a
13021pattern is used to find a match in a String, almost everything works in the
13022same way. The difference is that a String is handled like it is one line.
13023When it contains a "\n" character, this is not seen as a line break for the
13024pattern. It can be matched with a "\n" in the pattern, or with ".". Example:
13025>
13026 :let a = "aaaa\nxxxx"
13027 :echo matchstr(a, "..\n..")
13028 aa
13029 xx
13030 :echo matchstr(a, "a.x")
13031 a
13032 x
13033
13034Don't forget that "^" will only match at the first character of the String and
13035"$" at the last character of the string. They don't match after or before a
13036"\n".
13037
13038 vim:tw=78:ts=8:noet:ft=help:norl: