blob: 2d615c5ac2dc302ec2f391722f9c39ae6751e421 [file] [log] [blame]
Bram Moolenaar1588bc82022-03-08 21:35:07 +00001*builtin.txt* For Vim version 8.2. Last change: 2022 Mar 08
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002
3
4 VIM REFERENCE MANUAL by Bram Moolenaar
5
6
7Builtin functions *builtin-functions*
8
9Note: Expression evaluation can be disabled at compile time. If this has been
10done, the builtin functions are not available. See |+eval| and
11|no-eval-feature|.
12
131. Overview |builtin-function-list|
142. Details |builtin-function-details|
153. Feature list |feature-list|
164. Matching a pattern in a String |string-match|
17
18==============================================================================
191. Overview *builtin-function-list*
20
21Use CTRL-] on the function name to jump to the full explanation.
22
23USAGE RESULT DESCRIPTION ~
24
25abs({expr}) Float or Number absolute value of {expr}
26acos({expr}) Float arc cosine of {expr}
27add({object}, {item}) List/Blob append {item} to {object}
28and({expr}, {expr}) Number bitwise AND
29append({lnum}, {text}) Number append {text} below line {lnum}
30appendbufline({expr}, {lnum}, {text})
31 Number append {text} below line {lnum}
32 in buffer {expr}
33argc([{winid}]) Number number of files in the argument list
34argidx() Number current index in the argument list
35arglistid([{winnr} [, {tabnr}]]) Number argument list id
36argv({nr} [, {winid}]) String {nr} entry of the argument list
37argv([-1, {winid}]) List the argument list
38asin({expr}) Float arc sine of {expr}
39assert_beeps({cmd}) Number assert {cmd} causes a beep
40assert_equal({exp}, {act} [, {msg}])
41 Number assert {exp} is equal to {act}
42assert_equalfile({fname-one}, {fname-two} [, {msg}])
43 Number assert file contents are equal
44assert_exception({error} [, {msg}])
45 Number assert {error} is in v:exception
46assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
47 Number assert {cmd} fails
48assert_false({actual} [, {msg}])
49 Number assert {actual} is false
50assert_inrange({lower}, {upper}, {actual} [, {msg}])
51 Number assert {actual} is inside the range
52assert_match({pat}, {text} [, {msg}])
53 Number assert {pat} matches {text}
54assert_nobeep({cmd}) Number assert {cmd} does not cause a beep
55assert_notequal({exp}, {act} [, {msg}])
56 Number assert {exp} is not equal {act}
57assert_notmatch({pat}, {text} [, {msg}])
58 Number assert {pat} not matches {text}
59assert_report({msg}) Number report a test failure
60assert_true({actual} [, {msg}]) Number assert {actual} is true
61atan({expr}) Float arc tangent of {expr}
62atan2({expr1}, {expr2}) Float arc tangent of {expr1} / {expr2}
63balloon_gettext() String current text in the balloon
64balloon_show({expr}) none show {expr} inside the balloon
65balloon_split({msg}) List split {msg} as used for a balloon
66blob2list({blob}) List convert {blob} into a list of numbers
67browse({save}, {title}, {initdir}, {default})
68 String put up a file requester
69browsedir({title}, {initdir}) String put up a directory requester
70bufadd({name}) Number add a buffer to the buffer list
71bufexists({buf}) Number |TRUE| if buffer {buf} exists
72buflisted({buf}) Number |TRUE| if buffer {buf} is listed
73bufload({buf}) Number load buffer {buf} if not loaded yet
74bufloaded({buf}) Number |TRUE| if buffer {buf} is loaded
75bufname([{buf}]) String Name of the buffer {buf}
76bufnr([{buf} [, {create}]]) Number Number of the buffer {buf}
77bufwinid({buf}) Number window ID of buffer {buf}
78bufwinnr({buf}) Number window number of buffer {buf}
79byte2line({byte}) Number line number at byte count {byte}
80byteidx({expr}, {nr}) Number byte index of {nr}'th char in {expr}
81byteidxcomp({expr}, {nr}) Number byte index of {nr}'th char in {expr}
82call({func}, {arglist} [, {dict}])
83 any call {func} with arguments {arglist}
84ceil({expr}) Float round {expr} up
85ch_canread({handle}) Number check if there is something to read
86ch_close({handle}) none close {handle}
87ch_close_in({handle}) none close in part of {handle}
88ch_evalexpr({handle}, {expr} [, {options}])
89 any evaluate {expr} on JSON {handle}
90ch_evalraw({handle}, {string} [, {options}])
91 any evaluate {string} on raw {handle}
92ch_getbufnr({handle}, {what}) Number get buffer number for {handle}/{what}
93ch_getjob({channel}) Job get the Job of {channel}
94ch_info({handle}) String info about channel {handle}
95ch_log({msg} [, {handle}]) none write {msg} in the channel log file
96ch_logfile({fname} [, {mode}]) none start logging channel activity
97ch_open({address} [, {options}])
98 Channel open a channel to {address}
99ch_read({handle} [, {options}]) String read from {handle}
100ch_readblob({handle} [, {options}])
101 Blob read Blob from {handle}
102ch_readraw({handle} [, {options}])
103 String read raw from {handle}
104ch_sendexpr({handle}, {expr} [, {options}])
105 any send {expr} over JSON {handle}
106ch_sendraw({handle}, {expr} [, {options}])
107 any send {expr} over raw {handle}
108ch_setoptions({handle}, {options})
109 none set options for {handle}
110ch_status({handle} [, {options}])
111 String status of channel {handle}
112changenr() Number current change number
113char2nr({expr} [, {utf8}]) Number ASCII/UTF-8 value of first char in {expr}
114charclass({string}) Number character class of {string}
115charcol({expr}) Number column number of cursor or mark
116charidx({string}, {idx} [, {countcc}])
117 Number char index of byte {idx} in {string}
118chdir({dir}) String change current working directory
119cindent({lnum}) Number C indent for line {lnum}
120clearmatches([{win}]) none clear all matches
121col({expr}) Number column byte index of cursor or mark
122complete({startcol}, {matches}) none set Insert mode completion
123complete_add({expr}) Number add completion match
124complete_check() Number check for key typed during completion
125complete_info([{what}]) Dict get current completion information
126confirm({msg} [, {choices} [, {default} [, {type}]]])
127 Number number of choice picked by user
128copy({expr}) any make a shallow copy of {expr}
129cos({expr}) Float cosine of {expr}
130cosh({expr}) Float hyperbolic cosine of {expr}
131count({comp}, {expr} [, {ic} [, {start}]])
132 Number count how many {expr} are in {comp}
133cscope_connection([{num}, {dbpath} [, {prepend}]])
134 Number checks existence of cscope connection
135cursor({lnum}, {col} [, {off}])
136 Number move cursor to {lnum}, {col}, {off}
137cursor({list}) Number move cursor to position in {list}
138debugbreak({pid}) Number interrupt process being debugged
139deepcopy({expr} [, {noref}]) any make a full copy of {expr}
140delete({fname} [, {flags}]) Number delete the file or directory {fname}
141deletebufline({buf}, {first} [, {last}])
142 Number delete lines from buffer {buf}
143did_filetype() Number |TRUE| if FileType autocmd event used
144diff_filler({lnum}) Number diff filler lines about {lnum}
145diff_hlID({lnum}, {col}) Number diff highlighting at {lnum}/{col}
146digraph_get({chars}) String get the |digraph| of {chars}
147digraph_getlist([{listall}]) List get all |digraph|s
148digraph_set({chars}, {digraph}) Boolean register |digraph|
149digraph_setlist({digraphlist}) Boolean register multiple |digraph|s
150echoraw({expr}) none output {expr} as-is
151empty({expr}) Number |TRUE| if {expr} is empty
152environ() Dict return environment variables
153escape({string}, {chars}) String escape {chars} in {string} with '\'
154eval({string}) any evaluate {string} into its value
155eventhandler() Number |TRUE| if inside an event handler
156executable({expr}) Number 1 if executable {expr} exists
157execute({command}) String execute {command} and get the output
158exepath({expr}) String full path of the command {expr}
159exists({expr}) Number |TRUE| if {expr} exists
160exists_compiled({expr}) Number |TRUE| if {expr} exists at compile time
161exp({expr}) Float exponential of {expr}
162expand({expr} [, {nosuf} [, {list}]])
163 any expand special keywords in {expr}
164expandcmd({expr}) String expand {expr} like with `:edit`
165extend({expr1}, {expr2} [, {expr3}])
166 List/Dict insert items of {expr2} into {expr1}
167extendnew({expr1}, {expr2} [, {expr3}])
168 List/Dict like |extend()| but creates a new
169 List or Dictionary
170feedkeys({string} [, {mode}]) Number add key sequence to typeahead buffer
171filereadable({file}) Number |TRUE| if {file} is a readable file
172filewritable({file}) Number |TRUE| if {file} is a writable file
173filter({expr1}, {expr2}) List/Dict/Blob/String
174 remove items from {expr1} where
175 {expr2} is 0
176finddir({name} [, {path} [, {count}]])
177 String find directory {name} in {path}
178findfile({name} [, {path} [, {count}]])
179 String find file {name} in {path}
180flatten({list} [, {maxdepth}]) List flatten {list} up to {maxdepth} levels
181flattennew({list} [, {maxdepth}])
182 List flatten a copy of {list}
183float2nr({expr}) Number convert Float {expr} to a Number
184floor({expr}) Float round {expr} down
185fmod({expr1}, {expr2}) Float remainder of {expr1} / {expr2}
186fnameescape({fname}) String escape special characters in {fname}
187fnamemodify({fname}, {mods}) String modify file name
188foldclosed({lnum}) Number first line of fold at {lnum} if closed
189foldclosedend({lnum}) Number last line of fold at {lnum} if closed
190foldlevel({lnum}) Number fold level at {lnum}
191foldtext() String line displayed for closed fold
192foldtextresult({lnum}) String text for closed fold at {lnum}
193foreground() Number bring the Vim window to the foreground
194fullcommand({name}) String get full command from {name}
195funcref({name} [, {arglist}] [, {dict}])
196 Funcref reference to function {name}
197function({name} [, {arglist}] [, {dict}])
198 Funcref named reference to function {name}
199garbagecollect([{atexit}]) none free memory, breaking cyclic references
200get({list}, {idx} [, {def}]) any get item {idx} from {list} or {def}
201get({dict}, {key} [, {def}]) any get item {key} from {dict} or {def}
202get({func}, {what}) any get property of funcref/partial {func}
203getbufinfo([{buf}]) List information about buffers
204getbufline({buf}, {lnum} [, {end}])
205 List lines {lnum} to {end} of buffer {buf}
206getbufvar({buf}, {varname} [, {def}])
207 any variable {varname} in buffer {buf}
208getchangelist([{buf}]) List list of change list items
209getchar([expr]) Number or String
210 get one character from the user
211getcharmod() Number modifiers for the last typed character
212getcharpos({expr}) List position of cursor, mark, etc.
213getcharsearch() Dict last character search
214getcharstr([expr]) String get one character from the user
215getcmdline() String return the current command-line
216getcmdpos() Number return cursor position in command-line
217getcmdtype() String return current command-line type
218getcmdwintype() String return current command-line window type
219getcompletion({pat}, {type} [, {filtered}])
220 List list of cmdline completion matches
221getcurpos([{winnr}]) List position of the cursor
222getcursorcharpos([{winnr}]) List character position of the cursor
223getcwd([{winnr} [, {tabnr}]]) String get the current working directory
224getenv({name}) String return environment variable
225getfontname([{name}]) String name of font being used
226getfperm({fname}) String file permissions of file {fname}
227getfsize({fname}) Number size in bytes of file {fname}
228getftime({fname}) Number last modification time of file
229getftype({fname}) String description of type of file {fname}
230getimstatus() Number |TRUE| if the IME status is active
231getjumplist([{winnr} [, {tabnr}]])
232 List list of jump list items
233getline({lnum}) String line {lnum} of current buffer
234getline({lnum}, {end}) List lines {lnum} to {end} of current buffer
235getloclist({nr}) List list of location list items
236getloclist({nr}, {what}) Dict get specific location list properties
237getmarklist([{buf}]) List list of global/local marks
238getmatches([{win}]) List list of current matches
239getmousepos() Dict last known mouse position
240getpid() Number process ID of Vim
241getpos({expr}) List position of cursor, mark, etc.
242getqflist() List list of quickfix items
243getqflist({what}) Dict get specific quickfix list properties
244getreg([{regname} [, 1 [, {list}]]])
245 String or List contents of a register
246getreginfo([{regname}]) Dict information about a register
247getregtype([{regname}]) String type of a register
248gettabinfo([{expr}]) List list of tab pages
249gettabvar({nr}, {varname} [, {def}])
250 any variable {varname} in tab {nr} or {def}
251gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
252 any {name} in {winnr} in tab page {tabnr}
253gettagstack([{nr}]) Dict get the tag stack of window {nr}
254gettext({text}) String lookup translation of {text}
255getwininfo([{winid}]) List list of info about each window
256getwinpos([{timeout}]) List X and Y coord in pixels of the Vim window
257getwinposx() Number X coord in pixels of the Vim window
258getwinposy() Number Y coord in pixels of the Vim window
259getwinvar({nr}, {varname} [, {def}])
260 any variable {varname} in window {nr}
261glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])
262 any expand file wildcards in {expr}
263glob2regpat({expr}) String convert a glob pat into a search pat
264globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
265 String do glob({expr}) for all dirs in {path}
266has({feature} [, {check}]) Number |TRUE| if feature {feature} supported
267has_key({dict}, {key}) Number |TRUE| if {dict} has entry {key}
268haslocaldir([{winnr} [, {tabnr}]])
269 Number |TRUE| if the window executed |:lcd|
270 or |:tcd|
271hasmapto({what} [, {mode} [, {abbr}]])
272 Number |TRUE| if mapping to {what} exists
273histadd({history}, {item}) Number add an item to a history
274histdel({history} [, {item}]) Number remove an item from a history
275histget({history} [, {index}]) String get the item {index} from a history
276histnr({history}) Number highest index of a history
277hlID({name}) Number syntax ID of highlight group {name}
278hlexists({name}) Number |TRUE| if highlight group {name} exists
279hlget([{name} [, {resolve}]]) List get highlight group attributes
280hlset({list}) Number set highlight group attributes
281hostname() String name of the machine Vim is running on
282iconv({expr}, {from}, {to}) String convert encoding of {expr}
283indent({lnum}) Number indent of line {lnum}
284index({object}, {expr} [, {start} [, {ic}]])
285 Number index in {object} where {expr} appears
286input({prompt} [, {text} [, {completion}]])
287 String get input from the user
288inputdialog({prompt} [, {text} [, {completion}]])
289 String like input() but in a GUI dialog
290inputlist({textlist}) Number let the user pick from a choice list
291inputrestore() Number restore typeahead
292inputsave() Number save and clear typeahead
293inputsecret({prompt} [, {text}]) String like input() but hiding the text
294insert({object}, {item} [, {idx}]) List insert {item} in {object} [before {idx}]
295interrupt() none interrupt script execution
296invert({expr}) Number bitwise invert
297isdirectory({directory}) Number |TRUE| if {directory} is a directory
298isinf({expr}) Number determine if {expr} is infinity value
299 (positive or negative)
300islocked({expr}) Number |TRUE| if {expr} is locked
301isnan({expr}) Number |TRUE| if {expr} is NaN
302items({dict}) List key-value pairs in {dict}
303job_getchannel({job}) Channel get the channel handle for {job}
304job_info([{job}]) Dict get information about {job}
305job_setoptions({job}, {options}) none set options for {job}
306job_start({command} [, {options}])
307 Job start a job
308job_status({job}) String get the status of {job}
309job_stop({job} [, {how}]) Number stop {job}
310join({list} [, {sep}]) String join {list} items into one String
311js_decode({string}) any decode JS style JSON
312js_encode({expr}) String encode JS style JSON
313json_decode({string}) any decode JSON
314json_encode({expr}) String encode JSON
315keys({dict}) List keys in {dict}
316len({expr}) Number the length of {expr}
317libcall({lib}, {func}, {arg}) String call {func} in library {lib} with {arg}
318libcallnr({lib}, {func}, {arg}) Number idem, but return a Number
319line({expr} [, {winid}]) Number line nr of cursor, last line or mark
320line2byte({lnum}) Number byte count of line {lnum}
321lispindent({lnum}) Number Lisp indent for line {lnum}
322list2blob({list}) Blob turn {list} of numbers into a Blob
323list2str({list} [, {utf8}]) String turn {list} of numbers into a String
324listener_add({callback} [, {buf}])
325 Number add a callback to listen to changes
326listener_flush([{buf}]) none invoke listener callbacks
327listener_remove({id}) none remove a listener callback
328localtime() Number current time
329log({expr}) Float natural logarithm (base e) of {expr}
330log10({expr}) Float logarithm of Float {expr} to base 10
331luaeval({expr} [, {expr}]) any evaluate |Lua| expression
332map({expr1}, {expr2}) List/Dict/Blob/String
333 change each item in {expr1} to {expr2}
334maparg({name} [, {mode} [, {abbr} [, {dict}]]])
335 String or Dict
336 rhs of mapping {name} in mode {mode}
337mapcheck({name} [, {mode} [, {abbr}]])
338 String check for mappings matching {name}
339mapnew({expr1}, {expr2}) List/Dict/Blob/String
340 like |map()| but creates a new List or
341 Dictionary
342mapset({mode}, {abbr}, {dict}) none restore mapping from |maparg()| result
343match({expr}, {pat} [, {start} [, {count}]])
344 Number position where {pat} matches in {expr}
345matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
346 Number highlight {pattern} with {group}
347matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
348 Number highlight positions with {group}
349matcharg({nr}) List arguments of |:match|
350matchdelete({id} [, {win}]) Number delete match identified by {id}
351matchend({expr}, {pat} [, {start} [, {count}]])
352 Number position where {pat} ends in {expr}
353matchfuzzy({list}, {str} [, {dict}])
354 List fuzzy match {str} in {list}
355matchfuzzypos({list}, {str} [, {dict}])
356 List fuzzy match {str} in {list}
357matchlist({expr}, {pat} [, {start} [, {count}]])
358 List match and submatches of {pat} in {expr}
359matchstr({expr}, {pat} [, {start} [, {count}]])
360 String {count}'th match of {pat} in {expr}
361matchstrpos({expr}, {pat} [, {start} [, {count}]])
362 List {count}'th match of {pat} in {expr}
363max({expr}) Number maximum value of items in {expr}
364menu_info({name} [, {mode}]) Dict get menu item information
365min({expr}) Number minimum value of items in {expr}
366mkdir({name} [, {path} [, {prot}]])
367 Number create directory {name}
368mode([expr]) String current editing mode
369mzeval({expr}) any evaluate |MzScheme| expression
370nextnonblank({lnum}) Number line nr of non-blank line >= {lnum}
371nr2char({expr} [, {utf8}]) String single char with ASCII/UTF-8 value {expr}
372or({expr}, {expr}) Number bitwise OR
373pathshorten({expr} [, {len}]) String shorten directory names in a path
374perleval({expr}) any evaluate |Perl| expression
375popup_atcursor({what}, {options}) Number create popup window near the cursor
376popup_beval({what}, {options}) Number create popup window for 'ballooneval'
377popup_clear() none close all popup windows
378popup_close({id} [, {result}]) none close popup window {id}
379popup_create({what}, {options}) Number create a popup window
380popup_dialog({what}, {options}) Number create a popup window used as a dialog
381popup_filter_menu({id}, {key}) Number filter for a menu popup window
382popup_filter_yesno({id}, {key}) Number filter for a dialog popup window
383popup_findinfo() Number get window ID of info popup window
384popup_findpreview() Number get window ID of preview popup window
385popup_getoptions({id}) Dict get options of popup window {id}
386popup_getpos({id}) Dict get position of popup window {id}
387popup_hide({id}) none hide popup menu {id}
388popup_list() List get a list of window IDs of all popups
389popup_locate({row}, {col}) Number get window ID of popup at position
390popup_menu({what}, {options}) Number create a popup window used as a menu
391popup_move({id}, {options}) none set position of popup window {id}
392popup_notification({what}, {options})
393 Number create a notification popup window
394popup_setoptions({id}, {options})
395 none set options for popup window {id}
396popup_settext({id}, {text}) none set the text of popup window {id}
397popup_show({id}) none unhide popup window {id}
398pow({x}, {y}) Float {x} to the power of {y}
399prevnonblank({lnum}) Number line nr of non-blank line <= {lnum}
400printf({fmt}, {expr1}...) String format text
401prompt_getprompt({buf}) String get prompt text
402prompt_setcallback({buf}, {expr}) none set prompt callback function
403prompt_setinterrupt({buf}, {text}) none set prompt interrupt function
404prompt_setprompt({buf}, {text}) none set prompt text
405prop_add({lnum}, {col}, {props}) none add one text property
406prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
407 none add multiple text properties
408prop_clear({lnum} [, {lnum-end} [, {props}]])
409 none remove all text properties
410prop_find({props} [, {direction}])
411 Dict search for a text property
412prop_list({lnum} [, {props}]) List text properties in {lnum}
413prop_remove({props} [, {lnum} [, {lnum-end}]])
414 Number remove a text property
415prop_type_add({name}, {props}) none define a new property type
416prop_type_change({name}, {props})
417 none change an existing property type
418prop_type_delete({name} [, {props}])
419 none delete a property type
420prop_type_get({name} [, {props}])
421 Dict get property type values
422prop_type_list([{props}]) List get list of property types
423pum_getpos() Dict position and size of pum if visible
424pumvisible() Number whether popup menu is visible
425py3eval({expr}) any evaluate |python3| expression
426pyeval({expr}) any evaluate |Python| expression
427pyxeval({expr}) any evaluate |python_x| expression
428rand([{expr}]) Number get pseudo-random number
429range({expr} [, {max} [, {stride}]])
430 List items from {expr} to {max}
431readblob({fname}) Blob read a |Blob| from {fname}
432readdir({dir} [, {expr} [, {dict}]])
433 List file names in {dir} selected by {expr}
434readdirex({dir} [, {expr} [, {dict}]])
435 List file info in {dir} selected by {expr}
436readfile({fname} [, {type} [, {max}]])
437 List get list of lines from file {fname}
438reduce({object}, {func} [, {initial}])
439 any reduce {object} using {func}
440reg_executing() String get the executing register name
441reg_recording() String get the recording register name
442reltime([{start} [, {end}]]) List get time value
443reltimefloat({time}) Float turn the time value into a Float
444reltimestr({time}) String turn time value into a String
445remote_expr({server}, {string} [, {idvar} [, {timeout}]])
446 String send expression
447remote_foreground({server}) Number bring Vim server to the foreground
448remote_peek({serverid} [, {retvar}])
449 Number check for reply string
450remote_read({serverid} [, {timeout}])
451 String read reply string
452remote_send({server}, {string} [, {idvar}])
453 String send key sequence
454remote_startserver({name}) none become server {name}
455remove({list}, {idx} [, {end}]) any/List
456 remove items {idx}-{end} from {list}
457remove({blob}, {idx} [, {end}]) Number/Blob
458 remove bytes {idx}-{end} from {blob}
459remove({dict}, {key}) any remove entry {key} from {dict}
460rename({from}, {to}) Number rename (move) file from {from} to {to}
461repeat({expr}, {count}) String repeat {expr} {count} times
462resolve({filename}) String get filename a shortcut points to
463reverse({list}) List reverse {list} in-place
464round({expr}) Float round off {expr}
465rubyeval({expr}) any evaluate |Ruby| expression
466screenattr({row}, {col}) Number attribute at screen position
467screenchar({row}, {col}) Number character at screen position
468screenchars({row}, {col}) List List of characters at screen position
469screencol() Number current cursor column
470screenpos({winid}, {lnum}, {col}) Dict screen row and col of a text character
471screenrow() Number current cursor row
472screenstring({row}, {col}) String characters at screen position
473search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
474 Number search for {pattern}
475searchcount([{options}]) Dict get or update search stats
476searchdecl({name} [, {global} [, {thisblock}]])
477 Number search for variable declaration
478searchpair({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
479 Number search for other end of start/end pair
480searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
481 List search for other end of start/end pair
482searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
483 List search for {pattern}
484server2client({clientid}, {string})
485 Number send reply string
486serverlist() String get a list of available servers
487setbufline({expr}, {lnum}, {text})
488 Number set line {lnum} to {text} in buffer
489 {expr}
490setbufvar({buf}, {varname}, {val})
491 none set {varname} in buffer {buf} to {val}
492setcellwidths({list}) none set character cell width overrides
493setcharpos({expr}, {list}) Number set the {expr} position to {list}
494setcharsearch({dict}) Dict set character search from {dict}
495setcmdpos({pos}) Number set cursor position in command-line
496setcursorcharpos({list}) Number move cursor to position in {list}
497setenv({name}, {val}) none set environment variable
498setfperm({fname}, {mode}) Number set {fname} file permissions to {mode}
499setline({lnum}, {line}) Number set line {lnum} to {line}
500setloclist({nr}, {list} [, {action}])
501 Number modify location list using {list}
502setloclist({nr}, {list}, {action}, {what})
503 Number modify specific location list props
504setmatches({list} [, {win}]) Number restore a list of matches
505setpos({expr}, {list}) Number set the {expr} position to {list}
506setqflist({list} [, {action}]) Number modify quickfix list using {list}
507setqflist({list}, {action}, {what})
508 Number modify specific quickfix list props
509setreg({n}, {v} [, {opt}]) Number set register to value and type
510settabvar({nr}, {varname}, {val}) none set {varname} in tab page {nr} to {val}
511settabwinvar({tabnr}, {winnr}, {varname}, {val})
512 none set {varname} in window {winnr} in tab
513 page {tabnr} to {val}
514settagstack({nr}, {dict} [, {action}])
515 Number modify tag stack using {dict}
516setwinvar({nr}, {varname}, {val}) none set {varname} in window {nr} to {val}
517sha256({string}) String SHA256 checksum of {string}
518shellescape({string} [, {special}])
519 String escape {string} for use as shell
520 command argument
521shiftwidth([{col}]) Number effective value of 'shiftwidth'
522sign_define({name} [, {dict}]) Number define or update a sign
523sign_define({list}) List define or update a list of signs
524sign_getdefined([{name}]) List get a list of defined signs
525sign_getplaced([{buf} [, {dict}]])
526 List get a list of placed signs
527sign_jump({id}, {group}, {buf})
528 Number jump to a sign
529sign_place({id}, {group}, {name}, {buf} [, {dict}])
530 Number place a sign
531sign_placelist({list}) List place a list of signs
532sign_undefine([{name}]) Number undefine a sign
533sign_undefine({list}) List undefine a list of signs
534sign_unplace({group} [, {dict}])
535 Number unplace a sign
536sign_unplacelist({list}) List unplace a list of signs
537simplify({filename}) String simplify filename as much as possible
538sin({expr}) Float sine of {expr}
539sinh({expr}) Float hyperbolic sine of {expr}
540slice({expr}, {start} [, {end}]) String, List or Blob
541 slice of a String, List or Blob
Bram Moolenaar2007dd42022-02-23 13:17:47 +0000542sort({list} [, {how} [, {dict}]])
543 List sort {list}, compare with {how}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000544sound_clear() none stop playing all sounds
545sound_playevent({name} [, {callback}])
546 Number play an event sound
547sound_playfile({path} [, {callback}])
548 Number play sound file {path}
549sound_stop({id}) none stop playing sound {id}
550soundfold({word}) String sound-fold {word}
551spellbadword() String badly spelled word at cursor
552spellsuggest({word} [, {max} [, {capital}]])
553 List spelling suggestions
554split({expr} [, {pat} [, {keepempty}]])
555 List make |List| from {pat} separated {expr}
556sqrt({expr}) Float square root of {expr}
557srand([{expr}]) List get seed for |rand()|
558state([{what}]) String current state of Vim
559str2float({expr} [, {quoted}]) Float convert String to Float
560str2list({expr} [, {utf8}]) List convert each character of {expr} to
561 ASCII/UTF-8 value
562str2nr({expr} [, {base} [, {quoted}]])
563 Number convert String to Number
564strcharlen({expr}) Number character length of the String {expr}
565strcharpart({str}, {start} [, {len} [, {skipcc}]])
566 String {len} characters of {str} at
567 character {start}
568strchars({expr} [, {skipcc}]) Number character count of the String {expr}
569strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
570strftime({format} [, {time}]) String format time with a specified format
571strgetchar({str}, {index}) Number get char {index} from {str}
572stridx({haystack}, {needle} [, {start}])
573 Number index of {needle} in {haystack}
574string({expr}) String String representation of {expr} value
575strlen({expr}) Number length of the String {expr}
576strpart({str}, {start} [, {len} [, {chars}]])
577 String {len} bytes/chars of {str} at
578 byte {start}
579strptime({format}, {timestring})
580 Number Convert {timestring} to unix timestamp
581strridx({haystack}, {needle} [, {start}])
582 Number last index of {needle} in {haystack}
583strtrans({expr}) String translate string to make it printable
584strwidth({expr}) Number display cell length of the String {expr}
585submatch({nr} [, {list}]) String or List
586 specific match in ":s" or substitute()
587substitute({expr}, {pat}, {sub}, {flags})
588 String all {pat} in {expr} replaced with {sub}
589swapinfo({fname}) Dict information about swap file {fname}
590swapname({buf}) String swap file of buffer {buf}
591synID({lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col}
592synIDattr({synID}, {what} [, {mode}])
593 String attribute {what} of syntax ID {synID}
594synIDtrans({synID}) Number translated syntax ID of {synID}
595synconcealed({lnum}, {col}) List info about concealing
596synstack({lnum}, {col}) List stack of syntax IDs at {lnum} and {col}
597system({expr} [, {input}]) String output of shell command/filter {expr}
598systemlist({expr} [, {input}]) List output of shell command/filter {expr}
599tabpagebuflist([{arg}]) List list of buffer numbers in tab page
600tabpagenr([{arg}]) Number number of current or last tab page
601tabpagewinnr({tabarg} [, {arg}]) Number number of current window in tab page
602tagfiles() List tags files used
603taglist({expr} [, {filename}]) List list of tags matching {expr}
604tan({expr}) Float tangent of {expr}
605tanh({expr}) Float hyperbolic tangent of {expr}
606tempname() String name for a temporary file
607term_dumpdiff({filename}, {filename} [, {options}])
608 Number display difference between two dumps
609term_dumpload({filename} [, {options}])
610 Number displaying a screen dump
611term_dumpwrite({buf}, {filename} [, {options}])
612 none dump terminal window contents
613term_getaltscreen({buf}) Number get the alternate screen flag
614term_getansicolors({buf}) List get ANSI palette in GUI color mode
615term_getattr({attr}, {what}) Number get the value of attribute {what}
616term_getcursor({buf}) List get the cursor position of a terminal
617term_getjob({buf}) Job get the job associated with a terminal
618term_getline({buf}, {row}) String get a line of text from a terminal
619term_getscrolled({buf}) Number get the scroll count of a terminal
620term_getsize({buf}) List get the size of a terminal
621term_getstatus({buf}) String get the status of a terminal
622term_gettitle({buf}) String get the title of a terminal
623term_gettty({buf}, [{input}]) String get the tty name of a terminal
624term_list() List get the list of terminal buffers
625term_scrape({buf}, {row}) List get row of a terminal screen
626term_sendkeys({buf}, {keys}) none send keystrokes to a terminal
627term_setansicolors({buf}, {colors})
628 none set ANSI palette in GUI color mode
629term_setapi({buf}, {expr}) none set |terminal-api| function name prefix
630term_setkill({buf}, {how}) none set signal to stop job in terminal
631term_setrestore({buf}, {command}) none set command to restore terminal
632term_setsize({buf}, {rows}, {cols})
633 none set the size of a terminal
634term_start({cmd} [, {options}]) Number open a terminal window and run a job
635term_wait({buf} [, {time}]) Number wait for screen to be updated
636terminalprops() Dict properties of the terminal
637test_alloc_fail({id}, {countdown}, {repeat})
638 none make memory allocation fail
639test_autochdir() none enable 'autochdir' during startup
640test_feedinput({string}) none add key sequence to input buffer
641test_garbagecollect_now() none free memory right now for testing
642test_garbagecollect_soon() none free memory soon for testing
643test_getvalue({string}) any get value of an internal variable
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000644test_gui_event({event}, {args}) bool generate a GUI event for testing
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000645test_ignore_error({expr}) none ignore a specific error
646test_null_blob() Blob null value for testing
647test_null_channel() Channel null value for testing
648test_null_dict() Dict null value for testing
649test_null_function() Funcref null value for testing
650test_null_job() Job null value for testing
651test_null_list() List null value for testing
652test_null_partial() Funcref null value for testing
653test_null_string() String null value for testing
654test_option_not_set({name}) none reset flag indicating option was set
655test_override({expr}, {val}) none test with Vim internal overrides
656test_refcount({expr}) Number get the reference count of {expr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000657test_setmouse({row}, {col}) none set the mouse position for testing
658test_settime({expr}) none set current time for testing
659test_srand_seed([seed]) none set seed for testing srand()
660test_unknown() any unknown value for testing
661test_void() any void value for testing
662timer_info([{id}]) List information about timers
663timer_pause({id}, {pause}) none pause or unpause a timer
664timer_start({time}, {callback} [, {options}])
665 Number create a timer
666timer_stop({timer}) none stop a timer
667timer_stopall() none stop all timers
668tolower({expr}) String the String {expr} switched to lowercase
669toupper({expr}) String the String {expr} switched to uppercase
670tr({src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr}
671 to chars in {tostr}
672trim({text} [, {mask} [, {dir}]])
673 String trim characters in {mask} from {text}
674trunc({expr}) Float truncate Float {expr}
675type({expr}) Number type of value {expr}
676typename({expr}) String representation of the type of {expr}
677undofile({name}) String undo file name for {name}
678undotree() List undo file tree
679uniq({list} [, {func} [, {dict}]])
680 List remove adjacent duplicates from a list
681values({dict}) List values in {dict}
682virtcol({expr}) Number screen column of cursor or mark
683visualmode([expr]) String last visual mode used
684wildmenumode() Number whether 'wildmenu' mode is active
685win_execute({id}, {command} [, {silent}])
686 String execute {command} in window {id}
687win_findbuf({bufnr}) List find windows containing {bufnr}
688win_getid([{win} [, {tab}]]) Number get window ID for {win} in {tab}
689win_gettype([{nr}]) String type of window {nr}
690win_gotoid({expr}) Number go to window with ID {expr}
691win_id2tabwin({expr}) List get tab and window nr from window ID
692win_id2win({expr}) Number get window nr from window ID
Daniel Steinbergee630312022-01-10 13:36:34 +0000693win_move_separator({nr}) Number move window vertical separator
694win_move_statusline({nr}) Number move window status line
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000695win_screenpos({nr}) List get screen position of window {nr}
696win_splitmove({nr}, {target} [, {options}])
697 Number move window {nr} to split of {target}
698winbufnr({nr}) Number buffer number of window {nr}
699wincol() Number window column of the cursor
700windowsversion() String MS-Windows OS version
701winheight({nr}) Number height of window {nr}
702winlayout([{tabnr}]) List layout of windows in tab {tabnr}
703winline() Number window line of the cursor
704winnr([{expr}]) Number number of current window
705winrestcmd() String returns command to restore window sizes
706winrestview({dict}) none restore view of current window
707winsaveview() Dict save view of current window
708winwidth({nr}) Number width of window {nr}
709wordcount() Dict get byte/char/word statistics
710writefile({object}, {fname} [, {flags}])
711 Number write |Blob| or |List| of lines to file
712xor({expr}, {expr}) Number bitwise XOR
713
714==============================================================================
7152. Details *builtin-function-details*
716
717Not all functions are here, some have been moved to a help file covering the
718specific functionality.
719
720abs({expr}) *abs()*
721 Return the absolute value of {expr}. When {expr} evaluates to
722 a |Float| abs() returns a |Float|. When {expr} can be
723 converted to a |Number| abs() returns a |Number|. Otherwise
724 abs() gives an error message and returns -1.
725 Examples: >
726 echo abs(1.456)
727< 1.456 >
728 echo abs(-5.456)
729< 5.456 >
730 echo abs(-4)
731< 4
732
733 Can also be used as a |method|: >
734 Compute()->abs()
735
736< {only available when compiled with the |+float| feature}
737
738
739acos({expr}) *acos()*
740 Return the arc cosine of {expr} measured in radians, as a
741 |Float| in the range of [0, pi].
742 {expr} must evaluate to a |Float| or a |Number| in the range
743 [-1, 1].
744 Examples: >
745 :echo acos(0)
746< 1.570796 >
747 :echo acos(-0.5)
748< 2.094395
749
750 Can also be used as a |method|: >
751 Compute()->acos()
752
753< {only available when compiled with the |+float| feature}
754
755
756add({object}, {expr}) *add()*
757 Append the item {expr} to |List| or |Blob| {object}. Returns
758 the resulting |List| or |Blob|. Examples: >
759 :let alist = add([1, 2, 3], item)
760 :call add(mylist, "woodstock")
761< Note that when {expr} is a |List| it is appended as a single
762 item. Use |extend()| to concatenate |Lists|.
763 When {object} is a |Blob| then {expr} must be a number.
764 Use |insert()| to add an item at another position.
765
766 Can also be used as a |method|: >
767 mylist->add(val1)->add(val2)
768
769
770and({expr}, {expr}) *and()*
771 Bitwise AND on the two arguments. The arguments are converted
772 to a number. A List, Dict or Float argument causes an error.
773 Example: >
774 :let flag = and(bits, 0x80)
775< Can also be used as a |method|: >
776 :let flag = bits->and(0x80)
777
778
779append({lnum}, {text}) *append()*
780 When {text} is a |List|: Append each item of the |List| as a
781 text line below line {lnum} in the current buffer.
782 Otherwise append {text} as one text line below line {lnum} in
783 the current buffer.
784 Any type of item is accepted and converted to a String.
785 {lnum} can be zero to insert a line before the first one.
786 {lnum} is used like with |getline()|.
787 Returns 1 for failure ({lnum} out of range or out of memory),
788 0 for success. In |Vim9| script an invalid argument or
789 negative number results in an error. Example: >
790 :let failed = append(line('$'), "# THE END")
791 :let failed = append(0, ["Chapter 1", "the beginning"])
792
793< Can also be used as a |method| after a List, the base is
794 passed as the second argument: >
795 mylist->append(lnum)
796
797
798appendbufline({buf}, {lnum}, {text}) *appendbufline()*
799 Like |append()| but append the text in buffer {buf}.
800
801 This function works only for loaded buffers. First call
802 |bufload()| if needed.
803
804 For the use of {buf}, see |bufname()|.
805
Bram Moolenaar8b6256f2021-12-28 11:24:49 +0000806 {lnum} is the line number to append below. Note that using
807 |line()| would use the current buffer, not the one appending
808 to. Use "$" to append at the end of the buffer. Other string
809 values are not supported.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000810
811 On success 0 is returned, on failure 1 is returned.
812 In |Vim9| script an error is given for an invalid {lnum}.
813
814 If {buf} is not a valid buffer or {lnum} is not valid, an
815 error message is given. Example: >
816 :let failed = appendbufline(13, 0, "# THE START")
817<
818 Can also be used as a |method| after a List, the base is
819 passed as the second argument: >
820 mylist->appendbufline(buf, lnum)
821
822
823argc([{winid}]) *argc()*
824 The result is the number of files in the argument list. See
825 |arglist|.
826 If {winid} is not supplied, the argument list of the current
827 window is used.
828 If {winid} is -1, the global argument list is used.
829 Otherwise {winid} specifies the window of which the argument
830 list is used: either the window number or the window ID.
831 Returns -1 if the {winid} argument is invalid.
832
833 *argidx()*
834argidx() The result is the current index in the argument list. 0 is
835 the first file. argc() - 1 is the last one. See |arglist|.
836
837 *arglistid()*
838arglistid([{winnr} [, {tabnr}]])
839 Return the argument list ID. This is a number which
840 identifies the argument list being used. Zero is used for the
841 global argument list. See |arglist|.
842 Returns -1 if the arguments are invalid.
843
844 Without arguments use the current window.
845 With {winnr} only use this window in the current tab page.
846 With {winnr} and {tabnr} use the window in the specified tab
847 page.
848 {winnr} can be the window number or the |window-ID|.
849
850 *argv()*
851argv([{nr} [, {winid}]])
852 The result is the {nr}th file in the argument list. See
853 |arglist|. "argv(0)" is the first one. Example: >
854 :let i = 0
855 :while i < argc()
856 : let f = escape(fnameescape(argv(i)), '.')
Bram Moolenaarc51cf032022-02-26 12:25:45 +0000857 : exe 'amenu Arg.' .. f .. ' :e ' .. f .. '<CR>'
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000858 : let i = i + 1
859 :endwhile
860< Without the {nr} argument, or when {nr} is -1, a |List| with
861 the whole |arglist| is returned.
862
863 The {winid} argument specifies the window ID, see |argc()|.
864 For the Vim command line arguments see |v:argv|.
865
866asin({expr}) *asin()*
867 Return the arc sine of {expr} measured in radians, as a |Float|
868 in the range of [-pi/2, pi/2].
869 {expr} must evaluate to a |Float| or a |Number| in the range
870 [-1, 1].
871 Examples: >
872 :echo asin(0.8)
873< 0.927295 >
874 :echo asin(-0.5)
875< -0.523599
876
877 Can also be used as a |method|: >
878 Compute()->asin()
879<
880 {only available when compiled with the |+float| feature}
881
882
883assert_ functions are documented here: |assert-functions-details|
884
885
886
887atan({expr}) *atan()*
888 Return the principal value of the arc tangent of {expr}, in
889 the range [-pi/2, +pi/2] radians, as a |Float|.
890 {expr} must evaluate to a |Float| or a |Number|.
891 Examples: >
892 :echo atan(100)
893< 1.560797 >
894 :echo atan(-4.01)
895< -1.326405
896
897 Can also be used as a |method|: >
898 Compute()->atan()
899<
900 {only available when compiled with the |+float| feature}
901
902
903atan2({expr1}, {expr2}) *atan2()*
904 Return the arc tangent of {expr1} / {expr2}, measured in
905 radians, as a |Float| in the range [-pi, pi].
906 {expr1} and {expr2} must evaluate to a |Float| or a |Number|.
907 Examples: >
908 :echo atan2(-1, 1)
909< -0.785398 >
910 :echo atan2(1, -1)
911< 2.356194
912
913 Can also be used as a |method|: >
914 Compute()->atan2(1)
915<
916 {only available when compiled with the |+float| feature}
917
918balloon_gettext() *balloon_gettext()*
919 Return the current text in the balloon. Only for the string,
920 not used for the List.
921
922balloon_show({expr}) *balloon_show()*
923 Show {expr} inside the balloon. For the GUI {expr} is used as
924 a string. For a terminal {expr} can be a list, which contains
925 the lines of the balloon. If {expr} is not a list it will be
926 split with |balloon_split()|.
927 If {expr} is an empty string any existing balloon is removed.
928
929 Example: >
930 func GetBalloonContent()
931 " ... initiate getting the content
932 return ''
933 endfunc
934 set balloonexpr=GetBalloonContent()
935
936 func BalloonCallback(result)
937 call balloon_show(a:result)
938 endfunc
939< Can also be used as a |method|: >
940 GetText()->balloon_show()
941<
942 The intended use is that fetching the content of the balloon
943 is initiated from 'balloonexpr'. It will invoke an
944 asynchronous method, in which a callback invokes
945 balloon_show(). The 'balloonexpr' itself can return an
946 empty string or a placeholder.
947
948 When showing a balloon is not possible nothing happens, no
949 error message.
950 {only available when compiled with the |+balloon_eval| or
951 |+balloon_eval_term| feature}
952
953balloon_split({msg}) *balloon_split()*
954 Split String {msg} into lines to be displayed in a balloon.
955 The splits are made for the current window size and optimize
956 to show debugger output.
957 Returns a |List| with the split lines.
958 Can also be used as a |method|: >
959 GetText()->balloon_split()->balloon_show()
960
961< {only available when compiled with the |+balloon_eval_term|
962 feature}
963
964blob2list({blob}) *blob2list()*
965 Return a List containing the number value of each byte in Blob
966 {blob}. Examples: >
967 blob2list(0z0102.0304) returns [1, 2, 3, 4]
968 blob2list(0z) returns []
969< Returns an empty List on error. |list2blob()| does the
970 opposite.
971
972 Can also be used as a |method|: >
973 GetBlob()->blob2list()
974
975 *browse()*
976browse({save}, {title}, {initdir}, {default})
977 Put up a file requester. This only works when "has("browse")"
978 returns |TRUE| (only in some GUI versions).
979 The input fields are:
980 {save} when |TRUE|, select file to write
981 {title} title for the requester
982 {initdir} directory to start browsing in
983 {default} default file name
984 An empty string is returned when the "Cancel" button is hit,
985 something went wrong, or browsing is not possible.
986
987 *browsedir()*
988browsedir({title}, {initdir})
989 Put up a directory requester. This only works when
990 "has("browse")" returns |TRUE| (only in some GUI versions).
991 On systems where a directory browser is not supported a file
992 browser is used. In that case: select a file in the directory
993 to be used.
994 The input fields are:
995 {title} title for the requester
996 {initdir} directory to start browsing in
997 When the "Cancel" button is hit, something went wrong, or
998 browsing is not possible, an empty string is returned.
999
1000bufadd({name}) *bufadd()*
1001 Add a buffer to the buffer list with String {name}.
1002 If a buffer for file {name} already exists, return that buffer
1003 number. Otherwise return the buffer number of the newly
1004 created buffer. When {name} is an empty string then a new
1005 buffer is always created.
1006 The buffer will not have 'buflisted' set and not be loaded
1007 yet. To add some text to the buffer use this: >
1008 let bufnr = bufadd('someName')
1009 call bufload(bufnr)
1010 call setbufline(bufnr, 1, ['some', 'text'])
1011< Can also be used as a |method|: >
1012 let bufnr = 'somename'->bufadd()
1013
1014bufexists({buf}) *bufexists()*
1015 The result is a Number, which is |TRUE| if a buffer called
1016 {buf} exists.
1017 If the {buf} argument is a number, buffer numbers are used.
1018 Number zero is the alternate buffer for the current window.
1019
1020 If the {buf} argument is a string it must match a buffer name
1021 exactly. The name can be:
1022 - Relative to the current directory.
1023 - A full path.
1024 - The name of a buffer with 'buftype' set to "nofile".
1025 - A URL name.
1026 Unlisted buffers will be found.
1027 Note that help files are listed by their short name in the
1028 output of |:buffers|, but bufexists() requires using their
1029 long name to be able to find them.
1030 bufexists() may report a buffer exists, but to use the name
1031 with a |:buffer| command you may need to use |expand()|. Esp
1032 for MS-Windows 8.3 names in the form "c:\DOCUME~1"
1033 Use "bufexists(0)" to test for the existence of an alternate
1034 file name.
1035
1036 Can also be used as a |method|: >
1037 let exists = 'somename'->bufexists()
1038<
1039 Obsolete name: buffer_exists(). *buffer_exists()*
1040
1041buflisted({buf}) *buflisted()*
1042 The result is a Number, which is |TRUE| if a buffer called
1043 {buf} exists and is listed (has the 'buflisted' option set).
1044 The {buf} argument is used like with |bufexists()|.
1045
1046 Can also be used as a |method|: >
1047 let listed = 'somename'->buflisted()
1048
1049bufload({buf}) *bufload()*
1050 Ensure the buffer {buf} is loaded. When the buffer name
1051 refers to an existing file then the file is read. Otherwise
1052 the buffer will be empty. If the buffer was already loaded
1053 then there is no change.
1054 If there is an existing swap file for the file of the buffer,
1055 there will be no dialog, the buffer will be loaded anyway.
1056 The {buf} argument is used like with |bufexists()|.
1057
1058 Can also be used as a |method|: >
1059 eval 'somename'->bufload()
1060
1061bufloaded({buf}) *bufloaded()*
1062 The result is a Number, which is |TRUE| if a buffer called
1063 {buf} exists and is loaded (shown in a window or hidden).
1064 The {buf} argument is used like with |bufexists()|.
1065
1066 Can also be used as a |method|: >
1067 let loaded = 'somename'->bufloaded()
1068
1069bufname([{buf}]) *bufname()*
1070 The result is the name of a buffer. Mostly as it is displayed
1071 by the `:ls` command, but not using special names such as
1072 "[No Name]".
1073 If {buf} is omitted the current buffer is used.
1074 If {buf} is a Number, that buffer number's name is given.
1075 Number zero is the alternate buffer for the current window.
1076 If {buf} is a String, it is used as a |file-pattern| to match
1077 with the buffer names. This is always done like 'magic' is
1078 set and 'cpoptions' is empty. When there is more than one
1079 match an empty string is returned.
1080 "" or "%" can be used for the current buffer, "#" for the
1081 alternate buffer.
1082 A full match is preferred, otherwise a match at the start, end
1083 or middle of the buffer name is accepted. If you only want a
1084 full match then put "^" at the start and "$" at the end of the
1085 pattern.
1086 Listed buffers are found first. If there is a single match
1087 with a listed buffer, that one is returned. Next unlisted
1088 buffers are searched for.
1089 If the {buf} is a String, but you want to use it as a buffer
1090 number, force it to be a Number by adding zero to it: >
1091 :echo bufname("3" + 0)
1092< Can also be used as a |method|: >
1093 echo bufnr->bufname()
1094
1095< If the buffer doesn't exist, or doesn't have a name, an empty
1096 string is returned. >
1097 bufname("#") alternate buffer name
1098 bufname(3) name of buffer 3
1099 bufname("%") name of current buffer
1100 bufname("file2") name of buffer where "file2" matches.
1101< *buffer_name()*
1102 Obsolete name: buffer_name().
1103
1104 *bufnr()*
1105bufnr([{buf} [, {create}]])
1106 The result is the number of a buffer, as it is displayed by
1107 the `:ls` command. For the use of {buf}, see |bufname()|
1108 above.
1109
1110 If the buffer doesn't exist, -1 is returned. Or, if the
1111 {create} argument is present and TRUE, a new, unlisted,
1112 buffer is created and its number is returned. Example: >
1113 let newbuf = bufnr('Scratch001', 1)
1114< Using an empty name uses the current buffer. To create a new
1115 buffer with an empty name use |bufadd()|.
1116
1117 bufnr("$") is the last buffer: >
1118 :let last_buffer = bufnr("$")
1119< The result is a Number, which is the highest buffer number
1120 of existing buffers. Note that not all buffers with a smaller
1121 number necessarily exist, because ":bwipeout" may have removed
1122 them. Use bufexists() to test for the existence of a buffer.
1123
1124 Can also be used as a |method|: >
1125 echo bufref->bufnr()
1126<
1127 Obsolete name: buffer_number(). *buffer_number()*
1128 *last_buffer_nr()*
1129 Obsolete name for bufnr("$"): last_buffer_nr().
1130
1131bufwinid({buf}) *bufwinid()*
1132 The result is a Number, which is the |window-ID| of the first
1133 window associated with buffer {buf}. For the use of {buf},
1134 see |bufname()| above. If buffer {buf} doesn't exist or
1135 there is no such window, -1 is returned. Example: >
1136
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001137 echo "A window containing buffer 1 is " .. (bufwinid(1))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001138<
1139 Only deals with the current tab page.
1140
1141 Can also be used as a |method|: >
1142 FindBuffer()->bufwinid()
1143
1144bufwinnr({buf}) *bufwinnr()*
1145 Like |bufwinid()| but return the window number instead of the
1146 |window-ID|.
1147 If buffer {buf} doesn't exist or there is no such window, -1
1148 is returned. Example: >
1149
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001150 echo "A window containing buffer 1 is " .. (bufwinnr(1))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001151
1152< The number can be used with |CTRL-W_w| and ":wincmd w"
1153 |:wincmd|.
1154
1155 Can also be used as a |method|: >
1156 FindBuffer()->bufwinnr()
1157
1158byte2line({byte}) *byte2line()*
1159 Return the line number that contains the character at byte
1160 count {byte} in the current buffer. This includes the
1161 end-of-line character, depending on the 'fileformat' option
1162 for the current buffer. The first character has byte count
1163 one.
1164 Also see |line2byte()|, |go| and |:goto|.
1165
1166 Can also be used as a |method|: >
1167 GetOffset()->byte2line()
1168
1169< {not available when compiled without the |+byte_offset|
1170 feature}
1171
1172byteidx({expr}, {nr}) *byteidx()*
1173 Return byte index of the {nr}'th character in the String
1174 {expr}. Use zero for the first character, it then returns
1175 zero.
1176 If there are no multibyte characters the returned value is
1177 equal to {nr}.
1178 Composing characters are not counted separately, their byte
1179 length is added to the preceding base character. See
1180 |byteidxcomp()| below for counting composing characters
1181 separately.
1182 Example : >
1183 echo matchstr(str, ".", byteidx(str, 3))
1184< will display the fourth character. Another way to do the
1185 same: >
1186 let s = strpart(str, byteidx(str, 3))
1187 echo strpart(s, 0, byteidx(s, 1))
1188< Also see |strgetchar()| and |strcharpart()|.
1189
1190 If there are less than {nr} characters -1 is returned.
1191 If there are exactly {nr} characters the length of the string
1192 in bytes is returned.
1193
1194 Can also be used as a |method|: >
1195 GetName()->byteidx(idx)
1196
1197byteidxcomp({expr}, {nr}) *byteidxcomp()*
1198 Like byteidx(), except that a composing character is counted
1199 as a separate character. Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001200 let s = 'e' .. nr2char(0x301)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001201 echo byteidx(s, 1)
1202 echo byteidxcomp(s, 1)
1203 echo byteidxcomp(s, 2)
1204< The first and third echo result in 3 ('e' plus composing
1205 character is 3 bytes), the second echo results in 1 ('e' is
1206 one byte).
1207 Only works differently from byteidx() when 'encoding' is set
1208 to a Unicode encoding.
1209
1210 Can also be used as a |method|: >
1211 GetName()->byteidxcomp(idx)
1212
1213call({func}, {arglist} [, {dict}]) *call()* *E699*
1214 Call function {func} with the items in |List| {arglist} as
1215 arguments.
1216 {func} can either be a |Funcref| or the name of a function.
1217 a:firstline and a:lastline are set to the cursor line.
1218 Returns the return value of the called function.
1219 {dict} is for functions with the "dict" attribute. It will be
1220 used to set the local variable "self". |Dictionary-function|
1221
1222 Can also be used as a |method|: >
1223 GetFunc()->call([arg, arg], dict)
1224
1225ceil({expr}) *ceil()*
1226 Return the smallest integral value greater than or equal to
1227 {expr} as a |Float| (round up).
1228 {expr} must evaluate to a |Float| or a |Number|.
1229 Examples: >
1230 echo ceil(1.456)
1231< 2.0 >
1232 echo ceil(-5.456)
1233< -5.0 >
1234 echo ceil(4.0)
1235< 4.0
1236
1237 Can also be used as a |method|: >
1238 Compute()->ceil()
1239<
1240 {only available when compiled with the |+float| feature}
1241
1242
1243ch_ functions are documented here: |channel-functions-details|
1244
1245
1246changenr() *changenr()*
1247 Return the number of the most recent change. This is the same
1248 number as what is displayed with |:undolist| and can be used
1249 with the |:undo| command.
1250 When a change was made it is the number of that change. After
1251 redo it is the number of the redone change. After undo it is
1252 one less than the number of the undone change.
1253
1254char2nr({string} [, {utf8}]) *char2nr()*
1255 Return number value of the first char in {string}.
1256 Examples: >
1257 char2nr(" ") returns 32
1258 char2nr("ABC") returns 65
1259< When {utf8} is omitted or zero, the current 'encoding' is used.
1260 Example for "utf-8": >
1261 char2nr("á") returns 225
1262 char2nr("á"[0]) returns 195
1263< When {utf8} is TRUE, always treat as UTF-8 characters.
1264 A combining character is a separate character.
1265 |nr2char()| does the opposite.
1266 To turn a string into a list of character numbers: >
1267 let str = "ABC"
1268 let list = map(split(str, '\zs'), {_, val -> char2nr(val)})
1269< Result: [65, 66, 67]
1270
1271 Can also be used as a |method|: >
1272 GetChar()->char2nr()
1273
1274
1275charclass({string}) *charclass()*
1276 Return the character class of the first character in {string}.
1277 The character class is one of:
1278 0 blank
1279 1 punctuation
1280 2 word character
1281 3 emoji
1282 other specific Unicode class
1283 The class is used in patterns and word motions.
1284
1285
1286charcol({expr}) *charcol()*
1287 Same as |col()| but returns the character index of the column
1288 position given with {expr} instead of the byte position.
1289
1290 Example:
1291 With the cursor on '세' in line 5 with text "여보세요": >
1292 charcol('.') returns 3
1293 col('.') returns 7
1294
1295< Can also be used as a |method|: >
1296 GetPos()->col()
1297<
1298 *charidx()*
1299charidx({string}, {idx} [, {countcc}])
1300 Return the character index of the byte at {idx} in {string}.
1301 The index of the first character is zero.
1302 If there are no multibyte characters the returned value is
1303 equal to {idx}.
1304 When {countcc} is omitted or |FALSE|, then composing characters
1305 are not counted separately, their byte length is
1306 added to the preceding base character.
1307 When {countcc} is |TRUE|, then composing characters are
1308 counted as separate characters.
1309 Returns -1 if the arguments are invalid or if {idx} is greater
1310 than the index of the last byte in {string}. An error is
1311 given if the first argument is not a string, the second
1312 argument is not a number or when the third argument is present
1313 and is not zero or one.
1314 See |byteidx()| and |byteidxcomp()| for getting the byte index
1315 from the character index.
1316 Examples: >
1317 echo charidx('áb́ć', 3) returns 1
1318 echo charidx('áb́ć', 6, 1) returns 4
1319 echo charidx('áb́ć', 16) returns -1
1320<
1321 Can also be used as a |method|: >
1322 GetName()->charidx(idx)
1323
1324chdir({dir}) *chdir()*
1325 Change the current working directory to {dir}. The scope of
1326 the directory change depends on the directory of the current
1327 window:
1328 - If the current window has a window-local directory
1329 (|:lcd|), then changes the window local directory.
1330 - Otherwise, if the current tabpage has a local
1331 directory (|:tcd|) then changes the tabpage local
1332 directory.
1333 - Otherwise, changes the global directory.
1334 {dir} must be a String.
1335 If successful, returns the previous working directory. Pass
1336 this to another chdir() to restore the directory.
1337 On failure, returns an empty string.
1338
1339 Example: >
1340 let save_dir = chdir(newdir)
1341 if save_dir != ""
1342 " ... do some work
1343 call chdir(save_dir)
1344 endif
1345
1346< Can also be used as a |method|: >
1347 GetDir()->chdir()
1348<
1349cindent({lnum}) *cindent()*
1350 Get the amount of indent for line {lnum} according the C
1351 indenting rules, as with 'cindent'.
1352 The indent is counted in spaces, the value of 'tabstop' is
1353 relevant. {lnum} is used just like in |getline()|.
1354 When {lnum} is invalid or Vim was not compiled the |+cindent|
1355 feature, -1 is returned.
1356 See |C-indenting|.
1357
1358 Can also be used as a |method|: >
1359 GetLnum()->cindent()
1360
1361clearmatches([{win}]) *clearmatches()*
1362 Clears all matches previously defined for the current window
1363 by |matchadd()| and the |:match| commands.
1364 If {win} is specified, use the window with this number or
1365 window ID instead of the current window.
1366
1367 Can also be used as a |method|: >
1368 GetWin()->clearmatches()
1369<
1370 *col()*
1371col({expr}) The result is a Number, which is the byte index of the column
1372 position given with {expr}. The accepted positions are:
1373 . the cursor position
1374 $ the end of the cursor line (the result is the
1375 number of bytes in the cursor line plus one)
1376 'x position of mark x (if the mark is not set, 0 is
1377 returned)
1378 v In Visual mode: the start of the Visual area (the
1379 cursor is the end). When not in Visual mode
1380 returns the cursor position. Differs from |'<| in
1381 that it's updated right away.
1382 Additionally {expr} can be [lnum, col]: a |List| with the line
1383 and column number. Most useful when the column is "$", to get
1384 the last column of a specific line. When "lnum" or "col" is
1385 out of range then col() returns zero.
1386 To get the line number use |line()|. To get both use
1387 |getpos()|.
1388 For the screen column position use |virtcol()|. For the
1389 character position use |charcol()|.
1390 Note that only marks in the current file can be used.
1391 Examples: >
1392 col(".") column of cursor
1393 col("$") length of cursor line plus one
1394 col("'t") column of mark t
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001395 col("'" .. markname) column of mark markname
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001396< The first column is 1. 0 is returned for an error.
1397 For an uppercase mark the column may actually be in another
1398 buffer.
1399 For the cursor position, when 'virtualedit' is active, the
1400 column is one higher if the cursor is after the end of the
1401 line. This can be used to obtain the column in Insert mode: >
1402 :imap <F2> <C-O>:let save_ve = &ve<CR>
1403 \<C-O>:set ve=all<CR>
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001404 \<C-O>:echo col(".") .. "\n" <Bar>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001405 \let &ve = save_ve<CR>
1406
1407< Can also be used as a |method|: >
1408 GetPos()->col()
1409<
1410
1411complete({startcol}, {matches}) *complete()* *E785*
1412 Set the matches for Insert mode completion.
1413 Can only be used in Insert mode. You need to use a mapping
1414 with CTRL-R = (see |i_CTRL-R|). It does not work after CTRL-O
1415 or with an expression mapping.
1416 {startcol} is the byte offset in the line where the completed
1417 text start. The text up to the cursor is the original text
1418 that will be replaced by the matches. Use col('.') for an
1419 empty string. "col('.') - 1" will replace one character by a
1420 match.
1421 {matches} must be a |List|. Each |List| item is one match.
1422 See |complete-items| for the kind of items that are possible.
1423 "longest" in 'completeopt' is ignored.
1424 Note that the after calling this function you need to avoid
1425 inserting anything that would cause completion to stop.
1426 The match can be selected with CTRL-N and CTRL-P as usual with
1427 Insert mode completion. The popup menu will appear if
1428 specified, see |ins-completion-menu|.
1429 Example: >
1430 inoremap <F5> <C-R>=ListMonths()<CR>
1431
1432 func! ListMonths()
1433 call complete(col('.'), ['January', 'February', 'March',
1434 \ 'April', 'May', 'June', 'July', 'August', 'September',
1435 \ 'October', 'November', 'December'])
1436 return ''
1437 endfunc
1438< This isn't very useful, but it shows how it works. Note that
1439 an empty string is returned to avoid a zero being inserted.
1440
1441 Can also be used as a |method|, the base is passed as the
1442 second argument: >
1443 GetMatches()->complete(col('.'))
1444
1445complete_add({expr}) *complete_add()*
1446 Add {expr} to the list of matches. Only to be used by the
1447 function specified with the 'completefunc' option.
1448 Returns 0 for failure (empty string or out of memory),
1449 1 when the match was added, 2 when the match was already in
1450 the list.
1451 See |complete-functions| for an explanation of {expr}. It is
1452 the same as one item in the list that 'omnifunc' would return.
1453
1454 Can also be used as a |method|: >
1455 GetMoreMatches()->complete_add()
1456
1457complete_check() *complete_check()*
1458 Check for a key typed while looking for completion matches.
1459 This is to be used when looking for matches takes some time.
1460 Returns |TRUE| when searching for matches is to be aborted,
1461 zero otherwise.
1462 Only to be used by the function specified with the
1463 'completefunc' option.
1464
1465
1466complete_info([{what}]) *complete_info()*
1467 Returns a |Dictionary| with information about Insert mode
1468 completion. See |ins-completion|.
1469 The items are:
1470 mode Current completion mode name string.
1471 See |complete_info_mode| for the values.
1472 pum_visible |TRUE| if popup menu is visible.
1473 See |pumvisible()|.
1474 items List of completion matches. Each item is a
1475 dictionary containing the entries "word",
1476 "abbr", "menu", "kind", "info" and "user_data".
1477 See |complete-items|.
1478 selected Selected item index. First index is zero.
1479 Index is -1 if no item is selected (showing
1480 typed text only, or the last completion after
1481 no item is selected when using the <Up> or
1482 <Down> keys)
1483 inserted Inserted string. [NOT IMPLEMENT YET]
1484
1485 *complete_info_mode*
1486 mode values are:
1487 "" Not in completion mode
1488 "keyword" Keyword completion |i_CTRL-X_CTRL-N|
1489 "ctrl_x" Just pressed CTRL-X |i_CTRL-X|
1490 "scroll" Scrolling with |i_CTRL-X_CTRL-E| or
1491 |i_CTRL-X_CTRL-Y|
1492 "whole_line" Whole lines |i_CTRL-X_CTRL-L|
1493 "files" File names |i_CTRL-X_CTRL-F|
1494 "tags" Tags |i_CTRL-X_CTRL-]|
1495 "path_defines" Definition completion |i_CTRL-X_CTRL-D|
1496 "path_patterns" Include completion |i_CTRL-X_CTRL-I|
1497 "dictionary" Dictionary |i_CTRL-X_CTRL-K|
1498 "thesaurus" Thesaurus |i_CTRL-X_CTRL-T|
1499 "cmdline" Vim Command line |i_CTRL-X_CTRL-V|
1500 "function" User defined completion |i_CTRL-X_CTRL-U|
1501 "omni" Omni completion |i_CTRL-X_CTRL-O|
1502 "spell" Spelling suggestions |i_CTRL-X_s|
1503 "eval" |complete()| completion
1504 "unknown" Other internal modes
1505
1506 If the optional {what} list argument is supplied, then only
1507 the items listed in {what} are returned. Unsupported items in
1508 {what} are silently ignored.
1509
1510 To get the position and size of the popup menu, see
1511 |pum_getpos()|. It's also available in |v:event| during the
1512 |CompleteChanged| event.
1513
1514 Examples: >
1515 " Get all items
1516 call complete_info()
1517 " Get only 'mode'
1518 call complete_info(['mode'])
1519 " Get only 'mode' and 'pum_visible'
1520 call complete_info(['mode', 'pum_visible'])
1521
1522< Can also be used as a |method|: >
1523 GetItems()->complete_info()
1524<
1525 *confirm()*
1526confirm({msg} [, {choices} [, {default} [, {type}]]])
1527 confirm() offers the user a dialog, from which a choice can be
1528 made. It returns the number of the choice. For the first
1529 choice this is 1.
1530 Note: confirm() is only supported when compiled with dialog
1531 support, see |+dialog_con| and |+dialog_gui|.
1532
1533 {msg} is displayed in a |dialog| with {choices} as the
1534 alternatives. When {choices} is missing or empty, "&OK" is
1535 used (and translated).
1536 {msg} is a String, use '\n' to include a newline. Only on
1537 some systems the string is wrapped when it doesn't fit.
1538
1539 {choices} is a String, with the individual choices separated
1540 by '\n', e.g. >
1541 confirm("Save changes?", "&Yes\n&No\n&Cancel")
1542< The letter after the '&' is the shortcut key for that choice.
1543 Thus you can type 'c' to select "Cancel". The shortcut does
1544 not need to be the first letter: >
1545 confirm("file has been modified", "&Save\nSave &All")
1546< For the console, the first letter of each choice is used as
1547 the default shortcut key. Case is ignored.
1548
1549 The optional {default} argument is the number of the choice
1550 that is made if the user hits <CR>. Use 1 to make the first
1551 choice the default one. Use 0 to not set a default. If
1552 {default} is omitted, 1 is used.
1553
1554 The optional {type} String argument gives the type of dialog.
1555 This is only used for the icon of the GTK, Mac, Motif and
1556 Win32 GUI. It can be one of these values: "Error",
1557 "Question", "Info", "Warning" or "Generic". Only the first
1558 character is relevant. When {type} is omitted, "Generic" is
1559 used.
1560
1561 If the user aborts the dialog by pressing <Esc>, CTRL-C,
1562 or another valid interrupt key, confirm() returns 0.
1563
1564 An example: >
1565 :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2)
1566 :if choice == 0
1567 : echo "make up your mind!"
1568 :elseif choice == 3
1569 : echo "tasteful"
1570 :else
1571 : echo "I prefer bananas myself."
1572 :endif
1573< In a GUI dialog, buttons are used. The layout of the buttons
1574 depends on the 'v' flag in 'guioptions'. If it is included,
1575 the buttons are always put vertically. Otherwise, confirm()
1576 tries to put the buttons in one horizontal line. If they
1577 don't fit, a vertical layout is used anyway. For some systems
1578 the horizontal layout is always used.
1579
1580 Can also be used as a |method|in: >
1581 BuildMessage()->confirm("&Yes\n&No")
1582<
1583 *copy()*
1584copy({expr}) Make a copy of {expr}. For Numbers and Strings this isn't
1585 different from using {expr} directly.
1586 When {expr} is a |List| a shallow copy is created. This means
1587 that the original |List| can be changed without changing the
1588 copy, and vice versa. But the items are identical, thus
1589 changing an item changes the contents of both |Lists|.
1590 A |Dictionary| is copied in a similar way as a |List|.
1591 Also see |deepcopy()|.
1592 Can also be used as a |method|: >
1593 mylist->copy()
1594
1595cos({expr}) *cos()*
1596 Return the cosine of {expr}, measured in radians, as a |Float|.
1597 {expr} must evaluate to a |Float| or a |Number|.
1598 Examples: >
1599 :echo cos(100)
1600< 0.862319 >
1601 :echo cos(-4.01)
1602< -0.646043
1603
1604 Can also be used as a |method|: >
1605 Compute()->cos()
1606<
1607 {only available when compiled with the |+float| feature}
1608
1609
1610cosh({expr}) *cosh()*
1611 Return the hyperbolic cosine of {expr} as a |Float| in the range
1612 [1, inf].
1613 {expr} must evaluate to a |Float| or a |Number|.
1614 Examples: >
1615 :echo cosh(0.5)
1616< 1.127626 >
1617 :echo cosh(-0.5)
1618< -1.127626
1619
1620 Can also be used as a |method|: >
1621 Compute()->cosh()
1622<
1623 {only available when compiled with the |+float| feature}
1624
1625
1626count({comp}, {expr} [, {ic} [, {start}]]) *count()*
1627 Return the number of times an item with value {expr} appears
1628 in |String|, |List| or |Dictionary| {comp}.
1629
1630 If {start} is given then start with the item with this index.
1631 {start} can only be used with a |List|.
1632
1633 When {ic} is given and it's |TRUE| then case is ignored.
1634
1635 When {comp} is a string then the number of not overlapping
1636 occurrences of {expr} is returned. Zero is returned when
1637 {expr} is an empty string.
1638
1639 Can also be used as a |method|: >
1640 mylist->count(val)
1641<
1642 *cscope_connection()*
1643cscope_connection([{num} , {dbpath} [, {prepend}]])
1644 Checks for the existence of a |cscope| connection. If no
1645 parameters are specified, then the function returns:
1646 0, if cscope was not available (not compiled in), or
1647 if there are no cscope connections;
1648 1, if there is at least one cscope connection.
1649
1650 If parameters are specified, then the value of {num}
1651 determines how existence of a cscope connection is checked:
1652
1653 {num} Description of existence check
1654 ----- ------------------------------
1655 0 Same as no parameters (e.g., "cscope_connection()").
1656 1 Ignore {prepend}, and use partial string matches for
1657 {dbpath}.
1658 2 Ignore {prepend}, and use exact string matches for
1659 {dbpath}.
1660 3 Use {prepend}, use partial string matches for both
1661 {dbpath} and {prepend}.
1662 4 Use {prepend}, use exact string matches for both
1663 {dbpath} and {prepend}.
1664
1665 Note: All string comparisons are case sensitive!
1666
1667 Examples. Suppose we had the following (from ":cs show"): >
1668
1669 # pid database name prepend path
1670 0 27664 cscope.out /usr/local
1671<
1672 Invocation Return Val ~
1673 ---------- ---------- >
1674 cscope_connection() 1
1675 cscope_connection(1, "out") 1
1676 cscope_connection(2, "out") 0
1677 cscope_connection(3, "out") 0
1678 cscope_connection(3, "out", "local") 1
1679 cscope_connection(4, "out") 0
1680 cscope_connection(4, "out", "local") 0
1681 cscope_connection(4, "cscope.out", "/usr/local") 1
1682<
1683cursor({lnum}, {col} [, {off}]) *cursor()*
1684cursor({list})
1685 Positions the cursor at the column (byte count) {col} in the
1686 line {lnum}. The first column is one.
1687
1688 When there is one argument {list} this is used as a |List|
1689 with two, three or four item:
1690 [{lnum}, {col}]
1691 [{lnum}, {col}, {off}]
1692 [{lnum}, {col}, {off}, {curswant}]
1693 This is like the return value of |getpos()| or |getcurpos()|,
1694 but without the first item.
1695
1696 To position the cursor using the character count, use
1697 |setcursorcharpos()|.
1698
1699 Does not change the jumplist.
1700 {lnum} is used like with |getline()|.
1701 If {lnum} is greater than the number of lines in the buffer,
1702 the cursor will be positioned at the last line in the buffer.
1703 If {lnum} is zero, the cursor will stay in the current line.
1704 If {col} is greater than the number of bytes in the line,
1705 the cursor will be positioned at the last character in the
1706 line.
1707 If {col} is zero, the cursor will stay in the current column.
1708 If {curswant} is given it is used to set the preferred column
1709 for vertical movement. Otherwise {col} is used.
1710
1711 When 'virtualedit' is used {off} specifies the offset in
1712 screen columns from the start of the character. E.g., a
1713 position within a <Tab> or after the last character.
1714 Returns 0 when the position could be set, -1 otherwise.
1715
1716 Can also be used as a |method|: >
1717 GetCursorPos()->cursor()
1718
1719debugbreak({pid}) *debugbreak()*
1720 Specifically used to interrupt a program being debugged. It
1721 will cause process {pid} to get a SIGTRAP. Behavior for other
1722 processes is undefined. See |terminal-debugger|.
1723 {only available on MS-Windows}
1724
1725 Can also be used as a |method|: >
1726 GetPid()->debugbreak()
1727
1728deepcopy({expr} [, {noref}]) *deepcopy()* *E698*
1729 Make a copy of {expr}. For Numbers and Strings this isn't
1730 different from using {expr} directly.
1731 When {expr} is a |List| a full copy is created. This means
1732 that the original |List| can be changed without changing the
1733 copy, and vice versa. When an item is a |List| or
1734 |Dictionary|, a copy for it is made, recursively. Thus
1735 changing an item in the copy does not change the contents of
1736 the original |List|.
1737 A |Dictionary| is copied in a similar way as a |List|.
1738
1739 When {noref} is omitted or zero a contained |List| or
1740 |Dictionary| is only copied once. All references point to
1741 this single copy. With {noref} set to 1 every occurrence of a
1742 |List| or |Dictionary| results in a new copy. This also means
1743 that a cyclic reference causes deepcopy() to fail.
1744 *E724*
1745 Nesting is possible up to 100 levels. When there is an item
1746 that refers back to a higher level making a deep copy with
1747 {noref} set to 1 will fail.
1748 Also see |copy()|.
1749
1750 Can also be used as a |method|: >
1751 GetObject()->deepcopy()
1752
1753delete({fname} [, {flags}]) *delete()*
1754 Without {flags} or with {flags} empty: Deletes the file by the
1755 name {fname}. This also works when {fname} is a symbolic link.
1756
1757 When {flags} is "d": Deletes the directory by the name
1758 {fname}. This fails when directory {fname} is not empty.
1759
1760 When {flags} is "rf": Deletes the directory by the name
1761 {fname} and everything in it, recursively. BE CAREFUL!
1762 Note: on MS-Windows it is not possible to delete a directory
1763 that is being used.
1764
1765 A symbolic link itself is deleted, not what it points to.
1766
1767 The result is a Number, which is 0/false if the delete
1768 operation was successful and -1/true when the deletion failed
1769 or partly failed.
1770
1771 Use |remove()| to delete an item from a |List|.
1772 To delete a line from the buffer use |:delete| or
1773 |deletebufline()|.
1774
1775 Can also be used as a |method|: >
1776 GetName()->delete()
1777
1778deletebufline({buf}, {first} [, {last}]) *deletebufline()*
1779 Delete lines {first} to {last} (inclusive) from buffer {buf}.
1780 If {last} is omitted then delete line {first} only.
1781 On success 0 is returned, on failure 1 is returned.
1782
1783 This function works only for loaded buffers. First call
1784 |bufload()| if needed.
1785
1786 For the use of {buf}, see |bufname()| above.
1787
1788 {first} and {last} are used like with |getline()|. Note that
1789 when using |line()| this refers to the current buffer. Use "$"
1790 to refer to the last line in buffer {buf}.
1791
1792 Can also be used as a |method|: >
1793 GetBuffer()->deletebufline(1)
1794<
1795 *did_filetype()*
1796did_filetype() Returns |TRUE| when autocommands are being executed and the
1797 FileType event has been triggered at least once. Can be used
1798 to avoid triggering the FileType event again in the scripts
1799 that detect the file type. |FileType|
1800 Returns |FALSE| when `:setf FALLBACK` was used.
1801 When editing another file, the counter is reset, thus this
1802 really checks if the FileType event has been triggered for the
1803 current buffer. This allows an autocommand that starts
1804 editing another buffer to set 'filetype' and load a syntax
1805 file.
1806
1807diff_filler({lnum}) *diff_filler()*
1808 Returns the number of filler lines above line {lnum}.
1809 These are the lines that were inserted at this point in
1810 another diff'ed window. These filler lines are shown in the
1811 display but don't exist in the buffer.
1812 {lnum} is used like with |getline()|. Thus "." is the current
1813 line, "'m" mark m, etc.
1814 Returns 0 if the current window is not in diff mode.
1815
1816 Can also be used as a |method|: >
1817 GetLnum()->diff_filler()
1818
1819diff_hlID({lnum}, {col}) *diff_hlID()*
1820 Returns the highlight ID for diff mode at line {lnum} column
1821 {col} (byte index). When the current line does not have a
1822 diff change zero is returned.
1823 {lnum} is used like with |getline()|. Thus "." is the current
1824 line, "'m" mark m, etc.
1825 {col} is 1 for the leftmost column, {lnum} is 1 for the first
1826 line.
1827 The highlight ID can be used with |synIDattr()| to obtain
1828 syntax information about the highlighting.
1829
1830 Can also be used as a |method|: >
1831 GetLnum()->diff_hlID(col)
1832<
1833
1834digraph_get({chars}) *digraph_get()* *E1214*
1835 Return the digraph of {chars}. This should be a string with
1836 exactly two characters. If {chars} are not just two
1837 characters, or the digraph of {chars} does not exist, an error
1838 is given and an empty string is returned.
1839
1840 The character will be converted from Unicode to 'encoding'
1841 when needed. This does require the conversion to be
1842 available, it might fail.
1843
1844 Also see |digraph_getlist()|.
1845
1846 Examples: >
1847 " Get a built-in digraph
1848 :echo digraph_get('00') " Returns '∞'
1849
1850 " Get a user-defined digraph
1851 :call digraph_set('aa', 'あ')
1852 :echo digraph_get('aa') " Returns 'あ'
1853<
1854 Can also be used as a |method|: >
1855 GetChars()->digraph_get()
1856<
1857 This function works only when compiled with the |+digraphs|
1858 feature. If this feature is disabled, this function will
1859 display an error message.
1860
1861
1862digraph_getlist([{listall}]) *digraph_getlist()*
1863 Return a list of digraphs. If the {listall} argument is given
1864 and it is TRUE, return all digraphs, including the default
1865 digraphs. Otherwise, return only user-defined digraphs.
1866
1867 The characters will be converted from Unicode to 'encoding'
1868 when needed. This does require the conservation to be
1869 available, it might fail.
1870
1871 Also see |digraph_get()|.
1872
1873 Examples: >
1874 " Get user-defined digraphs
1875 :echo digraph_getlist()
1876
1877 " Get all the digraphs, including default digraphs
1878 :echo digraph_getlist(1)
1879<
1880 Can also be used as a |method|: >
1881 GetNumber()->digraph_getlist()
1882<
1883 This function works only when compiled with the |+digraphs|
1884 feature. If this feature is disabled, this function will
1885 display an error message.
1886
1887
Bram Moolenaara2baa732022-02-04 16:09:54 +00001888digraph_set({chars}, {digraph}) *digraph_set()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001889 Add digraph {chars} to the list. {chars} must be a string
1890 with two characters. {digraph} is a string with one UTF-8
Bram Moolenaara2baa732022-02-04 16:09:54 +00001891 encoded character. *E1215*
1892 Be careful, composing characters are NOT ignored. This
1893 function is similar to |:digraphs| command, but useful to add
1894 digraphs start with a white space.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001895
1896 The function result is v:true if |digraph| is registered. If
1897 this fails an error message is given and v:false is returned.
1898
1899 If you want to define multiple digraphs at once, you can use
1900 |digraph_setlist()|.
1901
1902 Example: >
1903 call digraph_set(' ', 'あ')
1904<
1905 Can be used as a |method|: >
1906 GetString()->digraph_set('あ')
1907<
1908 This function works only when compiled with the |+digraphs|
1909 feature. If this feature is disabled, this function will
1910 display an error message.
1911
1912
1913digraph_setlist({digraphlist}) *digraph_setlist()*
1914 Similar to |digraph_set()| but this function can add multiple
1915 digraphs at once. {digraphlist} is a list composed of lists,
1916 where each list contains two strings with {chars} and
Bram Moolenaara2baa732022-02-04 16:09:54 +00001917 {digraph} as in |digraph_set()|. *E1216*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001918 Example: >
1919 call digraph_setlist([['aa', 'あ'], ['ii', 'い']])
1920<
1921 It is similar to the following: >
1922 for [chars, digraph] in [['aa', 'あ'], ['ii', 'い']]
1923 call digraph_set(chars, digraph)
1924 endfor
1925< Except that the function returns after the first error,
1926 following digraphs will not be added.
1927
1928 Can be used as a |method|: >
1929 GetList()->digraph_setlist()
1930<
1931 This function works only when compiled with the |+digraphs|
1932 feature. If this feature is disabled, this function will
1933 display an error message.
1934
1935
1936echoraw({string}) *echoraw()*
1937 Output {string} as-is, including unprintable characters.
1938 This can be used to output a terminal code. For example, to
1939 disable modifyOtherKeys: >
1940 call echoraw(&t_TE)
1941< and to enable it again: >
1942 call echoraw(&t_TI)
1943< Use with care, you can mess up the terminal this way.
1944
1945
1946empty({expr}) *empty()*
1947 Return the Number 1 if {expr} is empty, zero otherwise.
1948 - A |List| or |Dictionary| is empty when it does not have any
1949 items.
1950 - A |String| is empty when its length is zero.
1951 - A |Number| and |Float| are empty when their value is zero.
1952 - |v:false|, |v:none| and |v:null| are empty, |v:true| is not.
1953 - A |Job| is empty when it failed to start.
1954 - A |Channel| is empty when it is closed.
1955 - A |Blob| is empty when its length is zero.
1956
1957 For a long |List| this is much faster than comparing the
1958 length with zero.
1959
1960 Can also be used as a |method|: >
1961 mylist->empty()
1962
1963environ() *environ()*
1964 Return all of environment variables as dictionary. You can
1965 check if an environment variable exists like this: >
1966 :echo has_key(environ(), 'HOME')
1967< Note that the variable name may be CamelCase; to ignore case
1968 use this: >
1969 :echo index(keys(environ()), 'HOME', 0, 1) != -1
1970
1971escape({string}, {chars}) *escape()*
1972 Escape the characters in {chars} that occur in {string} with a
1973 backslash. Example: >
1974 :echo escape('c:\program files\vim', ' \')
1975< results in: >
1976 c:\\program\ files\\vim
1977< Also see |shellescape()| and |fnameescape()|.
1978
1979 Can also be used as a |method|: >
1980 GetText()->escape(' \')
1981<
1982 *eval()*
1983eval({string}) Evaluate {string} and return the result. Especially useful to
1984 turn the result of |string()| back into the original value.
1985 This works for Numbers, Floats, Strings, Blobs and composites
1986 of them. Also works for |Funcref|s that refer to existing
1987 functions.
1988
1989 Can also be used as a |method|: >
1990 argv->join()->eval()
1991
1992eventhandler() *eventhandler()*
1993 Returns 1 when inside an event handler. That is that Vim got
1994 interrupted while waiting for the user to type a character,
1995 e.g., when dropping a file on Vim. This means interactive
1996 commands cannot be used. Otherwise zero is returned.
1997
1998executable({expr}) *executable()*
1999 This function checks if an executable with the name {expr}
2000 exists. {expr} must be the name of the program without any
2001 arguments.
2002 executable() uses the value of $PATH and/or the normal
2003 searchpath for programs. *PATHEXT*
2004 On MS-Windows the ".exe", ".bat", etc. can optionally be
2005 included. Then the extensions in $PATHEXT are tried. Thus if
2006 "foo.exe" does not exist, "foo.exe.bat" can be found. If
2007 $PATHEXT is not set then ".com;.exe;.bat;.cmd" is used. A dot
2008 by itself can be used in $PATHEXT to try using the name
2009 without an extension. When 'shell' looks like a Unix shell,
2010 then the name is also tried without adding an extension.
2011 On MS-Windows it only checks if the file exists and is not a
2012 directory, not if it's really executable.
2013 On MS-Windows an executable in the same directory as Vim is
2014 always found. Since this directory is added to $PATH it
2015 should also work to execute it |win32-PATH|.
2016 The result is a Number:
2017 1 exists
2018 0 does not exist
2019 -1 not implemented on this system
2020 |exepath()| can be used to get the full path of an executable.
2021
2022 Can also be used as a |method|: >
2023 GetCommand()->executable()
2024
2025execute({command} [, {silent}]) *execute()*
2026 Execute an Ex command or commands and return the output as a
2027 string.
2028 {command} can be a string or a List. In case of a List the
2029 lines are executed one by one.
2030 This is equivalent to: >
2031 redir => var
2032 {command}
2033 redir END
2034<
2035 The optional {silent} argument can have these values:
2036 "" no `:silent` used
2037 "silent" `:silent` used
2038 "silent!" `:silent!` used
2039 The default is "silent". Note that with "silent!", unlike
2040 `:redir`, error messages are dropped. When using an external
2041 command the screen may be messed up, use `system()` instead.
2042 *E930*
2043 It is not possible to use `:redir` anywhere in {command}.
2044
2045 To get a list of lines use |split()| on the result: >
2046 split(execute('args'), "\n")
2047
2048< To execute a command in another window than the current one
2049 use `win_execute()`.
2050
2051 When used recursively the output of the recursive call is not
2052 included in the output of the higher level call.
2053
2054 Can also be used as a |method|: >
2055 GetCommand()->execute()
2056
2057exepath({expr}) *exepath()*
2058 If {expr} is an executable and is either an absolute path, a
2059 relative path or found in $PATH, return the full path.
2060 Note that the current directory is used when {expr} starts
2061 with "./", which may be a problem for Vim: >
2062 echo exepath(v:progpath)
2063< If {expr} cannot be found in $PATH or is not executable then
2064 an empty string is returned.
2065
2066 Can also be used as a |method|: >
2067 GetCommand()->exepath()
2068<
2069 *exists()*
2070exists({expr}) The result is a Number, which is |TRUE| if {expr} is defined,
2071 zero otherwise.
2072
2073 Note: In a compiled |:def| function the evaluation is done at
2074 runtime. Use `exists_compiled()` to evaluate the expression
2075 at compile time.
2076
2077 For checking for a supported feature use |has()|.
2078 For checking if a file exists use |filereadable()|.
2079
2080 The {expr} argument is a string, which contains one of these:
Bram Moolenaarf10911e2022-01-29 22:20:48 +00002081 varname internal variable (see
2082 dict.key |internal-variables|). Also works
2083 list[i] for |curly-braces-names|, |Dictionary|
2084 import.Func entries, |List| items, imported
Bram Moolenaar944697a2022-02-20 19:48:20 +00002085 items, etc.
Bram Moolenaarf10911e2022-01-29 22:20:48 +00002086 Does not work for local variables in a
2087 compiled `:def` function.
Bram Moolenaar944697a2022-02-20 19:48:20 +00002088 Also works for a function in |Vim9|
2089 script, since it can be used as a
2090 function reference.
Bram Moolenaarf10911e2022-01-29 22:20:48 +00002091 Beware that evaluating an index may
2092 cause an error message for an invalid
2093 expression. E.g.: >
2094 :let l = [1, 2, 3]
2095 :echo exists("l[5]")
2096< 0 >
2097 :echo exists("l[xx]")
2098< E121: Undefined variable: xx
2099 0
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002100 &option-name Vim option (only checks if it exists,
2101 not if it really works)
2102 +option-name Vim option that works.
2103 $ENVNAME environment variable (could also be
2104 done by comparing with an empty
2105 string)
2106 *funcname built-in function (see |functions|)
2107 or user defined function (see
2108 |user-functions|) that is implemented.
2109 Also works for a variable that is a
2110 Funcref.
2111 ?funcname built-in function that could be
2112 implemented; to be used to check if
2113 "funcname" is valid
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002114 :cmdname Ex command: built-in command, user
2115 command or command modifier |:command|.
2116 Returns:
2117 1 for match with start of a command
2118 2 full match with a command
2119 3 matches several user commands
2120 To check for a supported command
2121 always check the return value to be 2.
2122 :2match The |:2match| command.
2123 :3match The |:3match| command.
2124 #event autocommand defined for this event
2125 #event#pattern autocommand defined for this event and
2126 pattern (the pattern is taken
2127 literally and compared to the
2128 autocommand patterns character by
2129 character)
2130 #group autocommand group exists
2131 #group#event autocommand defined for this group and
2132 event.
2133 #group#event#pattern
2134 autocommand defined for this group,
2135 event and pattern.
2136 ##event autocommand for this event is
2137 supported.
2138
2139 Examples: >
2140 exists("&shortname")
2141 exists("$HOSTNAME")
2142 exists("*strftime")
Bram Moolenaar944697a2022-02-20 19:48:20 +00002143 exists("*s:MyFunc") " only for legacy script
2144 exists("*MyFunc")
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002145 exists("bufcount")
2146 exists(":Make")
2147 exists("#CursorHold")
2148 exists("#BufReadPre#*.gz")
2149 exists("#filetypeindent")
2150 exists("#filetypeindent#FileType")
2151 exists("#filetypeindent#FileType#*")
2152 exists("##ColorScheme")
2153< There must be no space between the symbol (&/$/*/#) and the
2154 name.
2155 There must be no extra characters after the name, although in
2156 a few cases this is ignored. That may become more strict in
2157 the future, thus don't count on it!
2158 Working example: >
2159 exists(":make")
2160< NOT working example: >
2161 exists(":make install")
2162
2163< Note that the argument must be a string, not the name of the
2164 variable itself. For example: >
2165 exists(bufcount)
2166< This doesn't check for existence of the "bufcount" variable,
2167 but gets the value of "bufcount", and checks if that exists.
2168
2169 Can also be used as a |method|: >
2170 Varname()->exists()
2171<
2172
2173exists_compiled({expr}) *exists_compiled()*
2174 Like `exists()` but evaluated at compile time. This is useful
2175 to skip a block where a function is used that would otherwise
2176 give an error: >
2177 if exists_compiled('*ThatFunction')
2178 ThatFunction('works')
2179 endif
2180< If `exists()` were used then a compilation error would be
2181 given if ThatFunction() is not defined.
2182
2183 {expr} must be a literal string. *E1232*
2184 Can only be used in a |:def| function. *E1233*
2185 This does not work to check for arguments or local variables.
2186
2187
2188exp({expr}) *exp()*
2189 Return the exponential of {expr} as a |Float| in the range
2190 [0, inf].
2191 {expr} must evaluate to a |Float| or a |Number|.
2192 Examples: >
2193 :echo exp(2)
2194< 7.389056 >
2195 :echo exp(-1)
2196< 0.367879
2197
2198 Can also be used as a |method|: >
2199 Compute()->exp()
2200<
2201 {only available when compiled with the |+float| feature}
2202
2203
2204expand({string} [, {nosuf} [, {list}]]) *expand()*
2205 Expand wildcards and the following special keywords in
2206 {string}. 'wildignorecase' applies.
2207
2208 If {list} is given and it is |TRUE|, a List will be returned.
2209 Otherwise the result is a String and when there are several
2210 matches, they are separated by <NL> characters. [Note: in
2211 version 5.0 a space was used, which caused problems when a
2212 file name contains a space]
2213
2214 If the expansion fails, the result is an empty string. A name
2215 for a non-existing file is not included, unless {string} does
2216 not start with '%', '#' or '<', see below.
2217
2218 When {string} starts with '%', '#' or '<', the expansion is
2219 done like for the |cmdline-special| variables with their
2220 associated modifiers. Here is a short overview:
2221
2222 % current file name
2223 # alternate file name
2224 #n alternate file name n
2225 <cfile> file name under the cursor
2226 <afile> autocmd file name
2227 <abuf> autocmd buffer number (as a String!)
2228 <amatch> autocmd matched name
2229 <cexpr> C expression under the cursor
2230 <sfile> sourced script file or function name
2231 <slnum> sourced script line number or function
2232 line number
2233 <sflnum> script file line number, also when in
2234 a function
2235 <SID> "<SNR>123_" where "123" is the
2236 current script ID |<SID>|
2237 <stack> call stack
2238 <cword> word under the cursor
2239 <cWORD> WORD under the cursor
2240 <client> the {clientid} of the last received
2241 message |server2client()|
2242 Modifiers:
2243 :p expand to full path
2244 :h head (last path component removed)
2245 :t tail (last path component only)
2246 :r root (one extension removed)
2247 :e extension only
2248
2249 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00002250 :let &tags = expand("%:p:h") .. "/tags"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002251< Note that when expanding a string that starts with '%', '#' or
2252 '<', any following text is ignored. This does NOT work: >
2253 :let doesntwork = expand("%:h.bak")
2254< Use this: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00002255 :let doeswork = expand("%:h") .. ".bak"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002256< Also note that expanding "<cfile>" and others only returns the
2257 referenced file name without further expansion. If "<cfile>"
2258 is "~/.cshrc", you need to do another expand() to have the
2259 "~/" expanded into the path of the home directory: >
2260 :echo expand(expand("<cfile>"))
2261<
2262 There cannot be white space between the variables and the
2263 following modifier. The |fnamemodify()| function can be used
2264 to modify normal file names.
2265
2266 When using '%' or '#', and the current or alternate file name
2267 is not defined, an empty string is used. Using "%:p" in a
2268 buffer with no name, results in the current directory, with a
2269 '/' added.
2270
2271 When {string} does not start with '%', '#' or '<', it is
2272 expanded like a file name is expanded on the command line.
2273 'suffixes' and 'wildignore' are used, unless the optional
2274 {nosuf} argument is given and it is |TRUE|.
2275 Names for non-existing files are included. The "**" item can
2276 be used to search in a directory tree. For example, to find
2277 all "README" files in the current directory and below: >
2278 :echo expand("**/README")
2279<
2280 expand() can also be used to expand variables and environment
2281 variables that are only known in a shell. But this can be
2282 slow, because a shell may be used to do the expansion. See
2283 |expr-env-expand|.
2284 The expanded variable is still handled like a list of file
2285 names. When an environment variable cannot be expanded, it is
2286 left unchanged. Thus ":echo expand('$FOOBAR')" results in
2287 "$FOOBAR".
2288
2289 See |glob()| for finding existing files. See |system()| for
2290 getting the raw output of an external command.
2291
2292 Can also be used as a |method|: >
2293 Getpattern()->expand()
2294
2295expandcmd({string}) *expandcmd()*
2296 Expand special items in String {string} like what is done for
2297 an Ex command such as `:edit`. This expands special keywords,
2298 like with |expand()|, and environment variables, anywhere in
2299 {string}. "~user" and "~/path" are only expanded at the
2300 start.
2301 Returns the expanded string. Example: >
2302 :echo expandcmd('make %<.o')
2303
2304< Can also be used as a |method|: >
2305 GetCommand()->expandcmd()
2306<
2307extend({expr1}, {expr2} [, {expr3}]) *extend()*
2308 {expr1} and {expr2} must be both |Lists| or both
2309 |Dictionaries|.
2310
2311 If they are |Lists|: Append {expr2} to {expr1}.
2312 If {expr3} is given insert the items of {expr2} before the
2313 item with index {expr3} in {expr1}. When {expr3} is zero
2314 insert before the first item. When {expr3} is equal to
2315 len({expr1}) then {expr2} is appended.
2316 Examples: >
2317 :echo sort(extend(mylist, [7, 5]))
2318 :call extend(mylist, [2, 3], 1)
2319< When {expr1} is the same List as {expr2} then the number of
2320 items copied is equal to the original length of the List.
2321 E.g., when {expr3} is 1 you get N new copies of the first item
2322 (where N is the original length of the List).
2323 Use |add()| to concatenate one item to a list. To concatenate
2324 two lists into a new list use the + operator: >
2325 :let newlist = [1, 2, 3] + [4, 5]
2326<
2327 If they are |Dictionaries|:
2328 Add all entries from {expr2} to {expr1}.
2329 If a key exists in both {expr1} and {expr2} then {expr3} is
2330 used to decide what to do:
2331 {expr3} = "keep": keep the value of {expr1}
2332 {expr3} = "force": use the value of {expr2}
2333 {expr3} = "error": give an error message *E737*
2334 When {expr3} is omitted then "force" is assumed.
2335
2336 {expr1} is changed when {expr2} is not empty. If necessary
2337 make a copy of {expr1} first.
2338 {expr2} remains unchanged.
2339 When {expr1} is locked and {expr2} is not empty the operation
2340 fails.
2341 Returns {expr1}.
2342
2343 Can also be used as a |method|: >
2344 mylist->extend(otherlist)
2345
2346
2347extendnew({expr1}, {expr2} [, {expr3}]) *extendnew()*
2348 Like |extend()| but instead of adding items to {expr1} a new
2349 List or Dictionary is created and returned. {expr1} remains
2350 unchanged. Items can still be changed by {expr2}, if you
2351 don't want that use |deepcopy()| first.
2352
2353
2354feedkeys({string} [, {mode}]) *feedkeys()*
2355 Characters in {string} are queued for processing as if they
2356 come from a mapping or were typed by the user.
2357
2358 By default the string is added to the end of the typeahead
2359 buffer, thus if a mapping is still being executed the
2360 characters come after them. Use the 'i' flag to insert before
2361 other characters, they will be executed next, before any
2362 characters from a mapping.
2363
2364 The function does not wait for processing of keys contained in
2365 {string}.
2366
2367 To include special keys into {string}, use double-quotes
2368 and "\..." notation |expr-quote|. For example,
2369 feedkeys("\<CR>") simulates pressing of the <Enter> key. But
2370 feedkeys('\<CR>') pushes 5 characters.
2371 A special code that might be useful is <Ignore>, it exits the
2372 wait for a character without doing anything. *<Ignore>*
2373
2374 {mode} is a String, which can contain these character flags:
2375 'm' Remap keys. This is default. If {mode} is absent,
2376 keys are remapped.
2377 'n' Do not remap keys.
2378 't' Handle keys as if typed; otherwise they are handled as
2379 if coming from a mapping. This matters for undo,
2380 opening folds, etc.
2381 'L' Lowlevel input. Only works for Unix or when using the
2382 GUI. Keys are used as if they were coming from the
2383 terminal. Other flags are not used. *E980*
2384 When a CTRL-C interrupts and 't' is included it sets
2385 the internal "got_int" flag.
2386 'i' Insert the string instead of appending (see above).
2387 'x' Execute commands until typeahead is empty. This is
2388 similar to using ":normal!". You can call feedkeys()
2389 several times without 'x' and then one time with 'x'
2390 (possibly with an empty {string}) to execute all the
2391 typeahead. Note that when Vim ends in Insert mode it
2392 will behave as if <Esc> is typed, to avoid getting
2393 stuck, waiting for a character to be typed before the
2394 script continues.
2395 Note that if you manage to call feedkeys() while
2396 executing commands, thus calling it recursively, then
2397 all typeahead will be consumed by the last call.
Bram Moolenaara9725222022-01-16 13:30:33 +00002398 'c' Remove any script context when executing, so that
2399 legacy script syntax applies, "s:var" does not work,
2400 etc.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002401 '!' When used with 'x' will not end Insert mode. Can be
2402 used in a test when a timer is set to exit Insert mode
2403 a little later. Useful for testing CursorHoldI.
2404
2405 Return value is always 0.
2406
2407 Can also be used as a |method|: >
2408 GetInput()->feedkeys()
2409
2410filereadable({file}) *filereadable()*
2411 The result is a Number, which is |TRUE| when a file with the
2412 name {file} exists, and can be read. If {file} doesn't exist,
2413 or is a directory, the result is |FALSE|. {file} is any
2414 expression, which is used as a String.
2415 If you don't care about the file being readable you can use
2416 |glob()|.
2417 {file} is used as-is, you may want to expand wildcards first: >
2418 echo filereadable('~/.vimrc')
2419 0
2420 echo filereadable(expand('~/.vimrc'))
2421 1
2422
2423< Can also be used as a |method|: >
2424 GetName()->filereadable()
2425< *file_readable()*
2426 Obsolete name: file_readable().
2427
2428
2429filewritable({file}) *filewritable()*
2430 The result is a Number, which is 1 when a file with the
2431 name {file} exists, and can be written. If {file} doesn't
2432 exist, or is not writable, the result is 0. If {file} is a
2433 directory, and we can write to it, the result is 2.
2434
2435 Can also be used as a |method|: >
2436 GetName()->filewritable()
2437
2438
2439filter({expr1}, {expr2}) *filter()*
2440 {expr1} must be a |List|, |String|, |Blob| or |Dictionary|.
2441 For each item in {expr1} evaluate {expr2} and when the result
2442 is zero or false remove the item from the |List| or
2443 |Dictionary|. Similarly for each byte in a |Blob| and each
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00002444 character in a |String|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002445
2446 {expr2} must be a |string| or |Funcref|.
2447
2448 If {expr2} is a |string|, inside {expr2} |v:val| has the value
2449 of the current item. For a |Dictionary| |v:key| has the key
2450 of the current item and for a |List| |v:key| has the index of
2451 the current item. For a |Blob| |v:key| has the index of the
2452 current byte. For a |String| |v:key| has the index of the
2453 current character.
2454 Examples: >
2455 call filter(mylist, 'v:val !~ "OLD"')
2456< Removes the items where "OLD" appears. >
2457 call filter(mydict, 'v:key >= 8')
2458< Removes the items with a key below 8. >
2459 call filter(var, 0)
2460< Removes all the items, thus clears the |List| or |Dictionary|.
2461
2462 Note that {expr2} is the result of expression and is then
2463 used as an expression again. Often it is good to use a
2464 |literal-string| to avoid having to double backslashes.
2465
2466 If {expr2} is a |Funcref| it must take two arguments:
2467 1. the key or the index of the current item.
2468 2. the value of the current item.
2469 The function must return |TRUE| if the item should be kept.
2470 Example that keeps the odd items of a list: >
2471 func Odd(idx, val)
2472 return a:idx % 2 == 1
2473 endfunc
2474 call filter(mylist, function('Odd'))
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00002475< It is shorter when using a |lambda|. In |Vim9| syntax: >
2476 call filter(myList, (idx, val) => idx * val <= 42)
2477< In legacy script syntax: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002478 call filter(myList, {idx, val -> idx * val <= 42})
2479< If you do not use "val" you can leave it out: >
2480 call filter(myList, {idx -> idx % 2 == 1})
2481<
2482 In |Vim9| script the result must be true, false, zero or one.
2483 Other values will result in a type error.
2484
2485 For a |List| and a |Dictionary| the operation is done
2486 in-place. If you want it to remain unmodified make a copy
2487 first: >
2488 :let l = filter(copy(mylist), 'v:val =~ "KEEP"')
2489
2490< Returns {expr1}, the |List| or |Dictionary| that was filtered,
naohiro ono56200ee2022-01-01 14:59:44 +00002491 or a new |Blob| or |String|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002492 When an error is encountered while evaluating {expr2} no
2493 further items in {expr1} are processed.
2494 When {expr2} is a Funcref errors inside a function are ignored,
2495 unless it was defined with the "abort" flag.
2496
2497 Can also be used as a |method|: >
2498 mylist->filter(expr2)
2499
2500finddir({name} [, {path} [, {count}]]) *finddir()*
2501 Find directory {name} in {path}. Supports both downwards and
2502 upwards recursive directory searches. See |file-searching|
2503 for the syntax of {path}.
2504
2505 Returns the path of the first found match. When the found
2506 directory is below the current directory a relative path is
2507 returned. Otherwise a full path is returned.
2508 If {path} is omitted or empty then 'path' is used.
2509
2510 If the optional {count} is given, find {count}'s occurrence of
2511 {name} in {path} instead of the first one.
2512 When {count} is negative return all the matches in a |List|.
2513
2514 This is quite similar to the ex-command `:find`.
2515 {only available when compiled with the |+file_in_path|
2516 feature}
2517
2518 Can also be used as a |method|: >
2519 GetName()->finddir()
2520
2521findfile({name} [, {path} [, {count}]]) *findfile()*
2522 Just like |finddir()|, but find a file instead of a directory.
2523 Uses 'suffixesadd'.
2524 Example: >
2525 :echo findfile("tags.vim", ".;")
2526< Searches from the directory of the current file upwards until
2527 it finds the file "tags.vim".
2528
2529 Can also be used as a |method|: >
2530 GetName()->findfile()
2531
2532flatten({list} [, {maxdepth}]) *flatten()*
2533 Flatten {list} up to {maxdepth} levels. Without {maxdepth}
2534 the result is a |List| without nesting, as if {maxdepth} is
2535 a very large number.
2536 The {list} is changed in place, use |flattennew()| if you do
2537 not want that.
2538 In Vim9 script flatten() cannot be used, you must always use
Bram Moolenaara2baa732022-02-04 16:09:54 +00002539 |flattennew()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002540 *E900*
2541 {maxdepth} means how deep in nested lists changes are made.
2542 {list} is not modified when {maxdepth} is 0.
2543 {maxdepth} must be positive number.
2544
2545 If there is an error the number zero is returned.
2546
2547 Example: >
2548 :echo flatten([1, [2, [3, 4]], 5])
2549< [1, 2, 3, 4, 5] >
2550 :echo flatten([1, [2, [3, 4]], 5], 1)
2551< [1, 2, [3, 4], 5]
2552
2553 Can also be used as a |method|: >
2554 mylist->flatten()
2555<
2556flattennew({list} [, {maxdepth}]) *flattennew()*
2557 Like |flatten()| but first make a copy of {list}.
2558
2559
2560float2nr({expr}) *float2nr()*
2561 Convert {expr} to a Number by omitting the part after the
2562 decimal point.
2563 {expr} must evaluate to a |Float| or a Number.
2564 When the value of {expr} is out of range for a |Number| the
2565 result is truncated to 0x7fffffff or -0x7fffffff (or when
2566 64-bit Number support is enabled, 0x7fffffffffffffff or
2567 -0x7fffffffffffffff). NaN results in -0x80000000 (or when
2568 64-bit Number support is enabled, -0x8000000000000000).
2569 Examples: >
2570 echo float2nr(3.95)
2571< 3 >
2572 echo float2nr(-23.45)
2573< -23 >
2574 echo float2nr(1.0e100)
2575< 2147483647 (or 9223372036854775807) >
2576 echo float2nr(-1.0e150)
2577< -2147483647 (or -9223372036854775807) >
2578 echo float2nr(1.0e-100)
2579< 0
2580
2581 Can also be used as a |method|: >
2582 Compute()->float2nr()
2583<
2584 {only available when compiled with the |+float| feature}
2585
2586
2587floor({expr}) *floor()*
2588 Return the largest integral value less than or equal to
2589 {expr} as a |Float| (round down).
2590 {expr} must evaluate to a |Float| or a |Number|.
2591 Examples: >
2592 echo floor(1.856)
2593< 1.0 >
2594 echo floor(-5.456)
2595< -6.0 >
2596 echo floor(4.0)
2597< 4.0
2598
2599 Can also be used as a |method|: >
2600 Compute()->floor()
2601<
2602 {only available when compiled with the |+float| feature}
2603
2604
2605fmod({expr1}, {expr2}) *fmod()*
2606 Return the remainder of {expr1} / {expr2}, even if the
2607 division is not representable. Returns {expr1} - i * {expr2}
2608 for some integer i such that if {expr2} is non-zero, the
2609 result has the same sign as {expr1} and magnitude less than
2610 the magnitude of {expr2}. If {expr2} is zero, the value
2611 returned is zero. The value returned is a |Float|.
2612 {expr1} and {expr2} must evaluate to a |Float| or a |Number|.
2613 Examples: >
2614 :echo fmod(12.33, 1.22)
2615< 0.13 >
2616 :echo fmod(-12.33, 1.22)
2617< -0.13
2618
2619 Can also be used as a |method|: >
2620 Compute()->fmod(1.22)
2621<
2622 {only available when compiled with |+float| feature}
2623
2624
2625fnameescape({string}) *fnameescape()*
2626 Escape {string} for use as file name command argument. All
2627 characters that have a special meaning, such as '%' and '|'
2628 are escaped with a backslash.
2629 For most systems the characters escaped are
2630 " \t\n*?[{`$\\%#'\"|!<". For systems where a backslash
2631 appears in a filename, it depends on the value of 'isfname'.
2632 A leading '+' and '>' is also escaped (special after |:edit|
2633 and |:write|). And a "-" by itself (special after |:cd|).
2634 Example: >
2635 :let fname = '+some str%nge|name'
Bram Moolenaarc51cf032022-02-26 12:25:45 +00002636 :exe "edit " .. fnameescape(fname)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002637< results in executing: >
2638 edit \+some\ str\%nge\|name
2639<
2640 Can also be used as a |method|: >
2641 GetName()->fnameescape()
2642
2643fnamemodify({fname}, {mods}) *fnamemodify()*
2644 Modify file name {fname} according to {mods}. {mods} is a
2645 string of characters like it is used for file names on the
2646 command line. See |filename-modifiers|.
2647 Example: >
2648 :echo fnamemodify("main.c", ":p:h")
2649< results in: >
2650 /home/mool/vim/vim/src
2651< If {mods} is empty then {fname} is returned.
2652 Note: Environment variables don't work in {fname}, use
2653 |expand()| first then.
2654
2655 Can also be used as a |method|: >
2656 GetName()->fnamemodify(':p:h')
2657
2658foldclosed({lnum}) *foldclosed()*
2659 The result is a Number. If the line {lnum} is in a closed
2660 fold, the result is the number of the first line in that fold.
2661 If the line {lnum} is not in a closed fold, -1 is returned.
2662 {lnum} is used like with |getline()|. Thus "." is the current
2663 line, "'m" mark m, etc.
2664
2665 Can also be used as a |method|: >
2666 GetLnum()->foldclosed()
2667
2668foldclosedend({lnum}) *foldclosedend()*
2669 The result is a Number. If the line {lnum} is in a closed
2670 fold, the result is the number of the last line in that fold.
2671 If the line {lnum} is not in a closed fold, -1 is returned.
2672 {lnum} is used like with |getline()|. Thus "." is the current
2673 line, "'m" mark m, etc.
2674
2675 Can also be used as a |method|: >
2676 GetLnum()->foldclosedend()
2677
2678foldlevel({lnum}) *foldlevel()*
2679 The result is a Number, which is the foldlevel of line {lnum}
2680 in the current buffer. For nested folds the deepest level is
2681 returned. If there is no fold at line {lnum}, zero is
2682 returned. It doesn't matter if the folds are open or closed.
2683 When used while updating folds (from 'foldexpr') -1 is
2684 returned for lines where folds are still to be updated and the
2685 foldlevel is unknown. As a special case the level of the
2686 previous line is usually available.
2687 {lnum} is used like with |getline()|. Thus "." is the current
2688 line, "'m" mark m, etc.
2689
2690 Can also be used as a |method|: >
2691 GetLnum()->foldlevel()
2692<
2693 *foldtext()*
2694foldtext() Returns a String, to be displayed for a closed fold. This is
2695 the default function used for the 'foldtext' option and should
2696 only be called from evaluating 'foldtext'. It uses the
2697 |v:foldstart|, |v:foldend| and |v:folddashes| variables.
2698 The returned string looks like this: >
2699 +-- 45 lines: abcdef
2700< The number of leading dashes depends on the foldlevel. The
2701 "45" is the number of lines in the fold. "abcdef" is the text
2702 in the first non-blank line of the fold. Leading white space,
2703 "//" or "/*" and the text from the 'foldmarker' and
2704 'commentstring' options is removed.
2705 When used to draw the actual foldtext, the rest of the line
2706 will be filled with the fold char from the 'fillchars'
2707 setting.
2708 {not available when compiled without the |+folding| feature}
2709
2710foldtextresult({lnum}) *foldtextresult()*
2711 Returns the text that is displayed for the closed fold at line
2712 {lnum}. Evaluates 'foldtext' in the appropriate context.
2713 When there is no closed fold at {lnum} an empty string is
2714 returned.
2715 {lnum} is used like with |getline()|. Thus "." is the current
2716 line, "'m" mark m, etc.
2717 Useful when exporting folded text, e.g., to HTML.
2718 {not available when compiled without the |+folding| feature}
2719
2720
2721 Can also be used as a |method|: >
2722 GetLnum()->foldtextresult()
2723<
2724 *foreground()*
2725foreground() Move the Vim window to the foreground. Useful when sent from
2726 a client to a Vim server. |remote_send()|
2727 On Win32 systems this might not work, the OS does not always
2728 allow a window to bring itself to the foreground. Use
2729 |remote_foreground()| instead.
2730 {only in the Win32, Athena, Motif and GTK GUI versions and the
2731 Win32 console version}
2732
2733fullcommand({name}) *fullcommand()*
2734 Get the full command name from a short abbreviated command
2735 name; see |20.2| for details on command abbreviations.
2736
2737 The string argument {name} may start with a `:` and can
2738 include a [range], these are skipped and not returned.
2739 Returns an empty string if a command doesn't exist or if it's
2740 ambiguous (for user-defined commands).
2741
2742 For example `fullcommand('s')`, `fullcommand('sub')`,
2743 `fullcommand(':%substitute')` all return "substitute".
2744
2745 Can also be used as a |method|: >
2746 GetName()->fullcommand()
2747<
2748 *funcref()*
2749funcref({name} [, {arglist}] [, {dict}])
2750 Just like |function()|, but the returned Funcref will lookup
2751 the function by reference, not by name. This matters when the
2752 function {name} is redefined later.
2753
2754 Unlike |function()|, {name} must be an existing user function.
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00002755 It only works for an autoloaded function if it has already
2756 been loaded (to avoid mistakenly loading the autoload script
2757 when only intending to use the function name, use |function()|
2758 instead). {name} cannot be a builtin function.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002759
2760 Can also be used as a |method|: >
2761 GetFuncname()->funcref([arg])
2762<
2763 *function()* *partial* *E700* *E922* *E923*
2764function({name} [, {arglist}] [, {dict}])
2765 Return a |Funcref| variable that refers to function {name}.
2766 {name} can be the name of a user defined function or an
2767 internal function.
2768
2769 {name} can also be a Funcref or a partial. When it is a
2770 partial the dict stored in it will be used and the {dict}
2771 argument is not allowed. E.g.: >
2772 let FuncWithArg = function(dict.Func, [arg])
2773 let Broken = function(dict.Func, [arg], dict)
2774<
2775 When using the Funcref the function will be found by {name},
2776 also when it was redefined later. Use |funcref()| to keep the
2777 same function.
2778
2779 When {arglist} or {dict} is present this creates a partial.
2780 That means the argument list and/or the dictionary is stored in
2781 the Funcref and will be used when the Funcref is called.
2782
2783 The arguments are passed to the function in front of other
2784 arguments, but after any argument from |method|. Example: >
2785 func Callback(arg1, arg2, name)
2786 ...
2787 let Partial = function('Callback', ['one', 'two'])
2788 ...
2789 call Partial('name')
2790< Invokes the function as with: >
2791 call Callback('one', 'two', 'name')
2792
2793< With a |method|: >
2794 func Callback(one, two, three)
2795 ...
2796 let Partial = function('Callback', ['two'])
2797 ...
2798 eval 'one'->Partial('three')
2799< Invokes the function as with: >
2800 call Callback('one', 'two', 'three')
2801
2802< The function() call can be nested to add more arguments to the
2803 Funcref. The extra arguments are appended to the list of
2804 arguments. Example: >
2805 func Callback(arg1, arg2, name)
2806 ...
2807 let Func = function('Callback', ['one'])
2808 let Func2 = function(Func, ['two'])
2809 ...
2810 call Func2('name')
2811< Invokes the function as with: >
2812 call Callback('one', 'two', 'name')
2813
2814< The Dictionary is only useful when calling a "dict" function.
2815 In that case the {dict} is passed in as "self". Example: >
2816 function Callback() dict
Bram Moolenaarc51cf032022-02-26 12:25:45 +00002817 echo "called for " .. self.name
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002818 endfunction
2819 ...
2820 let context = {"name": "example"}
2821 let Func = function('Callback', context)
2822 ...
2823 call Func() " will echo: called for example
2824< The use of function() is not needed when there are no extra
2825 arguments, these two are equivalent: >
2826 let Func = function('Callback', context)
2827 let Func = context.Callback
2828
2829< The argument list and the Dictionary can be combined: >
2830 function Callback(arg1, count) dict
2831 ...
2832 let context = {"name": "example"}
2833 let Func = function('Callback', ['one'], context)
2834 ...
2835 call Func(500)
2836< Invokes the function as with: >
2837 call context.Callback('one', 500)
2838<
2839 Can also be used as a |method|: >
2840 GetFuncname()->function([arg])
2841
2842
2843garbagecollect([{atexit}]) *garbagecollect()*
2844 Cleanup unused |Lists|, |Dictionaries|, |Channels| and |Jobs|
2845 that have circular references.
2846
2847 There is hardly ever a need to invoke this function, as it is
2848 automatically done when Vim runs out of memory or is waiting
2849 for the user to press a key after 'updatetime'. Items without
2850 circular references are always freed when they become unused.
2851 This is useful if you have deleted a very big |List| and/or
2852 |Dictionary| with circular references in a script that runs
2853 for a long time.
2854
2855 When the optional {atexit} argument is one, garbage
2856 collection will also be done when exiting Vim, if it wasn't
2857 done before. This is useful when checking for memory leaks.
2858
2859 The garbage collection is not done immediately but only when
2860 it's safe to perform. This is when waiting for the user to
2861 type a character. To force garbage collection immediately use
2862 |test_garbagecollect_now()|.
2863
2864get({list}, {idx} [, {default}]) *get()*
2865 Get item {idx} from |List| {list}. When this item is not
2866 available return {default}. Return zero when {default} is
2867 omitted.
2868 Preferably used as a |method|: >
2869 mylist->get(idx)
2870get({blob}, {idx} [, {default}])
2871 Get byte {idx} from |Blob| {blob}. When this byte is not
2872 available return {default}. Return -1 when {default} is
2873 omitted.
2874 Preferably used as a |method|: >
2875 myblob->get(idx)
2876get({dict}, {key} [, {default}])
2877 Get item with key {key} from |Dictionary| {dict}. When this
2878 item is not available return {default}. Return zero when
2879 {default} is omitted. Useful example: >
2880 let val = get(g:, 'var_name', 'default')
2881< This gets the value of g:var_name if it exists, and uses
2882 'default' when it does not exist.
2883 Preferably used as a |method|: >
2884 mydict->get(key)
2885get({func}, {what})
Bram Moolenaar6f4754b2022-01-23 12:07:04 +00002886 Get item {what} from Funcref {func}. Possible values for
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002887 {what} are:
2888 "name" The function name
2889 "func" The function
2890 "dict" The dictionary
2891 "args" The list with arguments
2892 Preferably used as a |method|: >
2893 myfunc->get(what)
2894<
2895 *getbufinfo()*
2896getbufinfo([{buf}])
2897getbufinfo([{dict}])
2898 Get information about buffers as a List of Dictionaries.
2899
2900 Without an argument information about all the buffers is
2901 returned.
2902
2903 When the argument is a |Dictionary| only the buffers matching
2904 the specified criteria are returned. The following keys can
2905 be specified in {dict}:
2906 buflisted include only listed buffers.
2907 bufloaded include only loaded buffers.
2908 bufmodified include only modified buffers.
2909
2910 Otherwise, {buf} specifies a particular buffer to return
2911 information for. For the use of {buf}, see |bufname()|
2912 above. If the buffer is found the returned List has one item.
2913 Otherwise the result is an empty list.
2914
2915 Each returned List item is a dictionary with the following
2916 entries:
2917 bufnr Buffer number.
2918 changed TRUE if the buffer is modified.
2919 changedtick Number of changes made to the buffer.
2920 hidden TRUE if the buffer is hidden.
2921 lastused Timestamp in seconds, like
2922 |localtime()|, when the buffer was
2923 last used.
2924 {only with the |+viminfo| feature}
2925 listed TRUE if the buffer is listed.
2926 lnum Line number used for the buffer when
2927 opened in the current window.
2928 Only valid if the buffer has been
2929 displayed in the window in the past.
2930 If you want the line number of the
2931 last known cursor position in a given
2932 window, use |line()|: >
2933 :echo line('.', {winid})
2934<
2935 linecount Number of lines in the buffer (only
2936 valid when loaded)
2937 loaded TRUE if the buffer is loaded.
2938 name Full path to the file in the buffer.
2939 signs List of signs placed in the buffer.
2940 Each list item is a dictionary with
2941 the following fields:
2942 id sign identifier
2943 lnum line number
2944 name sign name
2945 variables A reference to the dictionary with
2946 buffer-local variables.
2947 windows List of |window-ID|s that display this
2948 buffer
2949 popups List of popup |window-ID|s that
2950 display this buffer
2951
2952 Examples: >
2953 for buf in getbufinfo()
2954 echo buf.name
2955 endfor
2956 for buf in getbufinfo({'buflisted':1})
2957 if buf.changed
2958 ....
2959 endif
2960 endfor
2961<
2962 To get buffer-local options use: >
2963 getbufvar({bufnr}, '&option_name')
2964<
2965 Can also be used as a |method|: >
2966 GetBufnr()->getbufinfo()
2967<
2968
2969 *getbufline()*
2970getbufline({buf}, {lnum} [, {end}])
2971 Return a |List| with the lines starting from {lnum} to {end}
2972 (inclusive) in the buffer {buf}. If {end} is omitted, a
2973 |List| with only the line {lnum} is returned.
2974
2975 For the use of {buf}, see |bufname()| above.
2976
2977 For {lnum} and {end} "$" can be used for the last line of the
2978 buffer. Otherwise a number must be used.
2979
2980 When {lnum} is smaller than 1 or bigger than the number of
2981 lines in the buffer, an empty |List| is returned.
2982
2983 When {end} is greater than the number of lines in the buffer,
2984 it is treated as {end} is set to the number of lines in the
2985 buffer. When {end} is before {lnum} an empty |List| is
2986 returned.
2987
2988 This function works only for loaded buffers. For unloaded and
2989 non-existing buffers, an empty |List| is returned.
2990
2991 Example: >
2992 :let lines = getbufline(bufnr("myfile"), 1, "$")
2993
2994< Can also be used as a |method|: >
2995 GetBufnr()->getbufline(lnum)
2996
2997getbufvar({buf}, {varname} [, {def}]) *getbufvar()*
2998 The result is the value of option or local buffer variable
2999 {varname} in buffer {buf}. Note that the name without "b:"
3000 must be used.
3001 The {varname} argument is a string.
3002 When {varname} is empty returns a |Dictionary| with all the
3003 buffer-local variables.
3004 When {varname} is equal to "&" returns a |Dictionary| with all
3005 the buffer-local options.
3006 Otherwise, when {varname} starts with "&" returns the value of
3007 a buffer-local option.
3008 This also works for a global or buffer-local option, but it
3009 doesn't work for a global variable, window-local variable or
3010 window-local option.
3011 For the use of {buf}, see |bufname()| above.
3012 When the buffer or variable doesn't exist {def} or an empty
3013 string is returned, there is no error message.
3014 Examples: >
3015 :let bufmodified = getbufvar(1, "&mod")
Bram Moolenaarc51cf032022-02-26 12:25:45 +00003016 :echo "todo myvar = " .. getbufvar("todo", "myvar")
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003017
3018< Can also be used as a |method|: >
3019 GetBufnr()->getbufvar(varname)
3020<
3021getchangelist([{buf}]) *getchangelist()*
3022 Returns the |changelist| for the buffer {buf}. For the use
3023 of {buf}, see |bufname()| above. If buffer {buf} doesn't
3024 exist, an empty list is returned.
3025
3026 The returned list contains two entries: a list with the change
3027 locations and the current position in the list. Each
3028 entry in the change list is a dictionary with the following
3029 entries:
3030 col column number
3031 coladd column offset for 'virtualedit'
3032 lnum line number
3033 If buffer {buf} is the current buffer, then the current
3034 position refers to the position in the list. For other
3035 buffers, it is set to the length of the list.
3036
3037 Can also be used as a |method|: >
3038 GetBufnr()->getchangelist()
3039
3040getchar([expr]) *getchar()*
3041 Get a single character from the user or input stream.
3042 If [expr] is omitted, wait until a character is available.
3043 If [expr] is 0, only get a character when one is available.
3044 Return zero otherwise.
3045 If [expr] is 1, only check if a character is available, it is
3046 not consumed. Return zero if no character available.
3047 If you prefer always getting a string use |getcharstr()|.
3048
3049 Without [expr] and when [expr] is 0 a whole character or
3050 special key is returned. If it is a single character, the
3051 result is a number. Use nr2char() to convert it to a String.
3052 Otherwise a String is returned with the encoded character.
3053 For a special key it's a String with a sequence of bytes
3054 starting with 0x80 (decimal: 128). This is the same value as
3055 the String "\<Key>", e.g., "\<Left>". The returned value is
3056 also a String when a modifier (shift, control, alt) was used
3057 that is not included in the character.
3058
3059 When [expr] is 0 and Esc is typed, there will be a short delay
3060 while Vim waits to see if this is the start of an escape
3061 sequence.
3062
3063 When [expr] is 1 only the first byte is returned. For a
3064 one-byte character it is the character itself as a number.
3065 Use nr2char() to convert it to a String.
3066
3067 Use getcharmod() to obtain any additional modifiers.
3068
3069 When the user clicks a mouse button, the mouse event will be
3070 returned. The position can then be found in |v:mouse_col|,
3071 |v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|.
3072 |getmousepos()| can also be used. Mouse move events will be
3073 ignored.
3074 This example positions the mouse as it would normally happen: >
3075 let c = getchar()
3076 if c == "\<LeftMouse>" && v:mouse_win > 0
Bram Moolenaarc51cf032022-02-26 12:25:45 +00003077 exe v:mouse_win .. "wincmd w"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003078 exe v:mouse_lnum
Bram Moolenaarc51cf032022-02-26 12:25:45 +00003079 exe "normal " .. v:mouse_col .. "|"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003080 endif
3081<
3082 When using bracketed paste only the first character is
3083 returned, the rest of the pasted text is dropped.
3084 |xterm-bracketed-paste|.
3085
3086 There is no prompt, you will somehow have to make clear to the
3087 user that a character has to be typed. The screen is not
3088 redrawn, e.g. when resizing the window. When using a popup
3089 window it should work better with a |popup-filter|.
3090
3091 There is no mapping for the character.
3092 Key codes are replaced, thus when the user presses the <Del>
3093 key you get the code for the <Del> key, not the raw character
3094 sequence. Examples: >
3095 getchar() == "\<Del>"
3096 getchar() == "\<S-Left>"
3097< This example redefines "f" to ignore case: >
3098 :nmap f :call FindChar()<CR>
3099 :function FindChar()
3100 : let c = nr2char(getchar())
3101 : while col('.') < col('$') - 1
3102 : normal l
3103 : if getline('.')[col('.') - 1] ==? c
3104 : break
3105 : endif
3106 : endwhile
3107 :endfunction
3108<
3109 You may also receive synthetic characters, such as
3110 |<CursorHold>|. Often you will want to ignore this and get
3111 another character: >
3112 :function GetKey()
3113 : let c = getchar()
3114 : while c == "\<CursorHold>"
3115 : let c = getchar()
3116 : endwhile
3117 : return c
3118 :endfunction
3119
3120getcharmod() *getcharmod()*
3121 The result is a Number which is the state of the modifiers for
3122 the last obtained character with getchar() or in another way.
3123 These values are added together:
3124 2 shift
3125 4 control
3126 8 alt (meta)
3127 16 meta (when it's different from ALT)
3128 32 mouse double click
3129 64 mouse triple click
3130 96 mouse quadruple click (== 32 + 64)
3131 128 command (Macintosh only)
3132 Only the modifiers that have not been included in the
3133 character itself are obtained. Thus Shift-a results in "A"
3134 without a modifier.
3135
3136 *getcharpos()*
3137getcharpos({expr})
3138 Get the position for String {expr}. Same as |getpos()| but the
3139 column number in the returned List is a character index
3140 instead of a byte index.
naohiro ono56200ee2022-01-01 14:59:44 +00003141 If |getpos()| returns a very large column number, equal to
3142 |v:maxcol|, then getcharpos() will return the character index
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003143 of the last character.
3144
3145 Example:
3146 With the cursor on '세' in line 5 with text "여보세요": >
3147 getcharpos('.') returns [0, 5, 3, 0]
3148 getpos('.') returns [0, 5, 7, 0]
3149<
3150 Can also be used as a |method|: >
3151 GetMark()->getcharpos()
3152
3153getcharsearch() *getcharsearch()*
3154 Return the current character search information as a {dict}
3155 with the following entries:
3156
3157 char character previously used for a character
3158 search (|t|, |f|, |T|, or |F|); empty string
3159 if no character search has been performed
3160 forward direction of character search; 1 for forward,
3161 0 for backward
3162 until type of character search; 1 for a |t| or |T|
3163 character search, 0 for an |f| or |F|
3164 character search
3165
3166 This can be useful to always have |;| and |,| search
3167 forward/backward regardless of the direction of the previous
3168 character search: >
3169 :nnoremap <expr> ; getcharsearch().forward ? ';' : ','
3170 :nnoremap <expr> , getcharsearch().forward ? ',' : ';'
3171< Also see |setcharsearch()|.
3172
3173
3174getcharstr([expr]) *getcharstr()*
3175 Get a single character from the user or input stream as a
3176 string.
3177 If [expr] is omitted, wait until a character is available.
3178 If [expr] is 0 or false, only get a character when one is
3179 available. Return an empty string otherwise.
3180 If [expr] is 1 or true, only check if a character is
3181 available, it is not consumed. Return an empty string
3182 if no character is available.
3183 Otherwise this works like |getchar()|, except that a number
3184 result is converted to a string.
3185
3186
3187getcmdline() *getcmdline()*
3188 Return the current command-line. Only works when the command
3189 line is being edited, thus requires use of |c_CTRL-\_e| or
3190 |c_CTRL-R_=|.
3191 Example: >
3192 :cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
3193< Also see |getcmdtype()|, |getcmdpos()| and |setcmdpos()|.
3194 Returns an empty string when entering a password or using
3195 |inputsecret()|.
3196
3197getcmdpos() *getcmdpos()*
3198 Return the position of the cursor in the command line as a
3199 byte count. The first column is 1.
3200 Only works when editing the command line, thus requires use of
3201 |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
3202 Returns 0 otherwise.
3203 Also see |getcmdtype()|, |setcmdpos()| and |getcmdline()|.
3204
3205getcmdtype() *getcmdtype()*
3206 Return the current command-line type. Possible return values
3207 are:
3208 : normal Ex command
3209 > debug mode command |debug-mode|
3210 / forward search command
3211 ? backward search command
3212 @ |input()| command
3213 - |:insert| or |:append| command
3214 = |i_CTRL-R_=|
3215 Only works when editing the command line, thus requires use of
3216 |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
3217 Returns an empty string otherwise.
3218 Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
3219
3220getcmdwintype() *getcmdwintype()*
3221 Return the current |command-line-window| type. Possible return
3222 values are the same as |getcmdtype()|. Returns an empty string
3223 when not in the command-line window.
3224
3225getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
3226 Return a list of command-line completion matches. The String
3227 {type} argument specifies what for. The following completion
3228 types are supported:
3229
3230 arglist file names in argument list
3231 augroup autocmd groups
3232 buffer buffer names
Bram Moolenaar6e2e2cc2022-03-14 19:24:46 +00003233 behave |:behave| suboptions
3234 breakpoint |:breakadd| and |:breakdel| suboptions
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003235 color color schemes
3236 command Ex command
3237 cmdline |cmdline-completion| result
3238 compiler compilers
3239 cscope |:cscope| suboptions
3240 diff_buffer |:diffget| and |:diffput| completion
3241 dir directory names
3242 environment environment variable names
3243 event autocommand events
3244 expression Vim expression
3245 file file and directory names
3246 file_in_path file and directory names in |'path'|
3247 filetype filetype names |'filetype'|
3248 function function name
3249 help help subjects
3250 highlight highlight groups
Bram Moolenaar6e2e2cc2022-03-14 19:24:46 +00003251 history |:history| suboptions
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003252 locale locale names (as output of locale -a)
3253 mapclear buffer argument
3254 mapping mapping name
3255 menu menus
3256 messages |:messages| suboptions
3257 option options
3258 packadd optional package |pack-add| names
Yegappan Lakshmanan454ce672022-03-24 11:22:13 +00003259 scriptnames sourced script names |:scriptnames|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003260 shellcmd Shell command
3261 sign |:sign| suboptions
3262 syntax syntax file names |'syntax'|
3263 syntime |:syntime| suboptions
3264 tag tags
3265 tag_listfiles tags, file names
3266 user user names
3267 var user variables
3268
3269 If {pat} is an empty string, then all the matches are
3270 returned. Otherwise only items matching {pat} are returned.
3271 See |wildcards| for the use of special characters in {pat}.
3272
3273 If the optional {filtered} flag is set to 1, then 'wildignore'
3274 is applied to filter the results. Otherwise all the matches
3275 are returned. The 'wildignorecase' option always applies.
3276
Yegappan Lakshmanane7dd0fa2022-03-22 16:06:31 +00003277 If the 'wildoptions' option contains 'fuzzy', then fuzzy
3278 matching is used to get the completion matches. Otherwise
Yegappan Lakshmanan454ce672022-03-24 11:22:13 +00003279 regular expression matching is used. Thus this function
3280 follows the user preference, what happens on the command line.
3281 If you do not want this you can make 'wildoptions' empty
3282 before calling getcompletion() and restore it afterwards.
Yegappan Lakshmanane7dd0fa2022-03-22 16:06:31 +00003283
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003284 If {type} is "cmdline", then the |cmdline-completion| result is
3285 returned. For example, to complete the possible values after
3286 a ":call" command: >
3287 echo getcompletion('call ', 'cmdline')
3288<
3289 If there are no matches, an empty list is returned. An
3290 invalid value for {type} produces an error.
3291
3292 Can also be used as a |method|: >
3293 GetPattern()->getcompletion('color')
3294<
3295 *getcurpos()*
3296getcurpos([{winid}])
3297 Get the position of the cursor. This is like getpos('.'), but
3298 includes an extra "curswant" item in the list:
3299 [0, lnum, col, off, curswant] ~
3300 The "curswant" number is the preferred column when moving the
naohiro ono56200ee2022-01-01 14:59:44 +00003301 cursor vertically. After |$| command it will be a very large
3302 number equal to |v:maxcol|. Also see |getcursorcharpos()| and
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003303 |getpos()|.
3304 The first "bufnum" item is always zero. The byte position of
3305 the cursor is returned in 'col'. To get the character
3306 position, use |getcursorcharpos()|.
3307
3308 The optional {winid} argument can specify the window. It can
3309 be the window number or the |window-ID|. The last known
3310 cursor position is returned, this may be invalid for the
3311 current value of the buffer if it is not the current window.
3312 If {winid} is invalid a list with zeroes is returned.
3313
3314 This can be used to save and restore the cursor position: >
3315 let save_cursor = getcurpos()
3316 MoveTheCursorAround
3317 call setpos('.', save_cursor)
3318< Note that this only works within the window. See
3319 |winrestview()| for restoring more state.
3320
3321 Can also be used as a |method|: >
3322 GetWinid()->getcurpos()
3323<
3324 *getcursorcharpos()*
3325getcursorcharpos([{winid}])
3326 Same as |getcurpos()| but the column number in the returned
3327 List is a character index instead of a byte index.
3328
3329 Example:
3330 With the cursor on '보' in line 3 with text "여보세요": >
3331 getcursorcharpos() returns [0, 3, 2, 0, 3]
3332 getcurpos() returns [0, 3, 4, 0, 3]
3333<
3334 Can also be used as a |method|: >
3335 GetWinid()->getcursorcharpos()
3336
3337< *getcwd()*
3338getcwd([{winnr} [, {tabnr}]])
3339 The result is a String, which is the name of the current
3340 working directory. 'autochdir' is ignored.
3341
3342 With {winnr} return the local current directory of this window
3343 in the current tab page. {winnr} can be the window number or
3344 the |window-ID|.
3345 If {winnr} is -1 return the name of the global working
3346 directory. See also |haslocaldir()|.
3347
3348 With {winnr} and {tabnr} return the local current directory of
3349 the window in the specified tab page. If {winnr} is -1 return
3350 the working directory of the tabpage.
3351 If {winnr} is zero use the current window, if {tabnr} is zero
3352 use the current tabpage.
3353 Without any arguments, return the actual working directory of
3354 the current window.
3355 Return an empty string if the arguments are invalid.
3356
3357 Examples: >
3358 " Get the working directory of the current window
3359 :echo getcwd()
3360 :echo getcwd(0)
3361 :echo getcwd(0, 0)
3362 " Get the working directory of window 3 in tabpage 2
3363 :echo getcwd(3, 2)
3364 " Get the global working directory
3365 :echo getcwd(-1)
3366 " Get the working directory of tabpage 3
3367 :echo getcwd(-1, 3)
3368 " Get the working directory of current tabpage
3369 :echo getcwd(-1, 0)
3370
3371< Can also be used as a |method|: >
3372 GetWinnr()->getcwd()
3373
3374getenv({name}) *getenv()*
3375 Return the value of environment variable {name}. The {name}
3376 argument is a string, without a leading '$'. Example: >
3377 myHome = getenv('HOME')
3378
3379< When the variable does not exist |v:null| is returned. That
3380 is different from a variable set to an empty string, although
3381 some systems interpret the empty value as the variable being
3382 deleted. See also |expr-env|.
3383
3384 Can also be used as a |method|: >
3385 GetVarname()->getenv()
3386
3387getfontname([{name}]) *getfontname()*
3388 Without an argument returns the name of the normal font being
3389 used. Like what is used for the Normal highlight group
3390 |hl-Normal|.
3391 With an argument a check is done whether String {name} is a
3392 valid font name. If not then an empty string is returned.
3393 Otherwise the actual font name is returned, or {name} if the
3394 GUI does not support obtaining the real name.
3395 Only works when the GUI is running, thus not in your vimrc or
3396 gvimrc file. Use the |GUIEnter| autocommand to use this
3397 function just after the GUI has started.
3398 Note that the GTK GUI accepts any font name, thus checking for
3399 a valid name does not work.
3400
3401getfperm({fname}) *getfperm()*
3402 The result is a String, which is the read, write, and execute
3403 permissions of the given file {fname}.
3404 If {fname} does not exist or its directory cannot be read, an
3405 empty string is returned.
3406 The result is of the form "rwxrwxrwx", where each group of
3407 "rwx" flags represent, in turn, the permissions of the owner
3408 of the file, the group the file belongs to, and other users.
3409 If a user does not have a given permission the flag for this
3410 is replaced with the string "-". Examples: >
3411 :echo getfperm("/etc/passwd")
3412 :echo getfperm(expand("~/.vimrc"))
3413< This will hopefully (from a security point of view) display
3414 the string "rw-r--r--" or even "rw-------".
3415
3416 Can also be used as a |method|: >
3417 GetFilename()->getfperm()
3418<
3419 For setting permissions use |setfperm()|.
3420
3421getfsize({fname}) *getfsize()*
3422 The result is a Number, which is the size in bytes of the
3423 given file {fname}.
3424 If {fname} is a directory, 0 is returned.
3425 If the file {fname} can't be found, -1 is returned.
3426 If the size of {fname} is too big to fit in a Number then -2
3427 is returned.
3428
3429 Can also be used as a |method|: >
3430 GetFilename()->getfsize()
3431
3432getftime({fname}) *getftime()*
3433 The result is a Number, which is the last modification time of
3434 the given file {fname}. The value is measured as seconds
3435 since 1st Jan 1970, and may be passed to strftime(). See also
3436 |localtime()| and |strftime()|.
3437 If the file {fname} can't be found -1 is returned.
3438
3439 Can also be used as a |method|: >
3440 GetFilename()->getftime()
3441
3442getftype({fname}) *getftype()*
3443 The result is a String, which is a description of the kind of
3444 file of the given file {fname}.
3445 If {fname} does not exist an empty string is returned.
3446 Here is a table over different kinds of files and their
3447 results:
3448 Normal file "file"
3449 Directory "dir"
3450 Symbolic link "link"
3451 Block device "bdev"
3452 Character device "cdev"
3453 Socket "socket"
3454 FIFO "fifo"
3455 All other "other"
3456 Example: >
3457 getftype("/home")
3458< Note that a type such as "link" will only be returned on
3459 systems that support it. On some systems only "dir" and
3460 "file" are returned. On MS-Windows a symbolic link to a
3461 directory returns "dir" instead of "link".
3462
3463 Can also be used as a |method|: >
3464 GetFilename()->getftype()
3465
3466getimstatus() *getimstatus()*
3467 The result is a Number, which is |TRUE| when the IME status is
3468 active.
3469 See 'imstatusfunc'.
3470
3471getjumplist([{winnr} [, {tabnr}]]) *getjumplist()*
3472 Returns the |jumplist| for the specified window.
3473
3474 Without arguments use the current window.
3475 With {winnr} only use this window in the current tab page.
3476 {winnr} can also be a |window-ID|.
3477 With {winnr} and {tabnr} use the window in the specified tab
3478 page.
3479
3480 The returned list contains two entries: a list with the jump
3481 locations and the last used jump position number in the list.
3482 Each entry in the jump location list is a dictionary with
3483 the following entries:
3484 bufnr buffer number
3485 col column number
3486 coladd column offset for 'virtualedit'
3487 filename filename if available
3488 lnum line number
3489
3490 Can also be used as a |method|: >
3491 GetWinnr()->getjumplist()
3492
3493< *getline()*
3494getline({lnum} [, {end}])
3495 Without {end} the result is a String, which is line {lnum}
3496 from the current buffer. Example: >
3497 getline(1)
3498< When {lnum} is a String that doesn't start with a
3499 digit, |line()| is called to translate the String into a Number.
3500 To get the line under the cursor: >
3501 getline(".")
3502< When {lnum} is a number smaller than 1 or bigger than the
3503 number of lines in the buffer, an empty string is returned.
3504
3505 When {end} is given the result is a |List| where each item is
3506 a line from the current buffer in the range {lnum} to {end},
3507 including line {end}.
3508 {end} is used in the same way as {lnum}.
3509 Non-existing lines are silently omitted.
3510 When {end} is before {lnum} an empty |List| is returned.
3511 Example: >
3512 :let start = line('.')
3513 :let end = search("^$") - 1
3514 :let lines = getline(start, end)
3515
3516< Can also be used as a |method|: >
3517 ComputeLnum()->getline()
3518
3519< To get lines from another buffer see |getbufline()|
3520
3521getloclist({nr} [, {what}]) *getloclist()*
3522 Returns a |List| with all the entries in the location list for
3523 window {nr}. {nr} can be the window number or the |window-ID|.
3524 When {nr} is zero the current window is used.
3525
3526 For a location list window, the displayed location list is
3527 returned. For an invalid window number {nr}, an empty list is
3528 returned. Otherwise, same as |getqflist()|.
3529
3530 If the optional {what} dictionary argument is supplied, then
3531 returns the items listed in {what} as a dictionary. Refer to
3532 |getqflist()| for the supported items in {what}.
3533
3534 In addition to the items supported by |getqflist()| in {what},
3535 the following item is supported by |getloclist()|:
3536
3537 filewinid id of the window used to display files
3538 from the location list. This field is
3539 applicable only when called from a
3540 location list window. See
3541 |location-list-file-window| for more
3542 details.
3543
3544 Returns a |Dictionary| with default values if there is no
3545 location list for the window {nr}.
3546 Returns an empty Dictionary if window {nr} does not exist.
3547
3548 Examples (See also |getqflist-examples|): >
3549 :echo getloclist(3, {'all': 0})
3550 :echo getloclist(5, {'filewinid': 0})
3551
3552
3553getmarklist([{buf}]) *getmarklist()*
3554 Without the {buf} argument returns a |List| with information
3555 about all the global marks. |mark|
3556
3557 If the optional {buf} argument is specified, returns the
3558 local marks defined in buffer {buf}. For the use of {buf},
3559 see |bufname()|.
3560
3561 Each item in the returned List is a |Dict| with the following:
3562 mark name of the mark prefixed by "'"
3563 pos a |List| with the position of the mark:
3564 [bufnum, lnum, col, off]
3565 Refer to |getpos()| for more information.
3566 file file name
3567
3568 Refer to |getpos()| for getting information about a specific
3569 mark.
3570
3571 Can also be used as a |method|: >
3572 GetBufnr()->getmarklist()
3573
3574getmatches([{win}]) *getmatches()*
3575 Returns a |List| with all matches previously defined for the
3576 current window by |matchadd()| and the |:match| commands.
3577 |getmatches()| is useful in combination with |setmatches()|,
3578 as |setmatches()| can restore a list of matches saved by
3579 |getmatches()|.
3580 If {win} is specified, use the window with this number or
3581 window ID instead of the current window.
3582 Example: >
3583 :echo getmatches()
3584< [{'group': 'MyGroup1', 'pattern': 'TODO',
3585 'priority': 10, 'id': 1}, {'group': 'MyGroup2',
3586 'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
3587 :let m = getmatches()
3588 :call clearmatches()
3589 :echo getmatches()
3590< [] >
3591 :call setmatches(m)
3592 :echo getmatches()
3593< [{'group': 'MyGroup1', 'pattern': 'TODO',
3594 'priority': 10, 'id': 1}, {'group': 'MyGroup2',
3595 'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
3596 :unlet m
3597<
3598getmousepos() *getmousepos()*
3599 Returns a |Dictionary| with the last known position of the
3600 mouse. This can be used in a mapping for a mouse click or in
3601 a filter of a popup window. The items are:
3602 screenrow screen row
3603 screencol screen column
3604 winid Window ID of the click
3605 winrow row inside "winid"
3606 wincol column inside "winid"
3607 line text line inside "winid"
3608 column text column inside "winid"
3609 All numbers are 1-based.
3610
3611 If not over a window, e.g. when in the command line, then only
3612 "screenrow" and "screencol" are valid, the others are zero.
3613
3614 When on the status line below a window or the vertical
3615 separator right of a window, the "line" and "column" values
3616 are zero.
3617
3618 When the position is after the text then "column" is the
3619 length of the text in bytes plus one.
3620
3621 If the mouse is over a popup window then that window is used.
3622
3623 When using |getchar()| the Vim variables |v:mouse_lnum|,
3624 |v:mouse_col| and |v:mouse_winid| also provide these values.
3625
3626 *getpid()*
3627getpid() Return a Number which is the process ID of the Vim process.
3628 On Unix and MS-Windows this is a unique number, until Vim
3629 exits.
3630
3631 *getpos()*
3632getpos({expr}) Get the position for String {expr}. For possible values of
3633 {expr} see |line()|. For getting the cursor position see
3634 |getcurpos()|.
3635 The result is a |List| with four numbers:
3636 [bufnum, lnum, col, off]
3637 "bufnum" is zero, unless a mark like '0 or 'A is used, then it
3638 is the buffer number of the mark.
3639 "lnum" and "col" are the position in the buffer. The first
3640 column is 1.
3641 The "off" number is zero, unless 'virtualedit' is used. Then
3642 it is the offset in screen columns from the start of the
3643 character. E.g., a position within a <Tab> or after the last
3644 character.
3645 Note that for '< and '> Visual mode matters: when it is "V"
3646 (visual line mode) the column of '< is zero and the column of
naohiro ono56200ee2022-01-01 14:59:44 +00003647 '> is a large number equal to |v:maxcol|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003648 The column number in the returned List is the byte position
3649 within the line. To get the character position in the line,
3650 use |getcharpos()|.
naohiro ono56200ee2022-01-01 14:59:44 +00003651 A very large column number equal to |v:maxcol| can be returned,
3652 in which case it means "after the end of the line".
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003653 This can be used to save and restore the position of a mark: >
3654 let save_a_mark = getpos("'a")
3655 ...
3656 call setpos("'a", save_a_mark)
3657< Also see |getcharpos()|, |getcurpos()| and |setpos()|.
3658
3659 Can also be used as a |method|: >
3660 GetMark()->getpos()
3661
3662getqflist([{what}]) *getqflist()*
3663 Returns a |List| with all the current quickfix errors. Each
3664 list item is a dictionary with these entries:
3665 bufnr number of buffer that has the file name, use
3666 bufname() to get the name
3667 module module name
3668 lnum line number in the buffer (first line is 1)
3669 end_lnum
3670 end of line number if the item is multiline
3671 col column number (first column is 1)
3672 end_col end of column number if the item has range
3673 vcol |TRUE|: "col" is visual column
3674 |FALSE|: "col" is byte index
3675 nr error number
3676 pattern search pattern used to locate the error
3677 text description of the error
3678 type type of the error, 'E', '1', etc.
3679 valid |TRUE|: recognized error message
3680
3681 When there is no error list or it's empty, an empty list is
3682 returned. Quickfix list entries with a non-existing buffer
3683 number are returned with "bufnr" set to zero (Note: some
3684 functions accept buffer number zero for the alternate buffer,
3685 you may need to explicitly check for zero).
3686
3687 Useful application: Find pattern matches in multiple files and
3688 do something with them: >
3689 :vimgrep /theword/jg *.c
3690 :for d in getqflist()
3691 : echo bufname(d.bufnr) ':' d.lnum '=' d.text
3692 :endfor
3693<
3694 If the optional {what} dictionary argument is supplied, then
3695 returns only the items listed in {what} as a dictionary. The
3696 following string items are supported in {what}:
3697 changedtick get the total number of changes made
3698 to the list |quickfix-changedtick|
3699 context get the |quickfix-context|
3700 efm errorformat to use when parsing "lines". If
3701 not present, then the 'errorformat' option
3702 value is used.
3703 id get information for the quickfix list with
3704 |quickfix-ID|; zero means the id for the
3705 current list or the list specified by "nr"
3706 idx get information for the quickfix entry at this
3707 index in the list specified by 'id' or 'nr'.
3708 If set to zero, then uses the current entry.
3709 See |quickfix-index|
3710 items quickfix list entries
3711 lines parse a list of lines using 'efm' and return
3712 the resulting entries. Only a |List| type is
3713 accepted. The current quickfix list is not
3714 modified. See |quickfix-parse|.
3715 nr get information for this quickfix list; zero
3716 means the current quickfix list and "$" means
3717 the last quickfix list
3718 qfbufnr number of the buffer displayed in the quickfix
3719 window. Returns 0 if the quickfix buffer is
3720 not present. See |quickfix-buffer|.
3721 size number of entries in the quickfix list
3722 title get the list title |quickfix-title|
3723 winid get the quickfix |window-ID|
3724 all all of the above quickfix properties
3725 Non-string items in {what} are ignored. To get the value of a
3726 particular item, set it to zero.
3727 If "nr" is not present then the current quickfix list is used.
3728 If both "nr" and a non-zero "id" are specified, then the list
3729 specified by "id" is used.
3730 To get the number of lists in the quickfix stack, set "nr" to
3731 "$" in {what}. The "nr" value in the returned dictionary
3732 contains the quickfix stack size.
3733 When "lines" is specified, all the other items except "efm"
3734 are ignored. The returned dictionary contains the entry
3735 "items" with the list of entries.
3736
3737 The returned dictionary contains the following entries:
3738 changedtick total number of changes made to the
3739 list |quickfix-changedtick|
3740 context quickfix list context. See |quickfix-context|
3741 If not present, set to "".
3742 id quickfix list ID |quickfix-ID|. If not
3743 present, set to 0.
3744 idx index of the quickfix entry in the list. If not
3745 present, set to 0.
3746 items quickfix list entries. If not present, set to
3747 an empty list.
3748 nr quickfix list number. If not present, set to 0
3749 qfbufnr number of the buffer displayed in the quickfix
3750 window. If not present, set to 0.
3751 size number of entries in the quickfix list. If not
3752 present, set to 0.
3753 title quickfix list title text. If not present, set
3754 to "".
3755 winid quickfix |window-ID|. If not present, set to 0
3756
3757 Examples (See also |getqflist-examples|): >
3758 :echo getqflist({'all': 1})
3759 :echo getqflist({'nr': 2, 'title': 1})
3760 :echo getqflist({'lines' : ["F1:10:L10"]})
3761<
3762getreg([{regname} [, 1 [, {list}]]]) *getreg()*
3763 The result is a String, which is the contents of register
3764 {regname}. Example: >
3765 :let cliptext = getreg('*')
3766< When register {regname} was not set the result is an empty
3767 string.
Bram Moolenaara2baa732022-02-04 16:09:54 +00003768 The {regname} argument must be a string. *E1162*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003769
3770 getreg('=') returns the last evaluated value of the expression
3771 register. (For use in maps.)
3772 getreg('=', 1) returns the expression itself, so that it can
3773 be restored with |setreg()|. For other registers the extra
3774 argument is ignored, thus you can always give it.
3775
3776 If {list} is present and |TRUE|, the result type is changed
3777 to |List|. Each list item is one text line. Use it if you care
3778 about zero bytes possibly present inside register: without
3779 third argument both NLs and zero bytes are represented as NLs
3780 (see |NL-used-for-Nul|).
3781 When the register was not set an empty list is returned.
3782
3783 If {regname} is "", the unnamed register '"' is used.
3784 If {regname} is not specified, |v:register| is used.
3785 In |Vim9-script| {regname} must be one character.
3786
3787 Can also be used as a |method|: >
3788 GetRegname()->getreg()
3789
3790getreginfo([{regname}]) *getreginfo()*
3791 Returns detailed information about register {regname} as a
3792 Dictionary with the following entries:
3793 regcontents List of lines contained in register
3794 {regname}, like
3795 |getreg|({regname}, 1, 1).
3796 regtype the type of register {regname}, as in
3797 |getregtype()|.
3798 isunnamed Boolean flag, v:true if this register
3799 is currently pointed to by the unnamed
3800 register.
3801 points_to for the unnamed register, gives the
3802 single letter name of the register
3803 currently pointed to (see |quotequote|).
3804 For example, after deleting a line
3805 with `dd`, this field will be "1",
3806 which is the register that got the
3807 deleted text.
3808
3809 The {regname} argument is a string. If {regname} is invalid
3810 or not set, an empty Dictionary will be returned.
3811 If {regname} is "" or "@", the unnamed register '"' is used.
3812 If {regname} is not specified, |v:register| is used.
3813 The returned Dictionary can be passed to |setreg()|.
3814 In |Vim9-script| {regname} must be one character.
3815
3816 Can also be used as a |method|: >
3817 GetRegname()->getreginfo()
3818
3819getregtype([{regname}]) *getregtype()*
3820 The result is a String, which is type of register {regname}.
3821 The value will be one of:
3822 "v" for |characterwise| text
3823 "V" for |linewise| text
3824 "<CTRL-V>{width}" for |blockwise-visual| text
3825 "" for an empty or unknown register
3826 <CTRL-V> is one character with value 0x16.
3827 The {regname} argument is a string. If {regname} is "", the
3828 unnamed register '"' is used. If {regname} is not specified,
3829 |v:register| is used.
3830 In |Vim9-script| {regname} must be one character.
3831
3832 Can also be used as a |method|: >
3833 GetRegname()->getregtype()
3834
3835gettabinfo([{tabnr}]) *gettabinfo()*
3836 If {tabnr} is not specified, then information about all the
3837 tab pages is returned as a |List|. Each List item is a
3838 |Dictionary|. Otherwise, {tabnr} specifies the tab page
3839 number and information about that one is returned. If the tab
3840 page does not exist an empty List is returned.
3841
3842 Each List item is a |Dictionary| with the following entries:
3843 tabnr tab page number.
3844 variables a reference to the dictionary with
3845 tabpage-local variables
3846 windows List of |window-ID|s in the tab page.
3847
3848 Can also be used as a |method|: >
3849 GetTabnr()->gettabinfo()
3850
3851gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()*
3852 Get the value of a tab-local variable {varname} in tab page
3853 {tabnr}. |t:var|
3854 Tabs are numbered starting with one.
3855 The {varname} argument is a string. When {varname} is empty a
3856 dictionary with all tab-local variables is returned.
3857 Note that the name without "t:" must be used.
3858 When the tab or variable doesn't exist {def} or an empty
3859 string is returned, there is no error message.
3860
3861 Can also be used as a |method|: >
3862 GetTabnr()->gettabvar(varname)
3863
3864gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()*
3865 Get the value of window-local variable {varname} in window
3866 {winnr} in tab page {tabnr}.
3867 The {varname} argument is a string. When {varname} is empty a
3868 dictionary with all window-local variables is returned.
3869 When {varname} is equal to "&" get the values of all
3870 window-local options in a |Dictionary|.
3871 Otherwise, when {varname} starts with "&" get the value of a
3872 window-local option.
3873 Note that {varname} must be the name without "w:".
3874 Tabs are numbered starting with one. For the current tabpage
3875 use |getwinvar()|.
3876 {winnr} can be the window number or the |window-ID|.
3877 When {winnr} is zero the current window is used.
3878 This also works for a global option, buffer-local option and
3879 window-local option, but it doesn't work for a global variable
3880 or buffer-local variable.
3881 When the tab, window or variable doesn't exist {def} or an
3882 empty string is returned, there is no error message.
3883 Examples: >
3884 :let list_is_on = gettabwinvar(1, 2, '&list')
Bram Moolenaarc51cf032022-02-26 12:25:45 +00003885 :echo "myvar = " .. gettabwinvar(3, 1, 'myvar')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003886<
3887 To obtain all window-local variables use: >
3888 gettabwinvar({tabnr}, {winnr}, '&')
3889
3890< Can also be used as a |method|: >
3891 GetTabnr()->gettabwinvar(winnr, varname)
3892
3893gettagstack([{winnr}]) *gettagstack()*
3894 The result is a Dict, which is the tag stack of window {winnr}.
3895 {winnr} can be the window number or the |window-ID|.
3896 When {winnr} is not specified, the current window is used.
3897 When window {winnr} doesn't exist, an empty Dict is returned.
3898
3899 The returned dictionary contains the following entries:
3900 curidx Current index in the stack. When at
3901 top of the stack, set to (length + 1).
3902 Index of bottom of the stack is 1.
3903 items List of items in the stack. Each item
3904 is a dictionary containing the
3905 entries described below.
3906 length Number of entries in the stack.
3907
3908 Each item in the stack is a dictionary with the following
3909 entries:
3910 bufnr buffer number of the current jump
3911 from cursor position before the tag jump.
3912 See |getpos()| for the format of the
3913 returned list.
3914 matchnr current matching tag number. Used when
3915 multiple matching tags are found for a
3916 name.
3917 tagname name of the tag
3918
3919 See |tagstack| for more information about the tag stack.
3920
3921 Can also be used as a |method|: >
3922 GetWinnr()->gettagstack()
3923
3924
3925gettext({text}) *gettext()*
3926 Translate String {text} if possible.
3927 This is mainly for use in the distributed Vim scripts. When
3928 generating message translations the {text} is extracted by
3929 xgettext, the translator can add the translated message in the
3930 .po file and Vim will lookup the translation when gettext() is
3931 called.
3932 For {text} double quoted strings are preferred, because
3933 xgettext does not understand escaping in single quoted
3934 strings.
3935
3936
3937getwininfo([{winid}]) *getwininfo()*
3938 Returns information about windows as a |List| with Dictionaries.
3939
3940 If {winid} is given Information about the window with that ID
3941 is returned, as a |List| with one item. If the window does not
3942 exist the result is an empty list.
3943
3944 Without {winid} information about all the windows in all the
3945 tab pages is returned.
3946
3947 Each List item is a |Dictionary| with the following entries:
3948 botline last complete displayed buffer line
3949 bufnr number of buffer in the window
3950 height window height (excluding winbar)
3951 loclist 1 if showing a location list
3952 {only with the +quickfix feature}
3953 quickfix 1 if quickfix or location list window
3954 {only with the +quickfix feature}
3955 terminal 1 if a terminal window
3956 {only with the +terminal feature}
3957 tabnr tab page number
3958 topline first displayed buffer line
3959 variables a reference to the dictionary with
3960 window-local variables
3961 width window width
3962 winbar 1 if the window has a toolbar, 0
3963 otherwise
3964 wincol leftmost screen column of the window;
3965 "col" from |win_screenpos()|
3966 textoff number of columns occupied by any
3967 'foldcolumn', 'signcolumn' and line
3968 number in front of the text
3969 winid |window-ID|
3970 winnr window number
3971 winrow topmost screen line of the window;
3972 "row" from |win_screenpos()|
3973
3974 Can also be used as a |method|: >
3975 GetWinnr()->getwininfo()
3976
3977getwinpos([{timeout}]) *getwinpos()*
3978 The result is a |List| with two numbers, the result of
3979 |getwinposx()| and |getwinposy()| combined:
3980 [x-pos, y-pos]
3981 {timeout} can be used to specify how long to wait in msec for
3982 a response from the terminal. When omitted 100 msec is used.
3983 Use a longer time for a remote terminal.
3984 When using a value less than 10 and no response is received
3985 within that time, a previously reported position is returned,
3986 if available. This can be used to poll for the position and
3987 do some work in the meantime: >
3988 while 1
3989 let res = getwinpos(1)
3990 if res[0] >= 0
3991 break
3992 endif
3993 " Do some work here
3994 endwhile
3995<
3996
3997 Can also be used as a |method|: >
3998 GetTimeout()->getwinpos()
3999<
4000 *getwinposx()*
4001getwinposx() The result is a Number, which is the X coordinate in pixels of
4002 the left hand side of the GUI Vim window. Also works for an
4003 xterm (uses a timeout of 100 msec).
4004 The result will be -1 if the information is not available.
4005 The value can be used with `:winpos`.
4006
4007 *getwinposy()*
4008getwinposy() The result is a Number, which is the Y coordinate in pixels of
4009 the top of the GUI Vim window. Also works for an xterm (uses
4010 a timeout of 100 msec).
4011 The result will be -1 if the information is not available.
4012 The value can be used with `:winpos`.
4013
4014getwinvar({winnr}, {varname} [, {def}]) *getwinvar()*
4015 Like |gettabwinvar()| for the current tabpage.
4016 Examples: >
4017 :let list_is_on = getwinvar(2, '&list')
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004018 :echo "myvar = " .. getwinvar(1, 'myvar')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004019
4020< Can also be used as a |method|: >
4021 GetWinnr()->getwinvar(varname)
4022<
4023glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()*
4024 Expand the file wildcards in {expr}. See |wildcards| for the
4025 use of special characters.
4026
4027 Unless the optional {nosuf} argument is given and is |TRUE|,
4028 the 'suffixes' and 'wildignore' options apply: Names matching
4029 one of the patterns in 'wildignore' will be skipped and
4030 'suffixes' affect the ordering of matches.
4031 'wildignorecase' always applies.
4032
4033 When {list} is present and it is |TRUE| the result is a |List|
4034 with all matching files. The advantage of using a List is,
4035 you also get filenames containing newlines correctly.
4036 Otherwise the result is a String and when there are several
4037 matches, they are separated by <NL> characters.
4038
4039 If the expansion fails, the result is an empty String or List.
4040
4041 You can also use |readdir()| if you need to do complicated
4042 things, such as limiting the number of matches.
4043
4044 A name for a non-existing file is not included. A symbolic
4045 link is only included if it points to an existing file.
4046 However, when the {alllinks} argument is present and it is
4047 |TRUE| then all symbolic links are included.
4048
4049 For most systems backticks can be used to get files names from
4050 any external command. Example: >
4051 :let tagfiles = glob("`find . -name tags -print`")
4052 :let &tags = substitute(tagfiles, "\n", ",", "g")
4053< The result of the program inside the backticks should be one
4054 item per line. Spaces inside an item are allowed.
4055
4056 See |expand()| for expanding special Vim variables. See
4057 |system()| for getting the raw output of an external command.
4058
4059 Can also be used as a |method|: >
4060 GetExpr()->glob()
4061
4062glob2regpat({string}) *glob2regpat()*
4063 Convert a file pattern, as used by glob(), into a search
4064 pattern. The result can be used to match with a string that
4065 is a file name. E.g. >
4066 if filename =~ glob2regpat('Make*.mak')
4067< This is equivalent to: >
4068 if filename =~ '^Make.*\.mak$'
4069< When {string} is an empty string the result is "^$", match an
4070 empty string.
4071 Note that the result depends on the system. On MS-Windows
4072 a backslash usually means a path separator.
4073
4074 Can also be used as a |method|: >
4075 GetExpr()->glob2regpat()
4076< *globpath()*
4077globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
4078 Perform glob() for String {expr} on all directories in {path}
4079 and concatenate the results. Example: >
4080 :echo globpath(&rtp, "syntax/c.vim")
4081<
4082 {path} is a comma-separated list of directory names. Each
4083 directory name is prepended to {expr} and expanded like with
4084 |glob()|. A path separator is inserted when needed.
4085 To add a comma inside a directory name escape it with a
4086 backslash. Note that on MS-Windows a directory may have a
4087 trailing backslash, remove it if you put a comma after it.
4088 If the expansion fails for one of the directories, there is no
4089 error message.
4090
4091 Unless the optional {nosuf} argument is given and is |TRUE|,
4092 the 'suffixes' and 'wildignore' options apply: Names matching
4093 one of the patterns in 'wildignore' will be skipped and
4094 'suffixes' affect the ordering of matches.
4095
4096 When {list} is present and it is |TRUE| the result is a |List|
4097 with all matching files. The advantage of using a List is, you
4098 also get filenames containing newlines correctly. Otherwise
4099 the result is a String and when there are several matches,
4100 they are separated by <NL> characters. Example: >
4101 :echo globpath(&rtp, "syntax/c.vim", 0, 1)
4102<
4103 {alllinks} is used as with |glob()|.
4104
4105 The "**" item can be used to search in a directory tree.
4106 For example, to find all "README.txt" files in the directories
4107 in 'runtimepath' and below: >
4108 :echo globpath(&rtp, "**/README.txt")
4109< Upwards search and limiting the depth of "**" is not
4110 supported, thus using 'path' will not always work properly.
4111
4112 Can also be used as a |method|, the base is passed as the
4113 second argument: >
4114 GetExpr()->globpath(&rtp)
4115<
4116 *has()*
4117has({feature} [, {check}])
4118 When {check} is omitted or is zero: The result is a Number,
4119 which is 1 if the feature {feature} is supported, zero
4120 otherwise. The {feature} argument is a string, case is
4121 ignored. See |feature-list| below.
4122
4123 When {check} is present and not zero: The result is a Number,
4124 which is 1 if the feature {feature} could ever be supported,
4125 zero otherwise. This is useful to check for a typo in
4126 {feature} and to detect dead code. Keep in mind that an older
4127 Vim version will not know about a feature added later and
4128 features that have been abandoned will not be known by the
4129 current Vim version.
4130
4131 Also see |exists()| and |exists_compiled()|.
4132
4133 Note that to skip code that has a syntax error when the
4134 feature is not available, Vim may skip the rest of the line
4135 and miss a following `endif`. Therefore put the `endif` on a
4136 separate line: >
4137 if has('feature')
4138 let x = this->breaks->without->the->feature
4139 endif
4140< If the `endif` would be moved to the second line as "| endif" it
4141 would not be found.
4142
4143
4144has_key({dict}, {key}) *has_key()*
4145 The result is a Number, which is TRUE if |Dictionary| {dict}
4146 has an entry with key {key}. FALSE otherwise. The {key}
4147 argument is a string.
4148
4149 Can also be used as a |method|: >
4150 mydict->has_key(key)
4151
4152haslocaldir([{winnr} [, {tabnr}]]) *haslocaldir()*
4153 The result is a Number:
4154 1 when the window has set a local directory via |:lcd|
4155 2 when the tab-page has set a local directory via |:tcd|
4156 0 otherwise.
4157
4158 Without arguments use the current window.
4159 With {winnr} use this window in the current tab page.
4160 With {winnr} and {tabnr} use the window in the specified tab
4161 page.
4162 {winnr} can be the window number or the |window-ID|.
4163 If {winnr} is -1 it is ignored and only the tabpage is used.
4164 Return 0 if the arguments are invalid.
4165 Examples: >
4166 if haslocaldir() == 1
4167 " window local directory case
4168 elseif haslocaldir() == 2
4169 " tab-local directory case
4170 else
4171 " global directory case
4172 endif
4173
4174 " current window
4175 :echo haslocaldir()
4176 :echo haslocaldir(0)
4177 :echo haslocaldir(0, 0)
4178 " window n in current tab page
4179 :echo haslocaldir(n)
4180 :echo haslocaldir(n, 0)
4181 " window n in tab page m
4182 :echo haslocaldir(n, m)
4183 " tab page m
4184 :echo haslocaldir(-1, m)
4185<
4186 Can also be used as a |method|: >
4187 GetWinnr()->haslocaldir()
4188
4189hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()*
4190 The result is a Number, which is TRUE if there is a mapping
4191 that contains {what} in somewhere in the rhs (what it is
4192 mapped to) and this mapping exists in one of the modes
4193 indicated by {mode}.
4194 The arguments {what} and {mode} are strings.
4195 When {abbr} is there and it is |TRUE| use abbreviations
4196 instead of mappings. Don't forget to specify Insert and/or
4197 Command-line mode.
4198 Both the global mappings and the mappings local to the current
4199 buffer are checked for a match.
4200 If no matching mapping is found FALSE is returned.
4201 The following characters are recognized in {mode}:
4202 n Normal mode
4203 v Visual and Select mode
4204 x Visual mode
4205 s Select mode
4206 o Operator-pending mode
4207 i Insert mode
4208 l Language-Argument ("r", "f", "t", etc.)
4209 c Command-line mode
4210 When {mode} is omitted, "nvo" is used.
4211
4212 This function is useful to check if a mapping already exists
4213 to a function in a Vim script. Example: >
4214 :if !hasmapto('\ABCdoit')
4215 : map <Leader>d \ABCdoit
4216 :endif
4217< This installs the mapping to "\ABCdoit" only if there isn't
4218 already a mapping to "\ABCdoit".
4219
4220 Can also be used as a |method|: >
4221 GetRHS()->hasmapto()
4222
4223histadd({history}, {item}) *histadd()*
4224 Add the String {item} to the history {history} which can be
4225 one of: *hist-names*
4226 "cmd" or ":" command line history
4227 "search" or "/" search pattern history
4228 "expr" or "=" typed expression history
4229 "input" or "@" input line history
4230 "debug" or ">" debug command history
4231 empty the current or last used history
4232 The {history} string does not need to be the whole name, one
4233 character is sufficient.
4234 If {item} does already exist in the history, it will be
4235 shifted to become the newest entry.
4236 The result is a Number: TRUE if the operation was successful,
4237 otherwise FALSE is returned.
4238
4239 Example: >
4240 :call histadd("input", strftime("%Y %b %d"))
4241 :let date=input("Enter date: ")
4242< This function is not available in the |sandbox|.
4243
4244 Can also be used as a |method|, the base is passed as the
4245 second argument: >
4246 GetHistory()->histadd('search')
4247
4248histdel({history} [, {item}]) *histdel()*
4249 Clear {history}, i.e. delete all its entries. See |hist-names|
4250 for the possible values of {history}.
4251
4252 If the parameter {item} evaluates to a String, it is used as a
4253 regular expression. All entries matching that expression will
4254 be removed from the history (if there are any).
4255 Upper/lowercase must match, unless "\c" is used |/\c|.
4256 If {item} evaluates to a Number, it will be interpreted as
4257 an index, see |:history-indexing|. The respective entry will
4258 be removed if it exists.
4259
4260 The result is TRUE for a successful operation, otherwise FALSE
4261 is returned.
4262
4263 Examples:
4264 Clear expression register history: >
4265 :call histdel("expr")
4266<
4267 Remove all entries starting with "*" from the search history: >
4268 :call histdel("/", '^\*')
4269<
4270 The following three are equivalent: >
4271 :call histdel("search", histnr("search"))
4272 :call histdel("search", -1)
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004273 :call histdel("search", '^' .. histget("search", -1) .. '$')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004274<
4275 To delete the last search pattern and use the last-but-one for
4276 the "n" command and 'hlsearch': >
4277 :call histdel("search", -1)
4278 :let @/ = histget("search", -1)
4279<
4280 Can also be used as a |method|: >
4281 GetHistory()->histdel()
4282
4283histget({history} [, {index}]) *histget()*
4284 The result is a String, the entry with Number {index} from
4285 {history}. See |hist-names| for the possible values of
4286 {history}, and |:history-indexing| for {index}. If there is
4287 no such entry, an empty String is returned. When {index} is
4288 omitted, the most recent item from the history is used.
4289
4290 Examples:
4291 Redo the second last search from history. >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004292 :execute '/' .. histget("search", -2)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004293
4294< Define an Ex command ":H {num}" that supports re-execution of
4295 the {num}th entry from the output of |:history|. >
4296 :command -nargs=1 H execute histget("cmd", 0+<args>)
4297<
4298 Can also be used as a |method|: >
4299 GetHistory()->histget()
4300
4301histnr({history}) *histnr()*
4302 The result is the Number of the current entry in {history}.
4303 See |hist-names| for the possible values of {history}.
4304 If an error occurred, -1 is returned.
4305
4306 Example: >
4307 :let inp_index = histnr("expr")
4308
4309< Can also be used as a |method|: >
4310 GetHistory()->histnr()
4311<
4312hlexists({name}) *hlexists()*
4313 The result is a Number, which is TRUE if a highlight group
4314 called {name} exists. This is when the group has been
4315 defined in some way. Not necessarily when highlighting has
4316 been defined for it, it may also have been used for a syntax
4317 item.
4318 *highlight_exists()*
4319 Obsolete name: highlight_exists().
4320
4321 Can also be used as a |method|: >
4322 GetName()->hlexists()
4323<
4324hlget([{name} [, {resolve}]]) *hlget()*
4325 Returns a List of all the highlight group attributes. If the
4326 optional {name} is specified, then returns a List with only
4327 the attributes of the specified highlight group. Returns an
4328 empty List if the highlight group {name} is not present.
4329
4330 If the optional {resolve} argument is set to v:true and the
4331 highlight group {name} is linked to another group, then the
4332 link is resolved recursively and the attributes of the
4333 resolved highlight group are returned.
4334
4335 Each entry in the returned List is a Dictionary with the
4336 following items:
4337 cleared boolean flag, set to v:true if the highlight
4338 group attributes are cleared or not yet
4339 specified. See |highlight-clear|.
4340 cterm cterm attributes. See |highlight-cterm|.
4341 ctermbg cterm background color.
4342 See |highlight-ctermbg|.
4343 ctermfg cterm foreground color.
4344 See |highlight-ctermfg|.
4345 ctermul cterm underline color. See |highlight-ctermul|.
4346 default boolean flag, set to v:true if the highlight
4347 group link is a default link. See
4348 |highlight-default|.
4349 font highlight group font. See |highlight-font|.
4350 gui gui attributes. See |highlight-gui|.
4351 guibg gui background color. See |highlight-guibg|.
4352 guifg gui foreground color. See |highlight-guifg|.
4353 guisp gui special color. See |highlight-guisp|.
4354 id highlight group ID.
4355 linksto linked highlight group name.
4356 See |:highlight-link|.
4357 name highlight group name. See |group-name|.
4358 start start terminal keycode. See |highlight-start|.
4359 stop stop terminal keycode. See |highlight-stop|.
4360 term term attributes. See |highlight-term|.
4361
4362 The 'term', 'cterm' and 'gui' items in the above Dictionary
4363 have a dictionary value with the following optional boolean
4364 items: 'bold', 'standout', 'underline', 'undercurl', 'italic',
4365 'reverse', 'inverse' and 'strikethrough'.
4366
4367 Example(s): >
4368 :echo hlget()
4369 :echo hlget('ModeMsg')
4370 :echo hlget('Number', v:true)
4371<
4372 Can also be used as a |method|: >
4373 GetName()->hlget()
4374<
4375hlset({list}) *hlset()*
4376 Creates or modifies the attributes of a List of highlight
4377 groups. Each item in {list} is a dictionary containing the
4378 attributes of a highlight group. See |hlget()| for the list of
4379 supported items in this dictionary.
4380
4381 In addition to the items described in |hlget()|, the following
4382 additional items are supported in the dictionary:
4383
4384 force boolean flag to force the creation of
4385 a link for an existing highlight group
4386 with attributes.
4387
4388 The highlight group is identified using the 'name' item and
4389 the 'id' item (if supplied) is ignored. If a highlight group
4390 with a specified name doesn't exist, then it is created.
4391 Otherwise the attributes of an existing highlight group are
4392 modified.
4393
4394 If an empty dictionary value is used for the 'term' or 'cterm'
4395 or 'gui' entries, then the corresponding attributes are
4396 cleared. If the 'cleared' item is set to v:true, then all the
4397 attributes of the highlight group are cleared.
4398
4399 The 'linksto' item can be used to link a highlight group to
4400 another highlight group. See |:highlight-link|.
4401
4402 Returns zero for success, -1 for failure.
4403
4404 Example(s): >
4405 " add bold attribute to the Visual highlight group
4406 :call hlset([#{name: 'Visual',
4407 \ term: #{reverse: 1 , bold: 1}}])
4408 :call hlset([#{name: 'Type', guifg: 'DarkGreen'}])
4409 :let l = hlget()
4410 :call hlset(l)
4411 " clear the Search highlight group
4412 :call hlset([#{name: 'Search', cleared: v:true}])
4413 " clear the 'term' attributes for a highlight group
4414 :call hlset([#{name: 'Title', term: {}}])
4415 " create the MyHlg group linking it to DiffAdd
4416 :call hlset([#{name: 'MyHlg', linksto: 'DiffAdd'}])
4417 " remove the MyHlg group link
4418 :call hlset([#{name: 'MyHlg', linksto: 'NONE'}])
4419 " clear the attributes and a link
4420 :call hlset([#{name: 'MyHlg', cleared: v:true,
4421 \ linksto: 'NONE'}])
4422<
4423 Can also be used as a |method|: >
4424 GetAttrList()->hlset()
4425<
4426 *hlID()*
4427hlID({name}) The result is a Number, which is the ID of the highlight group
4428 with name {name}. When the highlight group doesn't exist,
4429 zero is returned.
4430 This can be used to retrieve information about the highlight
4431 group. For example, to get the background color of the
4432 "Comment" group: >
4433 :echo synIDattr(synIDtrans(hlID("Comment")), "bg")
4434< *highlightID()*
4435 Obsolete name: highlightID().
4436
4437 Can also be used as a |method|: >
4438 GetName()->hlID()
4439
4440hostname() *hostname()*
4441 The result is a String, which is the name of the machine on
4442 which Vim is currently running. Machine names greater than
4443 256 characters long are truncated.
4444
4445iconv({string}, {from}, {to}) *iconv()*
4446 The result is a String, which is the text {string} converted
4447 from encoding {from} to encoding {to}.
4448 When the conversion completely fails an empty string is
4449 returned. When some characters could not be converted they
4450 are replaced with "?".
4451 The encoding names are whatever the iconv() library function
4452 can accept, see ":!man 3 iconv".
4453 Most conversions require Vim to be compiled with the |+iconv|
4454 feature. Otherwise only UTF-8 to latin1 conversion and back
4455 can be done.
4456 This can be used to display messages with special characters,
4457 no matter what 'encoding' is set to. Write the message in
4458 UTF-8 and use: >
4459 echo iconv(utf8_str, "utf-8", &enc)
4460< Note that Vim uses UTF-8 for all Unicode encodings, conversion
4461 from/to UCS-2 is automatically changed to use UTF-8. You
4462 cannot use UCS-2 in a string anyway, because of the NUL bytes.
4463
4464 Can also be used as a |method|: >
4465 GetText()->iconv('latin1', 'utf-8')
4466<
4467 *indent()*
4468indent({lnum}) The result is a Number, which is indent of line {lnum} in the
4469 current buffer. The indent is counted in spaces, the value
4470 of 'tabstop' is relevant. {lnum} is used just like in
4471 |getline()|.
4472 When {lnum} is invalid -1 is returned. In |Vim9| script an
4473 error is given.
4474
4475 Can also be used as a |method|: >
4476 GetLnum()->indent()
4477
4478index({object}, {expr} [, {start} [, {ic}]]) *index()*
4479 If {object} is a |List| return the lowest index where the item
4480 has a value equal to {expr}. There is no automatic
4481 conversion, so the String "4" is different from the Number 4.
4482 And the number 4 is different from the Float 4.0. The value
4483 of 'ignorecase' is not used here, case always matters.
4484
4485 If {object} is |Blob| return the lowest index where the byte
4486 value is equal to {expr}.
4487
4488 If {start} is given then start looking at the item with index
4489 {start} (may be negative for an item relative to the end).
4490 When {ic} is given and it is |TRUE|, ignore case. Otherwise
4491 case must match.
4492 -1 is returned when {expr} is not found in {object}.
4493 Example: >
4494 :let idx = index(words, "the")
4495 :if index(numbers, 123) >= 0
4496
4497< Can also be used as a |method|: >
4498 GetObject()->index(what)
4499
4500input({prompt} [, {text} [, {completion}]]) *input()*
4501 The result is a String, which is whatever the user typed on
4502 the command-line. The {prompt} argument is either a prompt
4503 string, or a blank string (for no prompt). A '\n' can be used
4504 in the prompt to start a new line.
4505 The highlighting set with |:echohl| is used for the prompt.
4506 The input is entered just like a command-line, with the same
4507 editing commands and mappings. There is a separate history
4508 for lines typed for input().
4509 Example: >
4510 :if input("Coffee or beer? ") == "beer"
4511 : echo "Cheers!"
4512 :endif
4513<
4514 If the optional {text} argument is present and not empty, this
4515 is used for the default reply, as if the user typed this.
4516 Example: >
4517 :let color = input("Color? ", "white")
4518
4519< The optional {completion} argument specifies the type of
4520 completion supported for the input. Without it completion is
4521 not performed. The supported completion types are the same as
4522 that can be supplied to a user-defined command using the
4523 "-complete=" argument. Refer to |:command-completion| for
4524 more information. Example: >
4525 let fname = input("File: ", "", "file")
4526<
4527 NOTE: This function must not be used in a startup file, for
4528 the versions that only run in GUI mode (e.g., the Win32 GUI).
4529 Note: When input() is called from within a mapping it will
4530 consume remaining characters from that mapping, because a
4531 mapping is handled like the characters were typed.
4532 Use |inputsave()| before input() and |inputrestore()|
4533 after input() to avoid that. Another solution is to avoid
4534 that further characters follow in the mapping, e.g., by using
4535 |:execute| or |:normal|.
4536
4537 Example with a mapping: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004538 :nmap \x :call GetFoo()<CR>:exe "/" .. Foo<CR>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004539 :function GetFoo()
4540 : call inputsave()
4541 : let g:Foo = input("enter search pattern: ")
4542 : call inputrestore()
4543 :endfunction
4544
4545< Can also be used as a |method|: >
4546 GetPrompt()->input()
4547
4548inputdialog({prompt} [, {text} [, {cancelreturn}]]) *inputdialog()*
4549 Like |input()|, but when the GUI is running and text dialogs
4550 are supported, a dialog window pops up to input the text.
4551 Example: >
4552 :let n = inputdialog("value for shiftwidth", shiftwidth())
4553 :if n != ""
4554 : let &sw = n
4555 :endif
4556< When the dialog is cancelled {cancelreturn} is returned. When
4557 omitted an empty string is returned.
4558 Hitting <Enter> works like pressing the OK button. Hitting
4559 <Esc> works like pressing the Cancel button.
4560 NOTE: Command-line completion is not supported.
4561
4562 Can also be used as a |method|: >
4563 GetPrompt()->inputdialog()
4564
4565inputlist({textlist}) *inputlist()*
4566 {textlist} must be a |List| of strings. This |List| is
4567 displayed, one string per line. The user will be prompted to
4568 enter a number, which is returned.
4569 The user can also select an item by clicking on it with the
4570 mouse, if the mouse is enabled in the command line ('mouse' is
4571 "a" or includes "c"). For the first string 0 is returned.
4572 When clicking above the first item a negative number is
4573 returned. When clicking on the prompt one more than the
4574 length of {textlist} is returned.
4575 Make sure {textlist} has less than 'lines' entries, otherwise
4576 it won't work. It's a good idea to put the entry number at
4577 the start of the string. And put a prompt in the first item.
4578 Example: >
4579 let color = inputlist(['Select color:', '1. red',
4580 \ '2. green', '3. blue'])
4581
4582< Can also be used as a |method|: >
4583 GetChoices()->inputlist()
4584
4585inputrestore() *inputrestore()*
4586 Restore typeahead that was saved with a previous |inputsave()|.
4587 Should be called the same number of times inputsave() is
4588 called. Calling it more often is harmless though.
4589 Returns TRUE when there is nothing to restore, FALSE otherwise.
4590
4591inputsave() *inputsave()*
4592 Preserve typeahead (also from mappings) and clear it, so that
4593 a following prompt gets input from the user. Should be
4594 followed by a matching inputrestore() after the prompt. Can
4595 be used several times, in which case there must be just as
4596 many inputrestore() calls.
4597 Returns TRUE when out of memory, FALSE otherwise.
4598
4599inputsecret({prompt} [, {text}]) *inputsecret()*
4600 This function acts much like the |input()| function with but
4601 two exceptions:
4602 a) the user's response will be displayed as a sequence of
4603 asterisks ("*") thereby keeping the entry secret, and
4604 b) the user's response will not be recorded on the input
4605 |history| stack.
4606 The result is a String, which is whatever the user actually
4607 typed on the command-line in response to the issued prompt.
4608 NOTE: Command-line completion is not supported.
4609
4610 Can also be used as a |method|: >
4611 GetPrompt()->inputsecret()
4612
4613insert({object}, {item} [, {idx}]) *insert()*
4614 When {object} is a |List| or a |Blob| insert {item} at the start
4615 of it.
4616
4617 If {idx} is specified insert {item} before the item with index
4618 {idx}. If {idx} is zero it goes before the first item, just
4619 like omitting {idx}. A negative {idx} is also possible, see
4620 |list-index|. -1 inserts just before the last item.
4621
4622 Returns the resulting |List| or |Blob|. Examples: >
4623 :let mylist = insert([2, 3, 5], 1)
4624 :call insert(mylist, 4, -1)
4625 :call insert(mylist, 6, len(mylist))
4626< The last example can be done simpler with |add()|.
4627 Note that when {item} is a |List| it is inserted as a single
4628 item. Use |extend()| to concatenate |Lists|.
4629
4630 Can also be used as a |method|: >
4631 mylist->insert(item)
4632
4633interrupt() *interrupt()*
4634 Interrupt script execution. It works more or less like the
4635 user typing CTRL-C, most commands won't execute and control
4636 returns to the user. This is useful to abort execution
4637 from lower down, e.g. in an autocommand. Example: >
4638 :function s:check_typoname(file)
4639 : if fnamemodify(a:file, ':t') == '['
4640 : echomsg 'Maybe typo'
4641 : call interrupt()
4642 : endif
4643 :endfunction
4644 :au BufWritePre * call s:check_typoname(expand('<amatch>'))
4645
4646invert({expr}) *invert()*
4647 Bitwise invert. The argument is converted to a number. A
4648 List, Dict or Float argument causes an error. Example: >
4649 :let bits = invert(bits)
4650< Can also be used as a |method|: >
4651 :let bits = bits->invert()
4652
4653isdirectory({directory}) *isdirectory()*
4654 The result is a Number, which is |TRUE| when a directory
4655 with the name {directory} exists. If {directory} doesn't
4656 exist, or isn't a directory, the result is |FALSE|. {directory}
4657 is any expression, which is used as a String.
4658
4659 Can also be used as a |method|: >
4660 GetName()->isdirectory()
4661
4662isinf({expr}) *isinf()*
4663 Return 1 if {expr} is a positive infinity, or -1 a negative
4664 infinity, otherwise 0. >
4665 :echo isinf(1.0 / 0.0)
4666< 1 >
4667 :echo isinf(-1.0 / 0.0)
4668< -1
4669
4670 Can also be used as a |method|: >
4671 Compute()->isinf()
4672<
4673 {only available when compiled with the |+float| feature}
4674
4675islocked({expr}) *islocked()* *E786*
4676 The result is a Number, which is |TRUE| when {expr} is the
4677 name of a locked variable.
4678 The string argument {expr} must be the name of a variable,
4679 |List| item or |Dictionary| entry, not the variable itself!
4680 Example: >
4681 :let alist = [0, ['a', 'b'], 2, 3]
4682 :lockvar 1 alist
4683 :echo islocked('alist') " 1
4684 :echo islocked('alist[1]') " 0
4685
Bram Moolenaar9da17d72022-02-09 21:50:44 +00004686< When {expr} is a variable that does not exist -1 is returned.
4687 If {expr} uses a range, list or dict index that is out of
4688 range or does not exist you get an error message. Use
4689 |exists()| to check for existence.
4690 In Vim9 script it does not work for local function variables.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004691
4692 Can also be used as a |method|: >
4693 GetName()->islocked()
4694
4695isnan({expr}) *isnan()*
4696 Return |TRUE| if {expr} is a float with value NaN. >
4697 echo isnan(0.0 / 0.0)
4698< 1
4699
4700 Can also be used as a |method|: >
4701 Compute()->isnan()
4702<
4703 {only available when compiled with the |+float| feature}
4704
4705items({dict}) *items()*
4706 Return a |List| with all the key-value pairs of {dict}. Each
4707 |List| item is a list with two items: the key of a {dict}
4708 entry and the value of this entry. The |List| is in arbitrary
4709 order. Also see |keys()| and |values()|.
4710 Example: >
4711 for [key, value] in items(mydict)
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004712 echo key .. ': ' .. value
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004713 endfor
4714
4715< Can also be used as a |method|: >
4716 mydict->items()
4717
4718job_ functions are documented here: |job-functions-details|
4719
4720
4721join({list} [, {sep}]) *join()*
4722 Join the items in {list} together into one String.
4723 When {sep} is specified it is put in between the items. If
4724 {sep} is omitted a single space is used.
4725 Note that {sep} is not added at the end. You might want to
4726 add it there too: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004727 let lines = join(mylist, "\n") .. "\n"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004728< String items are used as-is. |Lists| and |Dictionaries| are
4729 converted into a string like with |string()|.
4730 The opposite function is |split()|.
4731
4732 Can also be used as a |method|: >
4733 mylist->join()
4734
4735js_decode({string}) *js_decode()*
4736 This is similar to |json_decode()| with these differences:
4737 - Object key names do not have to be in quotes.
4738 - Strings can be in single quotes.
4739 - Empty items in an array (between two commas) are allowed and
4740 result in v:none items.
4741
4742 Can also be used as a |method|: >
4743 ReadObject()->js_decode()
4744
4745js_encode({expr}) *js_encode()*
4746 This is similar to |json_encode()| with these differences:
4747 - Object key names are not in quotes.
4748 - v:none items in an array result in an empty item between
4749 commas.
4750 For example, the Vim object:
4751 [1,v:none,{"one":1},v:none] ~
4752 Will be encoded as:
4753 [1,,{one:1},,] ~
4754 While json_encode() would produce:
4755 [1,null,{"one":1},null] ~
4756 This encoding is valid for JavaScript. It is more efficient
4757 than JSON, especially when using an array with optional items.
4758
4759 Can also be used as a |method|: >
4760 GetObject()->js_encode()
4761
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00004762json_decode({string}) *json_decode()* *E491*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004763 This parses a JSON formatted string and returns the equivalent
4764 in Vim values. See |json_encode()| for the relation between
4765 JSON and Vim values.
4766 The decoding is permissive:
4767 - A trailing comma in an array and object is ignored, e.g.
4768 "[1, 2, ]" is the same as "[1, 2]".
4769 - Integer keys are accepted in objects, e.g. {1:2} is the
4770 same as {"1":2}.
4771 - More floating point numbers are recognized, e.g. "1." for
4772 "1.0", or "001.2" for "1.2". Special floating point values
4773 "Infinity", "-Infinity" and "NaN" (capitalization ignored)
4774 are accepted.
4775 - Leading zeroes in integer numbers are ignored, e.g. "012"
4776 for "12" or "-012" for "-12".
4777 - Capitalization is ignored in literal names null, true or
4778 false, e.g. "NULL" for "null", "True" for "true".
4779 - Control characters U+0000 through U+001F which are not
4780 escaped in strings are accepted, e.g. " " (tab
4781 character in string) for "\t".
4782 - An empty JSON expression or made of only spaces is accepted
4783 and results in v:none.
4784 - Backslash in an invalid 2-character sequence escape is
4785 ignored, e.g. "\a" is decoded as "a".
4786 - A correct surrogate pair in JSON strings should normally be
4787 a 12 character sequence such as "\uD834\uDD1E", but
4788 json_decode() silently accepts truncated surrogate pairs
4789 such as "\uD834" or "\uD834\u"
4790 *E938*
4791 A duplicate key in an object, valid in rfc7159, is not
4792 accepted by json_decode() as the result must be a valid Vim
4793 type, e.g. this fails: {"a":"b", "a":"c"}
4794
4795 Can also be used as a |method|: >
4796 ReadObject()->json_decode()
4797
4798json_encode({expr}) *json_encode()*
4799 Encode {expr} as JSON and return this as a string.
4800 The encoding is specified in:
4801 https://tools.ietf.org/html/rfc7159.html
Bram Moolenaara2baa732022-02-04 16:09:54 +00004802 Vim values are converted as follows: *E1161*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004803 |Number| decimal number
4804 |Float| floating point number
4805 Float nan "NaN"
4806 Float inf "Infinity"
4807 Float -inf "-Infinity"
4808 |String| in double quotes (possibly null)
4809 |Funcref| not possible, error
4810 |List| as an array (possibly null); when
4811 used recursively: []
4812 |Dict| as an object (possibly null); when
4813 used recursively: {}
4814 |Blob| as an array of the individual bytes
4815 v:false "false"
4816 v:true "true"
4817 v:none "null"
4818 v:null "null"
4819 Note that NaN and Infinity are passed on as values. This is
4820 missing in the JSON standard, but several implementations do
4821 allow it. If not then you will get an error.
4822
4823 Can also be used as a |method|: >
4824 GetObject()->json_encode()
4825
4826keys({dict}) *keys()*
4827 Return a |List| with all the keys of {dict}. The |List| is in
4828 arbitrary order. Also see |items()| and |values()|.
4829
4830 Can also be used as a |method|: >
4831 mydict->keys()
4832
4833< *len()* *E701*
4834len({expr}) The result is a Number, which is the length of the argument.
4835 When {expr} is a String or a Number the length in bytes is
4836 used, as with |strlen()|.
4837 When {expr} is a |List| the number of items in the |List| is
4838 returned.
4839 When {expr} is a |Blob| the number of bytes is returned.
4840 When {expr} is a |Dictionary| the number of entries in the
4841 |Dictionary| is returned.
4842 Otherwise an error is given.
4843
4844 Can also be used as a |method|: >
4845 mylist->len()
4846
4847< *libcall()* *E364* *E368*
4848libcall({libname}, {funcname}, {argument})
4849 Call function {funcname} in the run-time library {libname}
4850 with single argument {argument}.
4851 This is useful to call functions in a library that you
4852 especially made to be used with Vim. Since only one argument
4853 is possible, calling standard library functions is rather
4854 limited.
4855 The result is the String returned by the function. If the
4856 function returns NULL, this will appear as an empty string ""
4857 to Vim.
4858 If the function returns a number, use libcallnr()!
4859 If {argument} is a number, it is passed to the function as an
4860 int; if {argument} is a string, it is passed as a
4861 null-terminated string.
4862 This function will fail in |restricted-mode|.
4863
4864 libcall() allows you to write your own 'plug-in' extensions to
4865 Vim without having to recompile the program. It is NOT a
4866 means to call system functions! If you try to do so Vim will
4867 very probably crash.
4868
4869 For Win32, the functions you write must be placed in a DLL
4870 and use the normal C calling convention (NOT Pascal which is
4871 used in Windows System DLLs). The function must take exactly
4872 one parameter, either a character pointer or a long integer,
4873 and must return a character pointer or NULL. The character
4874 pointer returned must point to memory that will remain valid
4875 after the function has returned (e.g. in static data in the
4876 DLL). If it points to allocated memory, that memory will
4877 leak away. Using a static buffer in the function should work,
4878 it's then freed when the DLL is unloaded.
4879
4880 WARNING: If the function returns a non-valid pointer, Vim may
4881 crash! This also happens if the function returns a number,
4882 because Vim thinks it's a pointer.
4883 For Win32 systems, {libname} should be the filename of the DLL
4884 without the ".DLL" suffix. A full path is only required if
4885 the DLL is not in the usual places.
4886 For Unix: When compiling your own plugins, remember that the
4887 object code must be compiled as position-independent ('PIC').
4888 {only in Win32 and some Unix versions, when the |+libcall|
4889 feature is present}
4890 Examples: >
4891 :echo libcall("libc.so", "getenv", "HOME")
4892
4893< Can also be used as a |method|, the base is passed as the
4894 third argument: >
4895 GetValue()->libcall("libc.so", "getenv")
4896<
4897 *libcallnr()*
4898libcallnr({libname}, {funcname}, {argument})
4899 Just like |libcall()|, but used for a function that returns an
4900 int instead of a string.
4901 {only in Win32 on some Unix versions, when the |+libcall|
4902 feature is present}
4903 Examples: >
4904 :echo libcallnr("/usr/lib/libc.so", "getpid", "")
4905 :call libcallnr("libc.so", "printf", "Hello World!\n")
4906 :call libcallnr("libc.so", "sleep", 10)
4907<
4908 Can also be used as a |method|, the base is passed as the
4909 third argument: >
4910 GetValue()->libcallnr("libc.so", "printf")
4911<
4912
4913line({expr} [, {winid}]) *line()*
4914 The result is a Number, which is the line number of the file
4915 position given with {expr}. The {expr} argument is a string.
Bram Moolenaara2baa732022-02-04 16:09:54 +00004916 The accepted positions are: *E1209*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004917 . the cursor position
4918 $ the last line in the current buffer
4919 'x position of mark x (if the mark is not set, 0 is
4920 returned)
4921 w0 first line visible in current window (one if the
4922 display isn't updated, e.g. in silent Ex mode)
4923 w$ last line visible in current window (this is one
4924 less than "w0" if no lines are visible)
4925 v In Visual mode: the start of the Visual area (the
4926 cursor is the end). When not in Visual mode
4927 returns the cursor position. Differs from |'<| in
4928 that it's updated right away.
4929 Note that a mark in another file can be used. The line number
4930 then applies to another buffer.
4931 To get the column number use |col()|. To get both use
4932 |getpos()|.
4933 With the optional {winid} argument the values are obtained for
4934 that window instead of the current window.
4935 Examples: >
4936 line(".") line number of the cursor
4937 line(".", winid) idem, in window "winid"
4938 line("'t") line number of mark t
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004939 line("'" .. marker) line number of mark marker
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004940<
4941 To jump to the last known position when opening a file see
4942 |last-position-jump|.
4943
4944 Can also be used as a |method|: >
4945 GetValue()->line()
4946
4947line2byte({lnum}) *line2byte()*
4948 Return the byte count from the start of the buffer for line
4949 {lnum}. This includes the end-of-line character, depending on
4950 the 'fileformat' option for the current buffer. The first
4951 line returns 1. 'encoding' matters, 'fileencoding' is ignored.
4952 This can also be used to get the byte count for the line just
4953 below the last line: >
4954 line2byte(line("$") + 1)
4955< This is the buffer size plus one. If 'fileencoding' is empty
4956 it is the file size plus one. {lnum} is used like with
4957 |getline()|. When {lnum} is invalid, or the |+byte_offset|
4958 feature has been disabled at compile time, -1 is returned.
4959 Also see |byte2line()|, |go| and |:goto|.
4960
4961 Can also be used as a |method|: >
4962 GetLnum()->line2byte()
4963
4964lispindent({lnum}) *lispindent()*
4965 Get the amount of indent for line {lnum} according the lisp
4966 indenting rules, as with 'lisp'.
4967 The indent is counted in spaces, the value of 'tabstop' is
4968 relevant. {lnum} is used just like in |getline()|.
4969 When {lnum} is invalid or Vim was not compiled the
4970 |+lispindent| feature, -1 is returned. In |Vim9| script an
4971 error is given.
4972
4973 Can also be used as a |method|: >
4974 GetLnum()->lispindent()
4975
4976list2blob({list}) *list2blob()*
4977 Return a Blob concatenating all the number values in {list}.
4978 Examples: >
4979 list2blob([1, 2, 3, 4]) returns 0z01020304
4980 list2blob([]) returns 0z
4981< Returns an empty Blob on error. If one of the numbers is
4982 negative or more than 255 error *E1239* is given.
4983
4984 |blob2list()| does the opposite.
4985
4986 Can also be used as a |method|: >
4987 GetList()->list2blob()
4988
4989list2str({list} [, {utf8}]) *list2str()*
4990 Convert each number in {list} to a character string can
4991 concatenate them all. Examples: >
4992 list2str([32]) returns " "
4993 list2str([65, 66, 67]) returns "ABC"
4994< The same can be done (slowly) with: >
4995 join(map(list, {nr, val -> nr2char(val)}), '')
4996< |str2list()| does the opposite.
4997
4998 When {utf8} is omitted or zero, the current 'encoding' is used.
4999 When {utf8} is TRUE, always return UTF-8 characters.
5000 With UTF-8 composing characters work as expected: >
5001 list2str([97, 769]) returns "á"
5002<
5003 Can also be used as a |method|: >
5004 GetList()->list2str()
5005
5006listener_add({callback} [, {buf}]) *listener_add()*
5007 Add a callback function that will be invoked when changes have
5008 been made to buffer {buf}.
5009 {buf} refers to a buffer name or number. For the accepted
5010 values, see |bufname()|. When {buf} is omitted the current
5011 buffer is used.
5012 Returns a unique ID that can be passed to |listener_remove()|.
5013
5014 The {callback} is invoked with five arguments:
Bram Moolenaar944697a2022-02-20 19:48:20 +00005015 bufnr the buffer that was changed
5016 start first changed line number
5017 end first line number below the change
5018 added number of lines added, negative if lines were
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005019 deleted
Bram Moolenaar944697a2022-02-20 19:48:20 +00005020 changes a List of items with details about the changes
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005021
5022 Example: >
5023 func Listener(bufnr, start, end, added, changes)
5024 echo 'lines ' .. a:start .. ' until ' .. a:end .. ' changed'
5025 endfunc
5026 call listener_add('Listener', bufnr)
5027
Bram Moolenaar944697a2022-02-20 19:48:20 +00005028< The List cannot be changed. Each item in "changes" is a
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005029 dictionary with these entries:
5030 lnum the first line number of the change
5031 end the first line below the change
5032 added number of lines added; negative if lines were
5033 deleted
5034 col first column in "lnum" that was affected by
5035 the change; one if unknown or the whole line
5036 was affected; this is a byte index, first
5037 character has a value of one.
5038 When lines are inserted the values are:
5039 lnum line above which the new line is added
5040 end equal to "lnum"
5041 added number of lines inserted
5042 col 1
5043 When lines are deleted the values are:
5044 lnum the first deleted line
5045 end the line below the first deleted line, before
5046 the deletion was done
5047 added negative, number of lines deleted
5048 col 1
5049 When lines are changed:
5050 lnum the first changed line
5051 end the line below the last changed line
5052 added 0
5053 col first column with a change or 1
5054
5055 The entries are in the order the changes were made, thus the
5056 most recent change is at the end. The line numbers are valid
5057 when the callback is invoked, but later changes may make them
5058 invalid, thus keeping a copy for later might not work.
5059
5060 The {callback} is invoked just before the screen is updated,
5061 when |listener_flush()| is called or when a change is being
5062 made that changes the line count in a way it causes a line
5063 number in the list of changes to become invalid.
5064
5065 The {callback} is invoked with the text locked, see
5066 |textlock|. If you do need to make changes to the buffer, use
5067 a timer to do this later |timer_start()|.
5068
5069 The {callback} is not invoked when the buffer is first loaded.
5070 Use the |BufReadPost| autocmd event to handle the initial text
5071 of a buffer.
5072 The {callback} is also not invoked when the buffer is
5073 unloaded, use the |BufUnload| autocmd event for that.
5074
5075 Can also be used as a |method|, the base is passed as the
5076 second argument: >
5077 GetBuffer()->listener_add(callback)
5078
5079listener_flush([{buf}]) *listener_flush()*
5080 Invoke listener callbacks for buffer {buf}. If there are no
5081 pending changes then no callbacks are invoked.
5082
5083 {buf} refers to a buffer name or number. For the accepted
5084 values, see |bufname()|. When {buf} is omitted the current
5085 buffer is used.
5086
5087 Can also be used as a |method|: >
5088 GetBuffer()->listener_flush()
5089
5090listener_remove({id}) *listener_remove()*
5091 Remove a listener previously added with listener_add().
5092 Returns FALSE when {id} could not be found, TRUE when {id} was
5093 removed.
5094
5095 Can also be used as a |method|: >
5096 GetListenerId()->listener_remove()
5097
5098localtime() *localtime()*
5099 Return the current time, measured as seconds since 1st Jan
5100 1970. See also |strftime()|, |strptime()| and |getftime()|.
5101
5102
5103log({expr}) *log()*
5104 Return the natural logarithm (base e) of {expr} as a |Float|.
5105 {expr} must evaluate to a |Float| or a |Number| in the range
5106 (0, inf].
5107 Examples: >
5108 :echo log(10)
5109< 2.302585 >
5110 :echo log(exp(5))
5111< 5.0
5112
5113 Can also be used as a |method|: >
5114 Compute()->log()
5115<
5116 {only available when compiled with the |+float| feature}
5117
5118
5119log10({expr}) *log10()*
5120 Return the logarithm of Float {expr} to base 10 as a |Float|.
5121 {expr} must evaluate to a |Float| or a |Number|.
5122 Examples: >
5123 :echo log10(1000)
5124< 3.0 >
5125 :echo log10(0.01)
5126< -2.0
5127
5128 Can also be used as a |method|: >
5129 Compute()->log10()
5130<
5131 {only available when compiled with the |+float| feature}
5132
5133luaeval({expr} [, {expr}]) *luaeval()*
5134 Evaluate Lua expression {expr} and return its result converted
5135 to Vim data structures. Second {expr} may hold additional
5136 argument accessible as _A inside first {expr}.
5137 Strings are returned as they are.
5138 Boolean objects are converted to numbers.
5139 Numbers are converted to |Float| values if vim was compiled
5140 with |+float| and to numbers otherwise.
5141 Dictionaries and lists obtained by vim.eval() are returned
5142 as-is.
5143 Other objects are returned as zero without any errors.
5144 See |lua-luaeval| for more details.
5145 Note that in a `:def` function local variables are not visible
5146 to {expr}.
5147
5148 Can also be used as a |method|: >
5149 GetExpr()->luaeval()
5150
5151< {only available when compiled with the |+lua| feature}
5152
5153map({expr1}, {expr2}) *map()*
5154 {expr1} must be a |List|, |String|, |Blob| or |Dictionary|.
Bram Moolenaar944697a2022-02-20 19:48:20 +00005155 When {expr1} is a |List| or |Dictionary|, replace each
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005156 item in {expr1} with the result of evaluating {expr2}.
5157 For a |Blob| each byte is replaced.
5158 For a |String|, each character, including composing
5159 characters, is replaced.
5160 If the item type changes you may want to use |mapnew()| to
5161 create a new List or Dictionary. This is required when using
5162 Vim9 script.
5163
5164 {expr2} must be a |String| or |Funcref|.
5165
5166 If {expr2} is a |String|, inside {expr2} |v:val| has the value
5167 of the current item. For a |Dictionary| |v:key| has the key
5168 of the current item and for a |List| |v:key| has the index of
5169 the current item. For a |Blob| |v:key| has the index of the
5170 current byte. For a |String| |v:key| has the index of the
5171 current character.
5172 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005173 :call map(mylist, '"> " .. v:val .. " <"')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005174< This puts "> " before and " <" after each item in "mylist".
5175
5176 Note that {expr2} is the result of an expression and is then
5177 used as an expression again. Often it is good to use a
5178 |literal-string| to avoid having to double backslashes. You
5179 still have to double ' quotes
5180
5181 If {expr2} is a |Funcref| it is called with two arguments:
5182 1. The key or the index of the current item.
5183 2. the value of the current item.
5184 The function must return the new value of the item. Example
5185 that changes each value by "key-value": >
5186 func KeyValue(key, val)
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005187 return a:key .. '-' .. a:val
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005188 endfunc
5189 call map(myDict, function('KeyValue'))
5190< It is shorter when using a |lambda|: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005191 call map(myDict, {key, val -> key .. '-' .. val})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005192< If you do not use "val" you can leave it out: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005193 call map(myDict, {key -> 'item: ' .. key})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005194< If you do not use "key" you can use a short name: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005195 call map(myDict, {_, val -> 'item: ' .. val})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005196<
5197 The operation is done in-place for a |List| and |Dictionary|.
5198 If you want it to remain unmodified make a copy first: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005199 :let tlist = map(copy(mylist), ' v:val .. "\t"')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005200
5201< Returns {expr1}, the |List| or |Dictionary| that was filtered,
5202 or a new |Blob| or |String|.
5203 When an error is encountered while evaluating {expr2} no
5204 further items in {expr1} are processed.
5205 When {expr2} is a Funcref errors inside a function are ignored,
5206 unless it was defined with the "abort" flag.
5207
5208 Can also be used as a |method|: >
5209 mylist->map(expr2)
5210
5211
5212maparg({name} [, {mode} [, {abbr} [, {dict}]]]) *maparg()*
5213 When {dict} is omitted or zero: Return the rhs of mapping
5214 {name} in mode {mode}. The returned String has special
5215 characters translated like in the output of the ":map" command
5216 listing.
5217
5218 When there is no mapping for {name}, an empty String is
5219 returned. When the mapping for {name} is empty, then "<Nop>"
5220 is returned.
5221
5222 The {name} can have special key names, like in the ":map"
5223 command.
5224
5225 {mode} can be one of these strings:
5226 "n" Normal
5227 "v" Visual (including Select)
5228 "o" Operator-pending
5229 "i" Insert
5230 "c" Cmd-line
5231 "s" Select
5232 "x" Visual
5233 "l" langmap |language-mapping|
5234 "t" Terminal-Job
5235 "" Normal, Visual and Operator-pending
5236 When {mode} is omitted, the modes for "" are used.
5237
5238 When {abbr} is there and it is |TRUE| use abbreviations
5239 instead of mappings.
5240
5241 When {dict} is there and it is |TRUE| return a dictionary
5242 containing all the information of the mapping with the
5243 following items:
5244 "lhs" The {lhs} of the mapping as it would be typed
5245 "lhsraw" The {lhs} of the mapping as raw bytes
5246 "lhsrawalt" The {lhs} of the mapping as raw bytes, alternate
5247 form, only present when it differs from "lhsraw"
5248 "rhs" The {rhs} of the mapping as typed.
5249 "silent" 1 for a |:map-silent| mapping, else 0.
5250 "noremap" 1 if the {rhs} of the mapping is not remappable.
5251 "script" 1 if mapping was defined with <script>.
5252 "expr" 1 for an expression mapping (|:map-<expr>|).
5253 "buffer" 1 for a buffer local mapping (|:map-local|).
5254 "mode" Modes for which the mapping is defined. In
5255 addition to the modes mentioned above, these
5256 characters will be used:
5257 " " Normal, Visual and Operator-pending
5258 "!" Insert and Commandline mode
5259 (|mapmode-ic|)
5260 "sid" The script local ID, used for <sid> mappings
5261 (|<SID>|).
Bram Moolenaara9528b32022-01-18 20:51:35 +00005262 "scriptversion" The version of the script. 999999 for
5263 |Vim9| script.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005264 "lnum" The line number in "sid", zero if unknown.
5265 "nowait" Do not wait for other, longer mappings.
5266 (|:map-<nowait>|).
5267
5268 The dictionary can be used to restore a mapping with
5269 |mapset()|.
5270
5271 The mappings local to the current buffer are checked first,
5272 then the global mappings.
5273 This function can be used to map a key even when it's already
5274 mapped, and have it do the original mapping too. Sketch: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005275 exe 'nnoremap <Tab> ==' .. maparg('<Tab>', 'n')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005276
5277< Can also be used as a |method|: >
5278 GetKey()->maparg('n')
5279
5280mapcheck({name} [, {mode} [, {abbr}]]) *mapcheck()*
5281 Check if there is a mapping that matches with {name} in mode
5282 {mode}. See |maparg()| for {mode} and special names in
5283 {name}.
5284 When {abbr} is there and it is |TRUE| use abbreviations
5285 instead of mappings.
5286 A match happens with a mapping that starts with {name} and
5287 with a mapping which is equal to the start of {name}.
5288
5289 matches mapping "a" "ab" "abc" ~
5290 mapcheck("a") yes yes yes
5291 mapcheck("abc") yes yes yes
5292 mapcheck("ax") yes no no
5293 mapcheck("b") no no no
5294
5295 The difference with maparg() is that mapcheck() finds a
5296 mapping that matches with {name}, while maparg() only finds a
5297 mapping for {name} exactly.
5298 When there is no mapping that starts with {name}, an empty
5299 String is returned. If there is one, the RHS of that mapping
5300 is returned. If there are several mappings that start with
5301 {name}, the RHS of one of them is returned. This will be
5302 "<Nop>" if the RHS is empty.
5303 The mappings local to the current buffer are checked first,
5304 then the global mappings.
5305 This function can be used to check if a mapping can be added
5306 without being ambiguous. Example: >
5307 :if mapcheck("_vv") == ""
5308 : map _vv :set guifont=7x13<CR>
5309 :endif
5310< This avoids adding the "_vv" mapping when there already is a
5311 mapping for "_v" or for "_vvv".
5312
5313 Can also be used as a |method|: >
5314 GetKey()->mapcheck('n')
5315
5316
5317mapnew({expr1}, {expr2}) *mapnew()*
5318 Like |map()| but instead of replacing items in {expr1} a new
5319 List or Dictionary is created and returned. {expr1} remains
5320 unchanged. Items can still be changed by {expr2}, if you
5321 don't want that use |deepcopy()| first.
5322
5323
5324mapset({mode}, {abbr}, {dict}) *mapset()*
5325 Restore a mapping from a dictionary returned by |maparg()|.
5326 {mode} and {abbr} should be the same as for the call to
5327 |maparg()|. *E460*
5328 {mode} is used to define the mode in which the mapping is set,
5329 not the "mode" entry in {dict}.
5330 Example for saving and restoring a mapping: >
5331 let save_map = maparg('K', 'n', 0, 1)
5332 nnoremap K somethingelse
5333 ...
5334 call mapset('n', 0, save_map)
5335< Note that if you are going to replace a map in several modes,
5336 e.g. with `:map!`, you need to save the mapping for all of
5337 them, since they can differ.
5338
5339
5340match({expr}, {pat} [, {start} [, {count}]]) *match()*
5341 When {expr} is a |List| then this returns the index of the
5342 first item where {pat} matches. Each item is used as a
5343 String, |Lists| and |Dictionaries| are used as echoed.
5344
5345 Otherwise, {expr} is used as a String. The result is a
5346 Number, which gives the index (byte offset) in {expr} where
5347 {pat} matches.
5348
5349 A match at the first character or |List| item returns zero.
5350 If there is no match -1 is returned.
5351
5352 For getting submatches see |matchlist()|.
5353 Example: >
5354 :echo match("testing", "ing") " results in 4
5355 :echo match([1, 'x'], '\a') " results in 1
5356< See |string-match| for how {pat} is used.
5357 *strpbrk()*
5358 Vim doesn't have a strpbrk() function. But you can do: >
5359 :let sepidx = match(line, '[.,;: \t]')
5360< *strcasestr()*
5361 Vim doesn't have a strcasestr() function. But you can add
5362 "\c" to the pattern to ignore case: >
5363 :let idx = match(haystack, '\cneedle')
5364<
5365 If {start} is given, the search starts from byte index
5366 {start} in a String or item {start} in a |List|.
5367 The result, however, is still the index counted from the
5368 first character/item. Example: >
5369 :echo match("testing", "ing", 2)
5370< result is again "4". >
5371 :echo match("testing", "ing", 4)
5372< result is again "4". >
5373 :echo match("testing", "t", 2)
5374< result is "3".
5375 For a String, if {start} > 0 then it is like the string starts
5376 {start} bytes later, thus "^" will match at {start}. Except
5377 when {count} is given, then it's like matches before the
5378 {start} byte are ignored (this is a bit complicated to keep it
5379 backwards compatible).
5380 For a String, if {start} < 0, it will be set to 0. For a list
5381 the index is counted from the end.
5382 If {start} is out of range ({start} > strlen({expr}) for a
5383 String or {start} > len({expr}) for a |List|) -1 is returned.
5384
5385 When {count} is given use the {count}'th match. When a match
5386 is found in a String the search for the next one starts one
5387 character further. Thus this example results in 1: >
5388 echo match("testing", "..", 0, 2)
5389< In a |List| the search continues in the next item.
5390 Note that when {count} is added the way {start} works changes,
5391 see above.
5392
5393 See |pattern| for the patterns that are accepted.
5394 The 'ignorecase' option is used to set the ignore-caseness of
5395 the pattern. 'smartcase' is NOT used. The matching is always
5396 done like 'magic' is set and 'cpoptions' is empty.
5397 Note that a match at the start is preferred, thus when the
5398 pattern is using "*" (any number of matches) it tends to find
5399 zero matches at the start instead of a number of matches
5400 further down in the text.
5401
5402 Can also be used as a |method|: >
5403 GetText()->match('word')
5404 GetList()->match('word')
5405<
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00005406 *matchadd()* *E290* *E798* *E799* *E801* *E957*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005407matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
5408 Defines a pattern to be highlighted in the current window (a
5409 "match"). It will be highlighted with {group}. Returns an
5410 identification number (ID), which can be used to delete the
5411 match using |matchdelete()|. The ID is bound to the window.
5412 Matching is case sensitive and magic, unless case sensitivity
5413 or magicness are explicitly overridden in {pattern}. The
5414 'magic', 'smartcase' and 'ignorecase' options are not used.
5415 The "Conceal" value is special, it causes the match to be
5416 concealed.
5417
5418 The optional {priority} argument assigns a priority to the
5419 match. A match with a high priority will have its
5420 highlighting overrule that of a match with a lower priority.
5421 A priority is specified as an integer (negative numbers are no
5422 exception). If the {priority} argument is not specified, the
5423 default priority is 10. The priority of 'hlsearch' is zero,
5424 hence all matches with a priority greater than zero will
5425 overrule it. Syntax highlighting (see 'syntax') is a separate
5426 mechanism, and regardless of the chosen priority a match will
5427 always overrule syntax highlighting.
5428
5429 The optional {id} argument allows the request for a specific
5430 match ID. If a specified ID is already taken, an error
5431 message will appear and the match will not be added. An ID
5432 is specified as a positive integer (zero excluded). IDs 1, 2
5433 and 3 are reserved for |:match|, |:2match| and |:3match|,
5434 respectively. If the {id} argument is not specified or -1,
5435 |matchadd()| automatically chooses a free ID.
5436
5437 The optional {dict} argument allows for further custom
5438 values. Currently this is used to specify a match specific
5439 conceal character that will be shown for |hl-Conceal|
5440 highlighted matches. The dict can have the following members:
5441
5442 conceal Special character to show instead of the
5443 match (only for |hl-Conceal| highlighted
5444 matches, see |:syn-cchar|)
5445 window Instead of the current window use the
5446 window with this number or window ID.
5447
5448 The number of matches is not limited, as it is the case with
5449 the |:match| commands.
5450
5451 Example: >
5452 :highlight MyGroup ctermbg=green guibg=green
5453 :let m = matchadd("MyGroup", "TODO")
5454< Deletion of the pattern: >
5455 :call matchdelete(m)
5456
5457< A list of matches defined by |matchadd()| and |:match| are
5458 available from |getmatches()|. All matches can be deleted in
5459 one operation by |clearmatches()|.
5460
5461 Can also be used as a |method|: >
5462 GetGroup()->matchadd('TODO')
5463<
5464 *matchaddpos()*
5465matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
5466 Same as |matchadd()|, but requires a list of positions {pos}
5467 instead of a pattern. This command is faster than |matchadd()|
5468 because it does not require to handle regular expressions and
5469 sets buffer line boundaries to redraw screen. It is supposed
5470 to be used when fast match additions and deletions are
5471 required, for example to highlight matching parentheses.
5472
5473 {pos} is a list of positions. Each position can be one of
5474 these:
5475 - A number. This whole line will be highlighted. The first
5476 line has number 1.
5477 - A list with one number, e.g., [23]. The whole line with this
5478 number will be highlighted.
5479 - A list with two numbers, e.g., [23, 11]. The first number is
5480 the line number, the second one is the column number (first
5481 column is 1, the value must correspond to the byte index as
5482 |col()| would return). The character at this position will
5483 be highlighted.
5484 - A list with three numbers, e.g., [23, 11, 3]. As above, but
5485 the third number gives the length of the highlight in bytes.
5486
5487 The maximum number of positions in {pos} is 8.
5488
5489 Example: >
5490 :highlight MyGroup ctermbg=green guibg=green
5491 :let m = matchaddpos("MyGroup", [[23, 24], 34])
5492< Deletion of the pattern: >
5493 :call matchdelete(m)
5494
5495< Matches added by |matchaddpos()| are returned by
5496 |getmatches()|.
5497
5498 Can also be used as a |method|: >
5499 GetGroup()->matchaddpos([23, 11])
5500
5501matcharg({nr}) *matcharg()*
5502 Selects the {nr} match item, as set with a |:match|,
5503 |:2match| or |:3match| command.
5504 Return a |List| with two elements:
5505 The name of the highlight group used
5506 The pattern used.
5507 When {nr} is not 1, 2 or 3 returns an empty |List|.
5508 When there is no match item set returns ['', ''].
5509 This is useful to save and restore a |:match|.
5510 Highlighting matches using the |:match| commands are limited
5511 to three matches. |matchadd()| does not have this limitation.
5512
5513 Can also be used as a |method|: >
5514 GetMatch()->matcharg()
5515
5516matchdelete({id} [, {win}) *matchdelete()* *E802* *E803*
5517 Deletes a match with ID {id} previously defined by |matchadd()|
5518 or one of the |:match| commands. Returns 0 if successful,
5519 otherwise -1. See example for |matchadd()|. All matches can
5520 be deleted in one operation by |clearmatches()|.
5521 If {win} is specified, use the window with this number or
5522 window ID instead of the current window.
5523
5524 Can also be used as a |method|: >
5525 GetMatch()->matchdelete()
5526
5527matchend({expr}, {pat} [, {start} [, {count}]]) *matchend()*
5528 Same as |match()|, but return the index of first character
5529 after the match. Example: >
5530 :echo matchend("testing", "ing")
5531< results in "7".
5532 *strspn()* *strcspn()*
5533 Vim doesn't have a strspn() or strcspn() function, but you can
5534 do it with matchend(): >
5535 :let span = matchend(line, '[a-zA-Z]')
5536 :let span = matchend(line, '[^a-zA-Z]')
5537< Except that -1 is returned when there are no matches.
5538
5539 The {start}, if given, has the same meaning as for |match()|. >
5540 :echo matchend("testing", "ing", 2)
5541< results in "7". >
5542 :echo matchend("testing", "ing", 5)
5543< result is "-1".
5544 When {expr} is a |List| the result is equal to |match()|.
5545
5546 Can also be used as a |method|: >
5547 GetText()->matchend('word')
5548
5549
5550matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
5551 If {list} is a list of strings, then returns a |List| with all
5552 the strings in {list} that fuzzy match {str}. The strings in
5553 the returned list are sorted based on the matching score.
5554
5555 The optional {dict} argument always supports the following
5556 items:
5557 matchseq When this item is present and {str} contains
5558 multiple words separated by white space, then
5559 returns only matches that contain the words in
5560 the given sequence.
5561
5562 If {list} is a list of dictionaries, then the optional {dict}
5563 argument supports the following additional items:
5564 key key of the item which is fuzzy matched against
5565 {str}. The value of this item should be a
5566 string.
5567 text_cb |Funcref| that will be called for every item
5568 in {list} to get the text for fuzzy matching.
5569 This should accept a dictionary item as the
5570 argument and return the text for that item to
5571 use for fuzzy matching.
5572
5573 {str} is treated as a literal string and regular expression
5574 matching is NOT supported. The maximum supported {str} length
5575 is 256.
5576
5577 When {str} has multiple words each separated by white space,
5578 then the list of strings that have all the words is returned.
5579
5580 If there are no matching strings or there is an error, then an
5581 empty list is returned. If length of {str} is greater than
5582 256, then returns an empty list.
5583
Bram Moolenaar1588bc82022-03-08 21:35:07 +00005584 Refer to |fuzzy-matching| for more information about fuzzy
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005585 matching strings.
5586
5587 Example: >
5588 :echo matchfuzzy(["clay", "crow"], "cay")
5589< results in ["clay"]. >
5590 :echo getbufinfo()->map({_, v -> v.name})->matchfuzzy("ndl")
5591< results in a list of buffer names fuzzy matching "ndl". >
5592 :echo getbufinfo()->matchfuzzy("ndl", {'key' : 'name'})
5593< results in a list of buffer information dicts with buffer
5594 names fuzzy matching "ndl". >
5595 :echo getbufinfo()->matchfuzzy("spl",
5596 \ {'text_cb' : {v -> v.name}})
5597< results in a list of buffer information dicts with buffer
5598 names fuzzy matching "spl". >
5599 :echo v:oldfiles->matchfuzzy("test")
5600< results in a list of file names fuzzy matching "test". >
5601 :let l = readfile("buffer.c")->matchfuzzy("str")
5602< results in a list of lines in "buffer.c" fuzzy matching "str". >
5603 :echo ['one two', 'two one']->matchfuzzy('two one')
5604< results in ['two one', 'one two']. >
5605 :echo ['one two', 'two one']->matchfuzzy('two one',
5606 \ {'matchseq': 1})
5607< results in ['two one'].
5608
5609matchfuzzypos({list}, {str} [, {dict}]) *matchfuzzypos()*
5610 Same as |matchfuzzy()|, but returns the list of matched
5611 strings, the list of character positions where characters
5612 in {str} matches and a list of matching scores. You can
5613 use |byteidx()| to convert a character position to a byte
5614 position.
5615
5616 If {str} matches multiple times in a string, then only the
5617 positions for the best match is returned.
5618
5619 If there are no matching strings or there is an error, then a
5620 list with three empty list items is returned.
5621
5622 Example: >
5623 :echo matchfuzzypos(['testing'], 'tsg')
5624< results in [['testing'], [[0, 2, 6]], [99]] >
5625 :echo matchfuzzypos(['clay', 'lacy'], 'la')
5626< results in [['lacy', 'clay'], [[0, 1], [1, 2]], [153, 133]] >
5627 :echo [{'text': 'hello', 'id' : 10}]->matchfuzzypos('ll', {'key' : 'text'})
5628< results in [[{'id': 10, 'text': 'hello'}], [[2, 3]], [127]]
5629
5630matchlist({expr}, {pat} [, {start} [, {count}]]) *matchlist()*
5631 Same as |match()|, but return a |List|. The first item in the
5632 list is the matched string, same as what matchstr() would
5633 return. Following items are submatches, like "\1", "\2", etc.
5634 in |:substitute|. When an optional submatch didn't match an
5635 empty string is used. Example: >
5636 echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)')
5637< Results in: ['acd', 'a', '', 'c', 'd', '', '', '', '', '']
5638 When there is no match an empty list is returned.
5639
5640 You can pass in a List, but that is not very useful.
5641
5642 Can also be used as a |method|: >
5643 GetText()->matchlist('word')
5644
5645matchstr({expr}, {pat} [, {start} [, {count}]]) *matchstr()*
5646 Same as |match()|, but return the matched string. Example: >
5647 :echo matchstr("testing", "ing")
5648< results in "ing".
5649 When there is no match "" is returned.
5650 The {start}, if given, has the same meaning as for |match()|. >
5651 :echo matchstr("testing", "ing", 2)
5652< results in "ing". >
5653 :echo matchstr("testing", "ing", 5)
5654< result is "".
5655 When {expr} is a |List| then the matching item is returned.
5656 The type isn't changed, it's not necessarily a String.
5657
5658 Can also be used as a |method|: >
5659 GetText()->matchstr('word')
5660
5661matchstrpos({expr}, {pat} [, {start} [, {count}]]) *matchstrpos()*
5662 Same as |matchstr()|, but return the matched string, the start
5663 position and the end position of the match. Example: >
5664 :echo matchstrpos("testing", "ing")
5665< results in ["ing", 4, 7].
5666 When there is no match ["", -1, -1] is returned.
5667 The {start}, if given, has the same meaning as for |match()|. >
5668 :echo matchstrpos("testing", "ing", 2)
5669< results in ["ing", 4, 7]. >
5670 :echo matchstrpos("testing", "ing", 5)
5671< result is ["", -1, -1].
5672 When {expr} is a |List| then the matching item, the index
5673 of first item where {pat} matches, the start position and the
5674 end position of the match are returned. >
5675 :echo matchstrpos([1, '__x'], '\a')
5676< result is ["x", 1, 2, 3].
5677 The type isn't changed, it's not necessarily a String.
5678
5679 Can also be used as a |method|: >
5680 GetText()->matchstrpos('word')
5681<
5682
5683 *max()*
5684max({expr}) Return the maximum value of all items in {expr}. Example: >
5685 echo max([apples, pears, oranges])
5686
5687< {expr} can be a |List| or a |Dictionary|. For a Dictionary,
5688 it returns the maximum of all values in the Dictionary.
5689 If {expr} is neither a List nor a Dictionary, or one of the
5690 items in {expr} cannot be used as a Number this results in
5691 an error. An empty |List| or |Dictionary| results in zero.
5692
5693 Can also be used as a |method|: >
5694 mylist->max()
5695
5696
5697menu_info({name} [, {mode}]) *menu_info()*
5698 Return information about the specified menu {name} in
5699 mode {mode}. The menu name should be specified without the
5700 shortcut character ('&'). If {name} is "", then the top-level
5701 menu names are returned.
5702
5703 {mode} can be one of these strings:
5704 "n" Normal
5705 "v" Visual (including Select)
5706 "o" Operator-pending
5707 "i" Insert
5708 "c" Cmd-line
5709 "s" Select
5710 "x" Visual
5711 "t" Terminal-Job
5712 "" Normal, Visual and Operator-pending
5713 "!" Insert and Cmd-line
5714 When {mode} is omitted, the modes for "" are used.
5715
5716 Returns a |Dictionary| containing the following items:
5717 accel menu item accelerator text |menu-text|
5718 display display name (name without '&')
5719 enabled v:true if this menu item is enabled
5720 Refer to |:menu-enable|
5721 icon name of the icon file (for toolbar)
5722 |toolbar-icon|
5723 iconidx index of a built-in icon
5724 modes modes for which the menu is defined. In
5725 addition to the modes mentioned above, these
5726 characters will be used:
5727 " " Normal, Visual and Operator-pending
5728 name menu item name.
5729 noremenu v:true if the {rhs} of the menu item is not
5730 remappable else v:false.
5731 priority menu order priority |menu-priority|
5732 rhs right-hand-side of the menu item. The returned
5733 string has special characters translated like
5734 in the output of the ":menu" command listing.
5735 When the {rhs} of a menu item is empty, then
5736 "<Nop>" is returned.
5737 script v:true if script-local remapping of {rhs} is
5738 allowed else v:false. See |:menu-script|.
5739 shortcut shortcut key (character after '&' in
5740 the menu name) |menu-shortcut|
5741 silent v:true if the menu item is created
5742 with <silent> argument |:menu-silent|
5743 submenus |List| containing the names of
5744 all the submenus. Present only if the menu
5745 item has submenus.
5746
5747 Returns an empty dictionary if the menu item is not found.
5748
5749 Examples: >
5750 :echo menu_info('Edit.Cut')
5751 :echo menu_info('File.Save', 'n')
5752
5753 " Display the entire menu hierarchy in a buffer
5754 func ShowMenu(name, pfx)
5755 let m = menu_info(a:name)
5756 call append(line('$'), a:pfx .. m.display)
5757 for child in m->get('submenus', [])
5758 call ShowMenu(a:name .. '.' .. escape(child, '.'),
5759 \ a:pfx .. ' ')
5760 endfor
5761 endfunc
5762 new
5763 for topmenu in menu_info('').submenus
5764 call ShowMenu(topmenu, '')
5765 endfor
5766<
5767 Can also be used as a |method|: >
5768 GetMenuName()->menu_info('v')
5769
5770
5771< *min()*
5772min({expr}) Return the minimum value of all items in {expr}. Example: >
5773 echo min([apples, pears, oranges])
5774
5775< {expr} can be a |List| or a |Dictionary|. For a Dictionary,
5776 it returns the minimum of all values in the Dictionary.
5777 If {expr} is neither a List nor a Dictionary, or one of the
5778 items in {expr} cannot be used as a Number this results in
5779 an error. An empty |List| or |Dictionary| results in zero.
5780
5781 Can also be used as a |method|: >
5782 mylist->min()
5783
5784< *mkdir()* *E739*
5785mkdir({name} [, {path} [, {prot}]])
5786 Create directory {name}.
5787
5788 If {path} is "p" then intermediate directories are created as
5789 necessary. Otherwise it must be "".
5790
5791 If {prot} is given it is used to set the protection bits of
5792 the new directory. The default is 0o755 (rwxr-xr-x: r/w for
5793 the user, readable for others). Use 0o700 to make it
5794 unreadable for others. This is only used for the last part of
5795 {name}. Thus if you create /tmp/foo/bar then /tmp/foo will be
5796 created with 0o755.
5797 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005798 :call mkdir($HOME .. "/tmp/foo/bar", "p", 0o700)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005799
5800< This function is not available in the |sandbox|.
5801
5802 There is no error if the directory already exists and the "p"
5803 flag is passed (since patch 8.0.1708). However, without the
5804 "p" option the call will fail.
5805
5806 The function result is a Number, which is TRUE if the call was
5807 successful or FALSE if the directory creation failed or partly
5808 failed.
5809
5810 Not available on all systems. To check use: >
5811 :if exists("*mkdir")
5812
5813< Can also be used as a |method|: >
5814 GetName()->mkdir()
5815<
5816 *mode()*
5817mode([expr]) Return a string that indicates the current mode.
5818 If [expr] is supplied and it evaluates to a non-zero Number or
5819 a non-empty String (|non-zero-arg|), then the full mode is
5820 returned, otherwise only the first letter is returned.
5821 Also see |state()|.
5822
5823 n Normal
5824 no Operator-pending
5825 nov Operator-pending (forced characterwise |o_v|)
5826 noV Operator-pending (forced linewise |o_V|)
5827 noCTRL-V Operator-pending (forced blockwise |o_CTRL-V|);
5828 CTRL-V is one character
5829 niI Normal using |i_CTRL-O| in |Insert-mode|
5830 niR Normal using |i_CTRL-O| in |Replace-mode|
5831 niV Normal using |i_CTRL-O| in |Virtual-Replace-mode|
5832 nt Terminal-Normal (insert goes to Terminal-Job mode)
5833 v Visual by character
5834 vs Visual by character using |v_CTRL-O| in Select mode
5835 V Visual by line
5836 Vs Visual by line using |v_CTRL-O| in Select mode
5837 CTRL-V Visual blockwise
5838 CTRL-Vs Visual blockwise using |v_CTRL-O| in Select mode
5839 s Select by character
5840 S Select by line
5841 CTRL-S Select blockwise
5842 i Insert
5843 ic Insert mode completion |compl-generic|
5844 ix Insert mode |i_CTRL-X| completion
5845 R Replace |R|
5846 Rc Replace mode completion |compl-generic|
5847 Rx Replace mode |i_CTRL-X| completion
5848 Rv Virtual Replace |gR|
5849 Rvc Virtual Replace mode completion |compl-generic|
5850 Rvx Virtual Replace mode |i_CTRL-X| completion
5851 c Command-line editing
5852 cv Vim Ex mode |gQ|
5853 ce Normal Ex mode |Q|
5854 r Hit-enter prompt
5855 rm The -- more -- prompt
5856 r? A |:confirm| query of some sort
5857 ! Shell or external command is executing
5858 t Terminal-Job mode: keys go to the job
5859
5860 This is useful in the 'statusline' option or when used
5861 with |remote_expr()| In most other places it always returns
5862 "c" or "n".
5863 Note that in the future more modes and more specific modes may
5864 be added. It's better not to compare the whole string but only
5865 the leading character(s).
5866 Also see |visualmode()|.
5867
5868 Can also be used as a |method|: >
5869 DoFull()->mode()
5870
5871mzeval({expr}) *mzeval()*
5872 Evaluate MzScheme expression {expr} and return its result
5873 converted to Vim data structures.
5874 Numbers and strings are returned as they are.
5875 Pairs (including lists and improper lists) and vectors are
5876 returned as Vim |Lists|.
5877 Hash tables are represented as Vim |Dictionary| type with keys
5878 converted to strings.
5879 All other types are converted to string with display function.
5880 Examples: >
5881 :mz (define l (list 1 2 3))
5882 :mz (define h (make-hash)) (hash-set! h "list" l)
5883 :echo mzeval("l")
5884 :echo mzeval("h")
5885<
5886 Note that in a `:def` function local variables are not visible
5887 to {expr}.
5888
5889 Can also be used as a |method|: >
5890 GetExpr()->mzeval()
5891<
5892 {only available when compiled with the |+mzscheme| feature}
5893
5894nextnonblank({lnum}) *nextnonblank()*
5895 Return the line number of the first line at or below {lnum}
5896 that is not blank. Example: >
5897 if getline(nextnonblank(1)) =~ "Java"
5898< When {lnum} is invalid or there is no non-blank line at or
5899 below it, zero is returned.
5900 {lnum} is used like with |getline()|.
5901 See also |prevnonblank()|.
5902
5903 Can also be used as a |method|: >
5904 GetLnum()->nextnonblank()
5905
5906nr2char({expr} [, {utf8}]) *nr2char()*
5907 Return a string with a single character, which has the number
5908 value {expr}. Examples: >
5909 nr2char(64) returns "@"
5910 nr2char(32) returns " "
5911< When {utf8} is omitted or zero, the current 'encoding' is used.
5912 Example for "utf-8": >
5913 nr2char(300) returns I with bow character
5914< When {utf8} is TRUE, always return UTF-8 characters.
5915 Note that a NUL character in the file is specified with
5916 nr2char(10), because NULs are represented with newline
5917 characters. nr2char(0) is a real NUL and terminates the
5918 string, thus results in an empty string.
5919 To turn a list of character numbers into a string: >
5920 let list = [65, 66, 67]
5921 let str = join(map(list, {_, val -> nr2char(val)}), '')
5922< Result: "ABC"
5923
5924 Can also be used as a |method|: >
5925 GetNumber()->nr2char()
5926
5927or({expr}, {expr}) *or()*
5928 Bitwise OR on the two arguments. The arguments are converted
5929 to a number. A List, Dict or Float argument causes an error.
5930 Example: >
5931 :let bits = or(bits, 0x80)
5932< Can also be used as a |method|: >
5933 :let bits = bits->or(0x80)
5934
5935
5936pathshorten({path} [, {len}]) *pathshorten()*
5937 Shorten directory names in the path {path} and return the
5938 result. The tail, the file name, is kept as-is. The other
5939 components in the path are reduced to {len} letters in length.
5940 If {len} is omitted or smaller than 1 then 1 is used (single
5941 letters). Leading '~' and '.' characters are kept. Examples: >
5942 :echo pathshorten('~/.vim/autoload/myfile.vim')
5943< ~/.v/a/myfile.vim ~
5944>
5945 :echo pathshorten('~/.vim/autoload/myfile.vim', 2)
5946< ~/.vi/au/myfile.vim ~
5947 It doesn't matter if the path exists or not.
5948
5949 Can also be used as a |method|: >
5950 GetDirectories()->pathshorten()
5951
5952perleval({expr}) *perleval()*
5953 Evaluate Perl expression {expr} in scalar context and return
5954 its result converted to Vim data structures. If value can't be
5955 converted, it is returned as a string Perl representation.
5956 Note: If you want an array or hash, {expr} must return a
5957 reference to it.
5958 Example: >
5959 :echo perleval('[1 .. 4]')
5960< [1, 2, 3, 4]
5961
5962 Note that in a `:def` function local variables are not visible
5963 to {expr}.
5964
5965 Can also be used as a |method|: >
5966 GetExpr()->perleval()
5967
5968< {only available when compiled with the |+perl| feature}
5969
5970
5971popup_ functions are documented here: |popup-functions|
5972
5973
5974pow({x}, {y}) *pow()*
5975 Return the power of {x} to the exponent {y} as a |Float|.
5976 {x} and {y} must evaluate to a |Float| or a |Number|.
5977 Examples: >
5978 :echo pow(3, 3)
5979< 27.0 >
5980 :echo pow(2, 16)
5981< 65536.0 >
5982 :echo pow(32, 0.20)
5983< 2.0
5984
5985 Can also be used as a |method|: >
5986 Compute()->pow(3)
5987<
5988 {only available when compiled with the |+float| feature}
5989
5990prevnonblank({lnum}) *prevnonblank()*
5991 Return the line number of the first line at or above {lnum}
5992 that is not blank. Example: >
5993 let ind = indent(prevnonblank(v:lnum - 1))
5994< When {lnum} is invalid or there is no non-blank line at or
5995 above it, zero is returned.
5996 {lnum} is used like with |getline()|.
5997 Also see |nextnonblank()|.
5998
5999 Can also be used as a |method|: >
6000 GetLnum()->prevnonblank()
6001
6002printf({fmt}, {expr1} ...) *printf()*
6003 Return a String with {fmt}, where "%" items are replaced by
6004 the formatted form of their respective arguments. Example: >
6005 printf("%4d: E%d %.30s", lnum, errno, msg)
6006< May result in:
6007 " 99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~
6008
6009 When used as a |method| the base is passed as the second
6010 argument: >
6011 Compute()->printf("result: %d")
6012
6013< Often used items are:
6014 %s string
6015 %6S string right-aligned in 6 display cells
6016 %6s string right-aligned in 6 bytes
6017 %.9s string truncated to 9 bytes
6018 %c single byte
6019 %d decimal number
6020 %5d decimal number padded with spaces to 5 characters
6021 %x hex number
6022 %04x hex number padded with zeros to at least 4 characters
6023 %X hex number using upper case letters
6024 %o octal number
6025 %08b binary number padded with zeros to at least 8 chars
6026 %f floating point number as 12.23, inf, -inf or nan
6027 %F floating point number as 12.23, INF, -INF or NAN
6028 %e floating point number as 1.23e3, inf, -inf or nan
6029 %E floating point number as 1.23E3, INF, -INF or NAN
6030 %g floating point number, as %f or %e depending on value
6031 %G floating point number, as %F or %E depending on value
6032 %% the % character itself
6033
6034 Conversion specifications start with '%' and end with the
6035 conversion type. All other characters are copied unchanged to
6036 the result.
6037
6038 The "%" starts a conversion specification. The following
6039 arguments appear in sequence:
6040
6041 % [flags] [field-width] [.precision] type
6042
6043 flags
6044 Zero or more of the following flags:
6045
6046 # The value should be converted to an "alternate
6047 form". For c, d, and s conversions, this option
6048 has no effect. For o conversions, the precision
6049 of the number is increased to force the first
6050 character of the output string to a zero (except
6051 if a zero value is printed with an explicit
6052 precision of zero).
6053 For b and B conversions, a non-zero result has
6054 the string "0b" (or "0B" for B conversions)
6055 prepended to it.
6056 For x and X conversions, a non-zero result has
6057 the string "0x" (or "0X" for X conversions)
6058 prepended to it.
6059
6060 0 (zero) Zero padding. For all conversions the converted
6061 value is padded on the left with zeros rather
6062 than blanks. If a precision is given with a
6063 numeric conversion (d, b, B, o, x, and X), the 0
6064 flag is ignored.
6065
6066 - A negative field width flag; the converted value
6067 is to be left adjusted on the field boundary.
6068 The converted value is padded on the right with
6069 blanks, rather than on the left with blanks or
6070 zeros. A - overrides a 0 if both are given.
6071
6072 ' ' (space) A blank should be left before a positive
6073 number produced by a signed conversion (d).
6074
6075 + A sign must always be placed before a number
6076 produced by a signed conversion. A + overrides
6077 a space if both are used.
6078
6079 field-width
6080 An optional decimal digit string specifying a minimum
6081 field width. If the converted value has fewer bytes
6082 than the field width, it will be padded with spaces on
6083 the left (or right, if the left-adjustment flag has
6084 been given) to fill out the field width. For the S
6085 conversion the count is in cells.
6086
6087 .precision
6088 An optional precision, in the form of a period '.'
6089 followed by an optional digit string. If the digit
6090 string is omitted, the precision is taken as zero.
6091 This gives the minimum number of digits to appear for
6092 d, o, x, and X conversions, the maximum number of
6093 bytes to be printed from a string for s conversions,
6094 or the maximum number of cells to be printed from a
6095 string for S conversions.
6096 For floating point it is the number of digits after
6097 the decimal point.
6098
6099 type
6100 A character that specifies the type of conversion to
6101 be applied, see below.
6102
6103 A field width or precision, or both, may be indicated by an
6104 asterisk '*' instead of a digit string. In this case, a
6105 Number argument supplies the field width or precision. A
6106 negative field width is treated as a left adjustment flag
6107 followed by a positive field width; a negative precision is
6108 treated as though it were missing. Example: >
6109 :echo printf("%d: %.*s", nr, width, line)
6110< This limits the length of the text used from "line" to
6111 "width" bytes.
6112
6113 The conversion specifiers and their meanings are:
6114
6115 *printf-d* *printf-b* *printf-B* *printf-o*
6116 *printf-x* *printf-X*
6117 dbBoxX The Number argument is converted to signed decimal
6118 (d), unsigned binary (b and B), unsigned octal (o), or
6119 unsigned hexadecimal (x and X) notation. The letters
6120 "abcdef" are used for x conversions; the letters
6121 "ABCDEF" are used for X conversions.
6122 The precision, if any, gives the minimum number of
6123 digits that must appear; if the converted value
6124 requires fewer digits, it is padded on the left with
6125 zeros.
6126 In no case does a non-existent or small field width
6127 cause truncation of a numeric field; if the result of
6128 a conversion is wider than the field width, the field
6129 is expanded to contain the conversion result.
6130 The 'h' modifier indicates the argument is 16 bits.
6131 The 'l' modifier indicates the argument is 32 bits.
6132 The 'L' modifier indicates the argument is 64 bits.
6133 Generally, these modifiers are not useful. They are
6134 ignored when type is known from the argument.
6135
6136 i alias for d
6137 D alias for ld
6138 U alias for lu
6139 O alias for lo
6140
6141 *printf-c*
6142 c The Number argument is converted to a byte, and the
6143 resulting character is written.
6144
6145 *printf-s*
6146 s The text of the String argument is used. If a
6147 precision is specified, no more bytes than the number
6148 specified are used.
6149 If the argument is not a String type, it is
6150 automatically converted to text with the same format
6151 as ":echo".
6152 *printf-S*
6153 S The text of the String argument is used. If a
6154 precision is specified, no more display cells than the
6155 number specified are used.
6156
6157 *printf-f* *E807*
6158 f F The Float argument is converted into a string of the
6159 form 123.456. The precision specifies the number of
6160 digits after the decimal point. When the precision is
6161 zero the decimal point is omitted. When the precision
6162 is not specified 6 is used. A really big number
6163 (out of range or dividing by zero) results in "inf"
6164 or "-inf" with %f (INF or -INF with %F).
6165 "0.0 / 0.0" results in "nan" with %f (NAN with %F).
6166 Example: >
6167 echo printf("%.2f", 12.115)
6168< 12.12
6169 Note that roundoff depends on the system libraries.
6170 Use |round()| when in doubt.
6171
6172 *printf-e* *printf-E*
6173 e E The Float argument is converted into a string of the
6174 form 1.234e+03 or 1.234E+03 when using 'E'. The
6175 precision specifies the number of digits after the
6176 decimal point, like with 'f'.
6177
6178 *printf-g* *printf-G*
6179 g G The Float argument is converted like with 'f' if the
6180 value is between 0.001 (inclusive) and 10000000.0
6181 (exclusive). Otherwise 'e' is used for 'g' and 'E'
6182 for 'G'. When no precision is specified superfluous
6183 zeroes and '+' signs are removed, except for the zero
6184 immediately after the decimal point. Thus 10000000.0
6185 results in 1.0e7.
6186
6187 *printf-%*
6188 % A '%' is written. No argument is converted. The
6189 complete conversion specification is "%%".
6190
6191 When a Number argument is expected a String argument is also
6192 accepted and automatically converted.
6193 When a Float or String argument is expected a Number argument
6194 is also accepted and automatically converted.
6195 Any other argument type results in an error message.
6196
6197 *E766* *E767*
6198 The number of {exprN} arguments must exactly match the number
6199 of "%" items. If there are not sufficient or too many
6200 arguments an error is given. Up to 18 arguments can be used.
6201
6202
6203prompt_getprompt({buf}) *prompt_getprompt()*
6204 Returns the effective prompt text for buffer {buf}. {buf} can
6205 be a buffer name or number. See |prompt-buffer|.
6206
6207 If the buffer doesn't exist or isn't a prompt buffer, an empty
6208 string is returned.
6209
6210 Can also be used as a |method|: >
6211 GetBuffer()->prompt_getprompt()
6212
6213< {only available when compiled with the |+channel| feature}
6214
6215
6216prompt_setcallback({buf}, {expr}) *prompt_setcallback()*
6217 Set prompt callback for buffer {buf} to {expr}. When {expr}
6218 is an empty string the callback is removed. This has only
6219 effect if {buf} has 'buftype' set to "prompt".
6220
6221 The callback is invoked when pressing Enter. The current
6222 buffer will always be the prompt buffer. A new line for a
6223 prompt is added before invoking the callback, thus the prompt
6224 for which the callback was invoked will be in the last but one
6225 line.
6226 If the callback wants to add text to the buffer, it must
6227 insert it above the last line, since that is where the current
6228 prompt is. This can also be done asynchronously.
6229 The callback is invoked with one argument, which is the text
6230 that was entered at the prompt. This can be an empty string
6231 if the user only typed Enter.
6232 Example: >
6233 call prompt_setcallback(bufnr(), function('s:TextEntered'))
6234 func s:TextEntered(text)
6235 if a:text == 'exit' || a:text == 'quit'
6236 stopinsert
6237 close
6238 else
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006239 call append(line('$') - 1, 'Entered: "' .. a:text .. '"')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006240 " Reset 'modified' to allow the buffer to be closed.
6241 set nomodified
6242 endif
6243 endfunc
6244
6245< Can also be used as a |method|: >
6246 GetBuffer()->prompt_setcallback(callback)
6247
6248< {only available when compiled with the |+channel| feature}
6249
6250prompt_setinterrupt({buf}, {expr}) *prompt_setinterrupt()*
6251 Set a callback for buffer {buf} to {expr}. When {expr} is an
6252 empty string the callback is removed. This has only effect if
6253 {buf} has 'buftype' set to "prompt".
6254
6255 This callback will be invoked when pressing CTRL-C in Insert
6256 mode. Without setting a callback Vim will exit Insert mode,
6257 as in any buffer.
6258
6259 Can also be used as a |method|: >
6260 GetBuffer()->prompt_setinterrupt(callback)
6261
6262< {only available when compiled with the |+channel| feature}
6263
6264prompt_setprompt({buf}, {text}) *prompt_setprompt()*
6265 Set prompt for buffer {buf} to {text}. You most likely want
6266 {text} to end in a space.
6267 The result is only visible if {buf} has 'buftype' set to
6268 "prompt". Example: >
6269 call prompt_setprompt(bufnr(), 'command: ')
6270<
6271 Can also be used as a |method|: >
6272 GetBuffer()->prompt_setprompt('command: ')
6273
6274< {only available when compiled with the |+channel| feature}
6275
6276prop_ functions are documented here: |text-prop-functions|
6277
6278pum_getpos() *pum_getpos()*
6279 If the popup menu (see |ins-completion-menu|) is not visible,
6280 returns an empty |Dictionary|, otherwise, returns a
6281 |Dictionary| with the following keys:
6282 height nr of items visible
6283 width screen cells
6284 row top screen row (0 first row)
6285 col leftmost screen column (0 first col)
6286 size total nr of items
6287 scrollbar |TRUE| if scrollbar is visible
6288
6289 The values are the same as in |v:event| during
6290 |CompleteChanged|.
6291
6292pumvisible() *pumvisible()*
6293 Returns non-zero when the popup menu is visible, zero
6294 otherwise. See |ins-completion-menu|.
6295 This can be used to avoid some things that would remove the
6296 popup menu.
6297
6298py3eval({expr}) *py3eval()*
6299 Evaluate Python expression {expr} and return its result
6300 converted to Vim data structures.
6301 Numbers and strings are returned as they are (strings are
6302 copied though, Unicode strings are additionally converted to
6303 'encoding').
6304 Lists are represented as Vim |List| type.
6305 Dictionaries are represented as Vim |Dictionary| type with
6306 keys converted to strings.
6307 Note that in a `:def` function local variables are not visible
6308 to {expr}.
6309
6310 Can also be used as a |method|: >
6311 GetExpr()->py3eval()
6312
6313< {only available when compiled with the |+python3| feature}
6314
6315 *E858* *E859*
6316pyeval({expr}) *pyeval()*
6317 Evaluate Python expression {expr} and return its result
6318 converted to Vim data structures.
6319 Numbers and strings are returned as they are (strings are
6320 copied though).
6321 Lists are represented as Vim |List| type.
6322 Dictionaries are represented as Vim |Dictionary| type,
6323 non-string keys result in error.
6324 Note that in a `:def` function local variables are not visible
6325 to {expr}.
6326
6327 Can also be used as a |method|: >
6328 GetExpr()->pyeval()
6329
6330< {only available when compiled with the |+python| feature}
6331
6332pyxeval({expr}) *pyxeval()*
6333 Evaluate Python expression {expr} and return its result
6334 converted to Vim data structures.
6335 Uses Python 2 or 3, see |python_x| and 'pyxversion'.
6336 See also: |pyeval()|, |py3eval()|
6337
6338 Can also be used as a |method|: >
6339 GetExpr()->pyxeval()
6340
6341< {only available when compiled with the |+python| or the
6342 |+python3| feature}
6343
6344rand([{expr}]) *rand()* *random*
6345 Return a pseudo-random Number generated with an xoshiro128**
6346 algorithm using seed {expr}. The returned number is 32 bits,
6347 also on 64 bits systems, for consistency.
6348 {expr} can be initialized by |srand()| and will be updated by
6349 rand(). If {expr} is omitted, an internal seed value is used
6350 and updated.
6351
6352 Examples: >
6353 :echo rand()
6354 :let seed = srand()
6355 :echo rand(seed)
6356 :echo rand(seed) % 16 " random number 0 - 15
6357<
6358
6359 *E726* *E727*
6360range({expr} [, {max} [, {stride}]]) *range()*
6361 Returns a |List| with Numbers:
6362 - If only {expr} is specified: [0, 1, ..., {expr} - 1]
6363 - If {max} is specified: [{expr}, {expr} + 1, ..., {max}]
6364 - If {stride} is specified: [{expr}, {expr} + {stride}, ...,
6365 {max}] (increasing {expr} with {stride} each time, not
6366 producing a value past {max}).
6367 When the maximum is one before the start the result is an
6368 empty list. When the maximum is more than one before the
6369 start this is an error.
6370 Examples: >
6371 range(4) " [0, 1, 2, 3]
6372 range(2, 4) " [2, 3, 4]
6373 range(2, 9, 3) " [2, 5, 8]
6374 range(2, -2, -1) " [2, 1, 0, -1, -2]
6375 range(0) " []
6376 range(2, 0) " error!
6377<
6378 Can also be used as a |method|: >
6379 GetExpr()->range()
6380<
6381
6382readblob({fname}) *readblob()*
6383 Read file {fname} in binary mode and return a |Blob|.
6384 When the file can't be opened an error message is given and
6385 the result is an empty |Blob|.
6386 Also see |readfile()| and |writefile()|.
6387
6388
6389readdir({directory} [, {expr} [, {dict}]]) *readdir()*
6390 Return a list with file and directory names in {directory}.
6391 You can also use |glob()| if you don't need to do complicated
6392 things, such as limiting the number of matches.
6393 The list will be sorted (case sensitive), see the {dict}
6394 argument below for changing the sort order.
6395
6396 When {expr} is omitted all entries are included.
6397 When {expr} is given, it is evaluated to check what to do:
6398 If {expr} results in -1 then no further entries will
6399 be handled.
6400 If {expr} results in 0 then this entry will not be
6401 added to the list.
6402 If {expr} results in 1 then this entry will be added
6403 to the list.
6404 The entries "." and ".." are always excluded.
6405 Each time {expr} is evaluated |v:val| is set to the entry name.
6406 When {expr} is a function the name is passed as the argument.
6407 For example, to get a list of files ending in ".txt": >
6408 readdir(dirname, {n -> n =~ '.txt$'})
6409< To skip hidden and backup files: >
6410 readdir(dirname, {n -> n !~ '^\.\|\~$'})
Bram Moolenaar6f4754b2022-01-23 12:07:04 +00006411< *E857*
6412 The optional {dict} argument allows for further custom
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006413 values. Currently this is used to specify if and how sorting
6414 should be performed. The dict can have the following members:
6415
6416 sort How to sort the result returned from the system.
6417 Valid values are:
6418 "none" do not sort (fastest method)
6419 "case" sort case sensitive (byte value of
6420 each character, technically, using
6421 strcmp()) (default)
6422 "icase" sort case insensitive (technically
6423 using strcasecmp())
6424 "collate" sort using the collation order
6425 of the "POSIX" or "C" |locale|
6426 (technically using strcoll())
6427 Other values are silently ignored.
6428
6429 For example, to get a list of all files in the current
6430 directory without sorting the individual entries: >
6431 readdir('.', '1', #{sort: 'none'})
6432< If you want to get a directory tree: >
6433 function! s:tree(dir)
6434 return {a:dir : map(readdir(a:dir),
6435 \ {_, x -> isdirectory(x) ?
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006436 \ {x : s:tree(a:dir .. '/' .. x)} : x})}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006437 endfunction
6438 echo s:tree(".")
6439<
6440 Can also be used as a |method|: >
6441 GetDirName()->readdir()
6442<
6443readdirex({directory} [, {expr} [, {dict}]]) *readdirex()*
6444 Extended version of |readdir()|.
6445 Return a list of Dictionaries with file and directory
6446 information in {directory}.
6447 This is useful if you want to get the attributes of file and
6448 directory at the same time as getting a list of a directory.
6449 This is much faster than calling |readdir()| then calling
6450 |getfperm()|, |getfsize()|, |getftime()| and |getftype()| for
6451 each file and directory especially on MS-Windows.
6452 The list will by default be sorted by name (case sensitive),
6453 the sorting can be changed by using the optional {dict}
6454 argument, see |readdir()|.
6455
6456 The Dictionary for file and directory information has the
6457 following items:
6458 group Group name of the entry. (Only on Unix)
6459 name Name of the entry.
6460 perm Permissions of the entry. See |getfperm()|.
6461 size Size of the entry. See |getfsize()|.
6462 time Timestamp of the entry. See |getftime()|.
6463 type Type of the entry.
6464 On Unix, almost same as |getftype()| except:
6465 Symlink to a dir "linkd"
6466 Other symlink "link"
6467 On MS-Windows:
6468 Normal file "file"
6469 Directory "dir"
6470 Junction "junction"
6471 Symlink to a dir "linkd"
6472 Other symlink "link"
6473 Other reparse point "reparse"
6474 user User name of the entry's owner. (Only on Unix)
6475 On Unix, if the entry is a symlink, the Dictionary includes
6476 the information of the target (except the "type" item).
6477 On MS-Windows, it includes the information of the symlink
6478 itself because of performance reasons.
6479
6480 When {expr} is omitted all entries are included.
6481 When {expr} is given, it is evaluated to check what to do:
6482 If {expr} results in -1 then no further entries will
6483 be handled.
6484 If {expr} results in 0 then this entry will not be
6485 added to the list.
6486 If {expr} results in 1 then this entry will be added
6487 to the list.
6488 The entries "." and ".." are always excluded.
6489 Each time {expr} is evaluated |v:val| is set to a |Dictionary|
6490 of the entry.
6491 When {expr} is a function the entry is passed as the argument.
6492 For example, to get a list of files ending in ".txt": >
6493 readdirex(dirname, {e -> e.name =~ '.txt$'})
6494<
6495 For example, to get a list of all files in the current
6496 directory without sorting the individual entries: >
6497 readdirex(dirname, '1', #{sort: 'none'})
6498
6499<
6500 Can also be used as a |method|: >
6501 GetDirName()->readdirex()
6502<
6503
6504 *readfile()*
6505readfile({fname} [, {type} [, {max}]])
6506 Read file {fname} and return a |List|, each line of the file
6507 as an item. Lines are broken at NL characters. Macintosh
6508 files separated with CR will result in a single long line
6509 (unless a NL appears somewhere).
6510 All NUL characters are replaced with a NL character.
6511 When {type} contains "b" binary mode is used:
6512 - When the last line ends in a NL an extra empty list item is
6513 added.
6514 - No CR characters are removed.
6515 Otherwise:
6516 - CR characters that appear before a NL are removed.
6517 - Whether the last line ends in a NL or not does not matter.
6518 - When 'encoding' is Unicode any UTF-8 byte order mark is
6519 removed from the text.
6520 When {max} is given this specifies the maximum number of lines
6521 to be read. Useful if you only want to check the first ten
6522 lines of a file: >
6523 :for line in readfile(fname, '', 10)
6524 : if line =~ 'Date' | echo line | endif
6525 :endfor
6526< When {max} is negative -{max} lines from the end of the file
6527 are returned, or as many as there are.
6528 When {max} is zero the result is an empty list.
6529 Note that without {max} the whole file is read into memory.
6530 Also note that there is no recognition of encoding. Read a
6531 file into a buffer if you need to.
6532 Deprecated (use |readblob()| instead): When {type} contains
6533 "B" a |Blob| is returned with the binary data of the file
6534 unmodified.
6535 When the file can't be opened an error message is given and
6536 the result is an empty list.
6537 Also see |writefile()|.
6538
6539 Can also be used as a |method|: >
6540 GetFileName()->readfile()
6541
6542reduce({object}, {func} [, {initial}]) *reduce()* *E998*
6543 {func} is called for every item in {object}, which can be a
6544 |String|, |List| or a |Blob|. {func} is called with two
6545 arguments: the result so far and current item. After
Bram Moolenaarf10911e2022-01-29 22:20:48 +00006546 processing all items the result is returned. *E1132*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006547
6548 {initial} is the initial result. When omitted, the first item
6549 in {object} is used and {func} is first called for the second
6550 item. If {initial} is not given and {object} is empty no
6551 result can be computed, an E998 error is given.
6552
6553 Examples: >
6554 echo reduce([1, 3, 5], { acc, val -> acc + val })
6555 echo reduce(['x', 'y'], { acc, val -> acc .. val }, 'a')
6556 echo reduce(0z1122, { acc, val -> 2 * acc + val })
6557 echo reduce('xyz', { acc, val -> acc .. ',' .. val })
6558<
6559 Can also be used as a |method|: >
6560 echo mylist->reduce({ acc, val -> acc + val }, 0)
6561
6562
6563reg_executing() *reg_executing()*
6564 Returns the single letter name of the register being executed.
6565 Returns an empty string when no register is being executed.
6566 See |@|.
6567
6568reg_recording() *reg_recording()*
6569 Returns the single letter name of the register being recorded.
6570 Returns an empty string when not recording. See |q|.
6571
6572reltime([{start} [, {end}]]) *reltime()*
6573 Return an item that represents a time value. The item is a
6574 list with items that depend on the system. In Vim 9 script
6575 list<any> can be used.
6576 The item can be passed to |reltimestr()| to convert it to a
6577 string or |reltimefloat()| to convert to a Float.
6578
6579 Without an argument reltime() returns the current time.
6580 With one argument is returns the time passed since the time
6581 specified in the argument.
6582 With two arguments it returns the time passed between {start}
6583 and {end}.
6584
6585 The {start} and {end} arguments must be values returned by
6586 reltime(). If there is an error zero is returned in legacy
6587 script, in Vim9 script an error is given.
6588
6589 Can also be used as a |method|: >
6590 GetStart()->reltime()
6591<
6592 {only available when compiled with the |+reltime| feature}
6593
6594reltimefloat({time}) *reltimefloat()*
6595 Return a Float that represents the time value of {time}.
6596 Example: >
6597 let start = reltime()
6598 call MyFunction()
6599 let seconds = reltimefloat(reltime(start))
6600< See the note of reltimestr() about overhead.
6601 Also see |profiling|.
6602 If there is an error 0.0 is returned in legacy script, in Vim9
6603 script an error is given.
6604
6605 Can also be used as a |method|: >
6606 reltime(start)->reltimefloat()
6607
6608< {only available when compiled with the |+reltime| feature}
6609
6610reltimestr({time}) *reltimestr()*
6611 Return a String that represents the time value of {time}.
6612 This is the number of seconds, a dot and the number of
6613 microseconds. Example: >
6614 let start = reltime()
6615 call MyFunction()
6616 echo reltimestr(reltime(start))
6617< Note that overhead for the commands will be added to the time.
6618 The accuracy depends on the system.
6619 Leading spaces are used to make the string align nicely. You
6620 can use split() to remove it. >
6621 echo split(reltimestr(reltime(start)))[0]
6622< Also see |profiling|.
6623 If there is an error an empty string is returned in legacy
6624 script, in Vim9 script an error is given.
6625
6626 Can also be used as a |method|: >
6627 reltime(start)->reltimestr()
6628
6629< {only available when compiled with the |+reltime| feature}
6630
6631 *remote_expr()* *E449*
6632remote_expr({server}, {string} [, {idvar} [, {timeout}]])
Bram Moolenaar944697a2022-02-20 19:48:20 +00006633 Send the {string} to {server}. The {server} argument is a
6634 string, also see |{server}|.
6635
6636 The string is sent as an expression and the result is returned
6637 after evaluation. The result must be a String or a |List|. A
6638 |List| is turned into a String by joining the items with a
6639 line break in between (not at the end), like with join(expr,
6640 "\n").
6641
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006642 If {idvar} is present and not empty, it is taken as the name
6643 of a variable and a {serverid} for later use with
6644 |remote_read()| is stored there.
Bram Moolenaar944697a2022-02-20 19:48:20 +00006645
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006646 If {timeout} is given the read times out after this many
6647 seconds. Otherwise a timeout of 600 seconds is used.
Bram Moolenaar944697a2022-02-20 19:48:20 +00006648
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006649 See also |clientserver| |RemoteReply|.
6650 This function is not available in the |sandbox|.
6651 {only available when compiled with the |+clientserver| feature}
6652 Note: Any errors will cause a local error message to be issued
6653 and the result will be the empty string.
6654
6655 Variables will be evaluated in the global namespace,
6656 independent of a function currently being active. Except
6657 when in debug mode, then local function variables and
6658 arguments can be evaluated.
6659
6660 Examples: >
6661 :echo remote_expr("gvim", "2+2")
6662 :echo remote_expr("gvim1", "b:current_syntax")
6663<
6664 Can also be used as a |method|: >
6665 ServerName()->remote_expr(expr)
6666
6667remote_foreground({server}) *remote_foreground()*
6668 Move the Vim server with the name {server} to the foreground.
Bram Moolenaar944697a2022-02-20 19:48:20 +00006669 The {server} argument is a string, also see |{server}|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006670 This works like: >
6671 remote_expr({server}, "foreground()")
6672< Except that on Win32 systems the client does the work, to work
6673 around the problem that the OS doesn't always allow the server
6674 to bring itself to the foreground.
6675 Note: This does not restore the window if it was minimized,
6676 like foreground() does.
6677 This function is not available in the |sandbox|.
6678
6679 Can also be used as a |method|: >
6680 ServerName()->remote_foreground()
6681
6682< {only in the Win32, Athena, Motif and GTK GUI versions and the
6683 Win32 console version}
6684
6685
6686remote_peek({serverid} [, {retvar}]) *remote_peek()*
6687 Returns a positive number if there are available strings
6688 from {serverid}. Copies any reply string into the variable
6689 {retvar} if specified. {retvar} must be a string with the
6690 name of a variable.
6691 Returns zero if none are available.
6692 Returns -1 if something is wrong.
6693 See also |clientserver|.
6694 This function is not available in the |sandbox|.
6695 {only available when compiled with the |+clientserver| feature}
6696 Examples: >
6697 :let repl = ""
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006698 :echo "PEEK: " .. remote_peek(id, "repl") .. ": " .. repl
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006699
6700< Can also be used as a |method|: >
6701 ServerId()->remote_peek()
6702
6703remote_read({serverid}, [{timeout}]) *remote_read()*
6704 Return the oldest available reply from {serverid} and consume
6705 it. Unless a {timeout} in seconds is given, it blocks until a
6706 reply is available.
6707 See also |clientserver|.
6708 This function is not available in the |sandbox|.
6709 {only available when compiled with the |+clientserver| feature}
6710 Example: >
6711 :echo remote_read(id)
6712
6713< Can also be used as a |method|: >
6714 ServerId()->remote_read()
6715<
6716 *remote_send()* *E241*
6717remote_send({server}, {string} [, {idvar}])
Bram Moolenaar944697a2022-02-20 19:48:20 +00006718 Send the {string} to {server}. The {server} argument is a
6719 string, also see |{server}|.
6720
6721 The string is sent as input keys and the function returns
6722 immediately. At the Vim server the keys are not mapped
6723 |:map|.
6724
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006725 If {idvar} is present, it is taken as the name of a variable
6726 and a {serverid} for later use with remote_read() is stored
6727 there.
Bram Moolenaar944697a2022-02-20 19:48:20 +00006728
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006729 See also |clientserver| |RemoteReply|.
6730 This function is not available in the |sandbox|.
6731 {only available when compiled with the |+clientserver| feature}
6732
6733 Note: Any errors will be reported in the server and may mess
6734 up the display.
6735 Examples: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006736 :echo remote_send("gvim", ":DropAndReply " .. file, "serverid") ..
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006737 \ remote_read(serverid)
6738
6739 :autocmd NONE RemoteReply *
6740 \ echo remote_read(expand("<amatch>"))
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006741 :echo remote_send("gvim", ":sleep 10 | echo " ..
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006742 \ 'server2client(expand("<client>"), "HELLO")<CR>')
6743<
6744 Can also be used as a |method|: >
6745 ServerName()->remote_send(keys)
6746<
6747 *remote_startserver()* *E941* *E942*
6748remote_startserver({name})
6749 Become the server {name}. This fails if already running as a
6750 server, when |v:servername| is not empty.
6751
6752 Can also be used as a |method|: >
6753 ServerName()->remote_startserver()
6754
6755< {only available when compiled with the |+clientserver| feature}
6756
6757remove({list}, {idx} [, {end}]) *remove()*
6758 Without {end}: Remove the item at {idx} from |List| {list} and
6759 return the item.
6760 With {end}: Remove items from {idx} to {end} (inclusive) and
6761 return a |List| with these items. When {idx} points to the same
6762 item as {end} a list with one item is returned. When {end}
6763 points to an item before {idx} this is an error.
6764 See |list-index| for possible values of {idx} and {end}.
6765 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006766 :echo "last item: " .. remove(mylist, -1)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006767 :call remove(mylist, 0, 9)
6768<
6769 Use |delete()| to remove a file.
6770
6771 Can also be used as a |method|: >
6772 mylist->remove(idx)
6773
6774remove({blob}, {idx} [, {end}])
6775 Without {end}: Remove the byte at {idx} from |Blob| {blob} and
6776 return the byte.
6777 With {end}: Remove bytes from {idx} to {end} (inclusive) and
6778 return a |Blob| with these bytes. When {idx} points to the same
6779 byte as {end} a |Blob| with one byte is returned. When {end}
6780 points to a byte before {idx} this is an error.
6781 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006782 :echo "last byte: " .. remove(myblob, -1)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006783 :call remove(mylist, 0, 9)
6784
6785remove({dict}, {key})
6786 Remove the entry from {dict} with key {key} and return it.
6787 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006788 :echo "removed " .. remove(dict, "one")
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006789< If there is no {key} in {dict} this is an error.
6790
6791rename({from}, {to}) *rename()*
6792 Rename the file by the name {from} to the name {to}. This
6793 should also work to move files across file systems. The
6794 result is a Number, which is 0 if the file was renamed
6795 successfully, and non-zero when the renaming failed.
6796 NOTE: If {to} exists it is overwritten without warning.
6797 This function is not available in the |sandbox|.
6798
6799 Can also be used as a |method|: >
6800 GetOldName()->rename(newname)
6801
6802repeat({expr}, {count}) *repeat()*
6803 Repeat {expr} {count} times and return the concatenated
6804 result. Example: >
6805 :let separator = repeat('-', 80)
6806< When {count} is zero or negative the result is empty.
6807 When {expr} is a |List| the result is {expr} concatenated
6808 {count} times. Example: >
6809 :let longlist = repeat(['a', 'b'], 3)
6810< Results in ['a', 'b', 'a', 'b', 'a', 'b'].
6811
6812 Can also be used as a |method|: >
6813 mylist->repeat(count)
6814
6815resolve({filename}) *resolve()* *E655*
6816 On MS-Windows, when {filename} is a shortcut (a .lnk file),
6817 returns the path the shortcut points to in a simplified form.
6818 When {filename} is a symbolic link or junction point, return
6819 the full path to the target. If the target of junction is
6820 removed, return {filename}.
6821 On Unix, repeat resolving symbolic links in all path
6822 components of {filename} and return the simplified result.
6823 To cope with link cycles, resolving of symbolic links is
6824 stopped after 100 iterations.
6825 On other systems, return the simplified {filename}.
6826 The simplification step is done as by |simplify()|.
6827 resolve() keeps a leading path component specifying the
6828 current directory (provided the result is still a relative
6829 path name) and also keeps a trailing path separator.
6830
6831 Can also be used as a |method|: >
6832 GetName()->resolve()
6833
6834reverse({object}) *reverse()*
6835 Reverse the order of items in {object} in-place.
6836 {object} can be a |List| or a |Blob|.
6837 Returns {object}.
6838 If you want an object to remain unmodified make a copy first: >
6839 :let revlist = reverse(copy(mylist))
6840< Can also be used as a |method|: >
6841 mylist->reverse()
6842
6843round({expr}) *round()*
6844 Round off {expr} to the nearest integral value and return it
6845 as a |Float|. If {expr} lies halfway between two integral
6846 values, then use the larger one (away from zero).
6847 {expr} must evaluate to a |Float| or a |Number|.
6848 Examples: >
6849 echo round(0.456)
6850< 0.0 >
6851 echo round(4.5)
6852< 5.0 >
6853 echo round(-4.5)
6854< -5.0
6855
6856 Can also be used as a |method|: >
6857 Compute()->round()
6858<
6859 {only available when compiled with the |+float| feature}
6860
6861rubyeval({expr}) *rubyeval()*
6862 Evaluate Ruby expression {expr} and return its result
6863 converted to Vim data structures.
6864 Numbers, floats and strings are returned as they are (strings
6865 are copied though).
6866 Arrays are represented as Vim |List| type.
6867 Hashes are represented as Vim |Dictionary| type.
6868 Other objects are represented as strings resulted from their
6869 "Object#to_s" method.
6870 Note that in a `:def` function local variables are not visible
6871 to {expr}.
6872
6873 Can also be used as a |method|: >
6874 GetRubyExpr()->rubyeval()
6875
6876< {only available when compiled with the |+ruby| feature}
6877
6878screenattr({row}, {col}) *screenattr()*
6879 Like |screenchar()|, but return the attribute. This is a rather
6880 arbitrary number that can only be used to compare to the
6881 attribute at other positions.
6882
6883 Can also be used as a |method|: >
6884 GetRow()->screenattr(col)
6885
6886screenchar({row}, {col}) *screenchar()*
6887 The result is a Number, which is the character at position
6888 [row, col] on the screen. This works for every possible
6889 screen position, also status lines, window separators and the
6890 command line. The top left position is row one, column one
6891 The character excludes composing characters. For double-byte
6892 encodings it may only be the first byte.
6893 This is mainly to be used for testing.
6894 Returns -1 when row or col is out of range.
6895
6896 Can also be used as a |method|: >
6897 GetRow()->screenchar(col)
6898
6899screenchars({row}, {col}) *screenchars()*
6900 The result is a |List| of Numbers. The first number is the same
6901 as what |screenchar()| returns. Further numbers are
6902 composing characters on top of the base character.
6903 This is mainly to be used for testing.
6904 Returns an empty List when row or col is out of range.
6905
6906 Can also be used as a |method|: >
6907 GetRow()->screenchars(col)
6908
6909screencol() *screencol()*
6910 The result is a Number, which is the current screen column of
6911 the cursor. The leftmost column has number 1.
6912 This function is mainly used for testing.
6913
6914 Note: Always returns the current screen column, thus if used
6915 in a command (e.g. ":echo screencol()") it will return the
6916 column inside the command line, which is 1 when the command is
6917 executed. To get the cursor position in the file use one of
6918 the following mappings: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006919 nnoremap <expr> GG ":echom " .. screencol() .. "\n"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006920 nnoremap <silent> GG :echom screencol()<CR>
6921 nnoremap GG <Cmd>echom screencol()<CR>
6922<
6923screenpos({winid}, {lnum}, {col}) *screenpos()*
6924 The result is a Dict with the screen position of the text
6925 character in window {winid} at buffer line {lnum} and column
6926 {col}. {col} is a one-based byte index.
6927 The Dict has these members:
6928 row screen row
6929 col first screen column
6930 endcol last screen column
6931 curscol cursor screen column
6932 If the specified position is not visible, all values are zero.
6933 The "endcol" value differs from "col" when the character
6934 occupies more than one screen cell. E.g. for a Tab "col" can
6935 be 1 and "endcol" can be 8.
6936 The "curscol" value is where the cursor would be placed. For
6937 a Tab it would be the same as "endcol", while for a double
6938 width character it would be the same as "col".
6939 The |conceal| feature is ignored here, the column numbers are
6940 as if 'conceallevel' is zero. You can set the cursor to the
6941 right position and use |screencol()| to get the value with
6942 |conceal| taken into account.
Bram Moolenaar944697a2022-02-20 19:48:20 +00006943 If the position is in a closed fold the screen position of the
6944 first character is returned, {col} is not used.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006945
6946 Can also be used as a |method|: >
6947 GetWinid()->screenpos(lnum, col)
6948
6949screenrow() *screenrow()*
6950 The result is a Number, which is the current screen row of the
6951 cursor. The top line has number one.
6952 This function is mainly used for testing.
6953 Alternatively you can use |winline()|.
6954
6955 Note: Same restrictions as with |screencol()|.
6956
6957screenstring({row}, {col}) *screenstring()*
6958 The result is a String that contains the base character and
6959 any composing characters at position [row, col] on the screen.
6960 This is like |screenchars()| but returning a String with the
6961 characters.
6962 This is mainly to be used for testing.
6963 Returns an empty String when row or col is out of range.
6964
6965 Can also be used as a |method|: >
6966 GetRow()->screenstring(col)
6967<
6968 *search()*
6969search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
6970 Search for regexp pattern {pattern}. The search starts at the
6971 cursor position (you can use |cursor()| to set it).
6972
6973 When a match has been found its line number is returned.
6974 If there is no match a 0 is returned and the cursor doesn't
6975 move. No error message is given.
6976
6977 {flags} is a String, which can contain these character flags:
6978 'b' search Backward instead of forward
6979 'c' accept a match at the Cursor position
6980 'e' move to the End of the match
6981 'n' do Not move the cursor
6982 'p' return number of matching sub-Pattern (see below)
6983 's' Set the ' mark at the previous location of the cursor
6984 'w' Wrap around the end of the file
6985 'W' don't Wrap around the end of the file
6986 'z' start searching at the cursor column instead of zero
6987 If neither 'w' or 'W' is given, the 'wrapscan' option applies.
6988
6989 If the 's' flag is supplied, the ' mark is set, only if the
6990 cursor is moved. The 's' flag cannot be combined with the 'n'
6991 flag.
6992
6993 'ignorecase', 'smartcase' and 'magic' are used.
6994
6995 When the 'z' flag is not given, forward searching always
6996 starts in column zero and then matches before the cursor are
6997 skipped. When the 'c' flag is present in 'cpo' the next
6998 search starts after the match. Without the 'c' flag the next
6999 search starts one column further. This matters for
7000 overlapping matches.
7001 When searching backwards and the 'z' flag is given then the
7002 search starts in column zero, thus no match in the current
7003 line will be found (unless wrapping around the end of the
7004 file).
7005
7006 When the {stopline} argument is given then the search stops
7007 after searching this line. This is useful to restrict the
7008 search to a range of lines. Examples: >
7009 let match = search('(', 'b', line("w0"))
7010 let end = search('END', '', line("w$"))
7011< When {stopline} is used and it is not zero this also implies
7012 that the search does not wrap around the end of the file.
7013 A zero value is equal to not giving the argument.
7014
7015 When the {timeout} argument is given the search stops when
7016 more than this many milliseconds have passed. Thus when
7017 {timeout} is 500 the search stops after half a second.
7018 The value must not be negative. A zero value is like not
7019 giving the argument.
7020 {only available when compiled with the |+reltime| feature}
7021
7022 If the {skip} expression is given it is evaluated with the
7023 cursor positioned on the start of a match. If it evaluates to
7024 non-zero this match is skipped. This can be used, for
7025 example, to skip a match in a comment or a string.
7026 {skip} can be a string, which is evaluated as an expression, a
7027 function reference or a lambda.
7028 When {skip} is omitted or empty, every match is accepted.
7029 When evaluating {skip} causes an error the search is aborted
7030 and -1 returned.
7031 *search()-sub-match*
7032 With the 'p' flag the returned value is one more than the
7033 first sub-match in \(\). One if none of them matched but the
7034 whole pattern did match.
7035 To get the column number too use |searchpos()|.
7036
7037 The cursor will be positioned at the match, unless the 'n'
7038 flag is used.
7039
7040 Example (goes over all files in the argument list): >
7041 :let n = 1
7042 :while n <= argc() " loop over all files in arglist
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007043 : exe "argument " .. n
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007044 : " start at the last char in the file and wrap for the
7045 : " first search to find match at start of file
7046 : normal G$
7047 : let flags = "w"
7048 : while search("foo", flags) > 0
7049 : s/foo/bar/g
7050 : let flags = "W"
7051 : endwhile
7052 : update " write the file if modified
7053 : let n = n + 1
7054 :endwhile
7055<
7056 Example for using some flags: >
7057 :echo search('\<if\|\(else\)\|\(endif\)', 'ncpe')
7058< This will search for the keywords "if", "else", and "endif"
7059 under or after the cursor. Because of the 'p' flag, it
7060 returns 1, 2, or 3 depending on which keyword is found, or 0
7061 if the search fails. With the cursor on the first word of the
7062 line:
7063 if (foo == 0) | let foo = foo + 1 | endif ~
7064 the function returns 1. Without the 'c' flag, the function
7065 finds the "endif" and returns 3. The same thing happens
7066 without the 'e' flag if the cursor is on the "f" of "if".
7067 The 'n' flag tells the function not to move the cursor.
7068
7069 Can also be used as a |method|: >
7070 GetPattern()->search()
7071
7072searchcount([{options}]) *searchcount()*
7073 Get or update the last search count, like what is displayed
7074 without the "S" flag in 'shortmess'. This works even if
7075 'shortmess' does contain the "S" flag.
7076
7077 This returns a |Dictionary|. The dictionary is empty if the
7078 previous pattern was not set and "pattern" was not specified.
7079
7080 key type meaning ~
7081 current |Number| current position of match;
7082 0 if the cursor position is
7083 before the first match
7084 exact_match |Boolean| 1 if "current" is matched on
7085 "pos", otherwise 0
7086 total |Number| total count of matches found
7087 incomplete |Number| 0: search was fully completed
7088 1: recomputing was timed out
7089 2: max count exceeded
7090
7091 For {options} see further down.
7092
7093 To get the last search count when |n| or |N| was pressed, call
7094 this function with `recompute: 0` . This sometimes returns
7095 wrong information because |n| and |N|'s maximum count is 99.
7096 If it exceeded 99 the result must be max count + 1 (100). If
7097 you want to get correct information, specify `recompute: 1`: >
7098
7099 " result == maxcount + 1 (100) when many matches
7100 let result = searchcount(#{recompute: 0})
7101
7102 " Below returns correct result (recompute defaults
7103 " to 1)
7104 let result = searchcount()
7105<
7106 The function is useful to add the count to |statusline|: >
7107 function! LastSearchCount() abort
7108 let result = searchcount(#{recompute: 0})
7109 if empty(result)
7110 return ''
7111 endif
7112 if result.incomplete ==# 1 " timed out
7113 return printf(' /%s [?/??]', @/)
7114 elseif result.incomplete ==# 2 " max count exceeded
7115 if result.total > result.maxcount &&
7116 \ result.current > result.maxcount
7117 return printf(' /%s [>%d/>%d]', @/,
7118 \ result.current, result.total)
7119 elseif result.total > result.maxcount
7120 return printf(' /%s [%d/>%d]', @/,
7121 \ result.current, result.total)
7122 endif
7123 endif
7124 return printf(' /%s [%d/%d]', @/,
7125 \ result.current, result.total)
7126 endfunction
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007127 let &statusline ..= '%{LastSearchCount()}'
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007128
7129 " Or if you want to show the count only when
7130 " 'hlsearch' was on
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007131 " let &statusline ..=
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007132 " \ '%{v:hlsearch ? LastSearchCount() : ""}'
7133<
7134 You can also update the search count, which can be useful in a
7135 |CursorMoved| or |CursorMovedI| autocommand: >
7136
7137 autocmd CursorMoved,CursorMovedI *
7138 \ let s:searchcount_timer = timer_start(
7139 \ 200, function('s:update_searchcount'))
7140 function! s:update_searchcount(timer) abort
7141 if a:timer ==# s:searchcount_timer
7142 call searchcount(#{
7143 \ recompute: 1, maxcount: 0, timeout: 100})
7144 redrawstatus
7145 endif
7146 endfunction
7147<
7148 This can also be used to count matched texts with specified
7149 pattern in the current buffer using "pattern": >
7150
7151 " Count '\<foo\>' in this buffer
7152 " (Note that it also updates search count)
7153 let result = searchcount(#{pattern: '\<foo\>'})
7154
7155 " To restore old search count by old pattern,
7156 " search again
7157 call searchcount()
7158<
7159 {options} must be a |Dictionary|. It can contain:
7160 key type meaning ~
7161 recompute |Boolean| if |TRUE|, recompute the count
7162 like |n| or |N| was executed.
7163 otherwise returns the last
7164 computed result (when |n| or
7165 |N| was used when "S" is not
7166 in 'shortmess', or this
7167 function was called).
7168 (default: |TRUE|)
7169 pattern |String| recompute if this was given
7170 and different with |@/|.
7171 this works as same as the
7172 below command is executed
7173 before calling this function >
7174 let @/ = pattern
7175< (default: |@/|)
7176 timeout |Number| 0 or negative number is no
7177 timeout. timeout milliseconds
7178 for recomputing the result
7179 (default: 0)
7180 maxcount |Number| 0 or negative number is no
7181 limit. max count of matched
7182 text while recomputing the
7183 result. if search exceeded
7184 total count, "total" value
7185 becomes `maxcount + 1`
7186 (default: 99)
7187 pos |List| `[lnum, col, off]` value
7188 when recomputing the result.
7189 this changes "current" result
7190 value. see |cursor()|,
7191 |getpos()|
7192 (default: cursor's position)
7193
7194 Can also be used as a |method|: >
7195 GetSearchOpts()->searchcount()
7196<
7197searchdecl({name} [, {global} [, {thisblock}]]) *searchdecl()*
7198 Search for the declaration of {name}.
7199
7200 With a non-zero {global} argument it works like |gD|, find
7201 first match in the file. Otherwise it works like |gd|, find
7202 first match in the function.
7203
7204 With a non-zero {thisblock} argument matches in a {} block
7205 that ends before the cursor position are ignored. Avoids
7206 finding variable declarations only valid in another scope.
7207
7208 Moves the cursor to the found match.
7209 Returns zero for success, non-zero for failure.
7210 Example: >
7211 if searchdecl('myvar') == 0
7212 echo getline('.')
7213 endif
7214<
7215 Can also be used as a |method|: >
7216 GetName()->searchdecl()
7217<
7218 *searchpair()*
7219searchpair({start}, {middle}, {end} [, {flags} [, {skip}
7220 [, {stopline} [, {timeout}]]]])
7221 Search for the match of a nested start-end pair. This can be
7222 used to find the "endif" that matches an "if", while other
7223 if/endif pairs in between are ignored.
7224 The search starts at the cursor. The default is to search
7225 forward, include 'b' in {flags} to search backward.
7226 If a match is found, the cursor is positioned at it and the
7227 line number is returned. If no match is found 0 or -1 is
7228 returned and the cursor doesn't move. No error message is
7229 given.
7230
7231 {start}, {middle} and {end} are patterns, see |pattern|. They
7232 must not contain \( \) pairs. Use of \%( \) is allowed. When
7233 {middle} is not empty, it is found when searching from either
7234 direction, but only when not in a nested start-end pair. A
7235 typical use is: >
7236 searchpair('\<if\>', '\<else\>', '\<endif\>')
7237< By leaving {middle} empty the "else" is skipped.
7238
7239 {flags} 'b', 'c', 'n', 's', 'w' and 'W' are used like with
7240 |search()|. Additionally:
7241 'r' Repeat until no more matches found; will find the
7242 outer pair. Implies the 'W' flag.
7243 'm' Return number of matches instead of line number with
7244 the match; will be > 1 when 'r' is used.
7245 Note: it's nearly always a good idea to use the 'W' flag, to
7246 avoid wrapping around the end of the file.
7247
7248 When a match for {start}, {middle} or {end} is found, the
7249 {skip} expression is evaluated with the cursor positioned on
7250 the start of the match. It should return non-zero if this
7251 match is to be skipped. E.g., because it is inside a comment
7252 or a string.
7253 When {skip} is omitted or empty, every match is accepted.
7254 When evaluating {skip} causes an error the search is aborted
7255 and -1 returned.
7256 {skip} can be a string, a lambda, a funcref or a partial.
7257 Anything else makes the function fail.
7258 In a `:def` function when the {skip} argument is a string
7259 constant it is compiled into instructions.
7260
7261 For {stopline} and {timeout} see |search()|.
7262
7263 The value of 'ignorecase' is used. 'magic' is ignored, the
7264 patterns are used like it's on.
7265
7266 The search starts exactly at the cursor. A match with
7267 {start}, {middle} or {end} at the next character, in the
7268 direction of searching, is the first one found. Example: >
7269 if 1
7270 if 2
7271 endif 2
7272 endif 1
7273< When starting at the "if 2", with the cursor on the "i", and
7274 searching forwards, the "endif 2" is found. When starting on
7275 the character just before the "if 2", the "endif 1" will be
7276 found. That's because the "if 2" will be found first, and
7277 then this is considered to be a nested if/endif from "if 2" to
7278 "endif 2".
7279 When searching backwards and {end} is more than one character,
7280 it may be useful to put "\zs" at the end of the pattern, so
7281 that when the cursor is inside a match with the end it finds
7282 the matching start.
7283
7284 Example, to find the "endif" command in a Vim script: >
7285
7286 :echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W',
7287 \ 'getline(".") =~ "^\\s*\""')
7288
7289< The cursor must be at or after the "if" for which a match is
7290 to be found. Note that single-quote strings are used to avoid
7291 having to double the backslashes. The skip expression only
7292 catches comments at the start of a line, not after a command.
7293 Also, a word "en" or "if" halfway a line is considered a
7294 match.
7295 Another example, to search for the matching "{" of a "}": >
7296
7297 :echo searchpair('{', '', '}', 'bW')
7298
7299< This works when the cursor is at or before the "}" for which a
7300 match is to be found. To reject matches that syntax
7301 highlighting recognized as strings: >
7302
7303 :echo searchpair('{', '', '}', 'bW',
7304 \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
7305<
7306 *searchpairpos()*
7307searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
7308 [, {stopline} [, {timeout}]]]])
7309 Same as |searchpair()|, but returns a |List| with the line and
7310 column position of the match. The first element of the |List|
7311 is the line number and the second element is the byte index of
7312 the column position of the match. If no match is found,
7313 returns [0, 0]. >
7314
7315 :let [lnum,col] = searchpairpos('{', '', '}', 'n')
7316<
7317 See |match-parens| for a bigger and more useful example.
7318
7319 *searchpos()*
7320searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
7321 Same as |search()|, but returns a |List| with the line and
7322 column position of the match. The first element of the |List|
7323 is the line number and the second element is the byte index of
7324 the column position of the match. If no match is found,
7325 returns [0, 0].
7326 Example: >
7327 :let [lnum, col] = searchpos('mypattern', 'n')
7328
7329< When the 'p' flag is given then there is an extra item with
7330 the sub-pattern match number |search()-sub-match|. Example: >
7331 :let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np')
7332< In this example "submatch" is 2 when a lowercase letter is
7333 found |/\l|, 3 when an uppercase letter is found |/\u|.
7334
7335 Can also be used as a |method|: >
7336 GetPattern()->searchpos()
7337
7338server2client({clientid}, {string}) *server2client()*
7339 Send a reply string to {clientid}. The most recent {clientid}
7340 that sent a string can be retrieved with expand("<client>").
7341 {only available when compiled with the |+clientserver| feature}
7342 Returns zero for success, -1 for failure.
7343 Note:
7344 This id has to be stored before the next command can be
7345 received. I.e. before returning from the received command and
7346 before calling any commands that waits for input.
7347 See also |clientserver|.
7348 Example: >
7349 :echo server2client(expand("<client>"), "HELLO")
7350
7351< Can also be used as a |method|: >
7352 GetClientId()->server2client(string)
7353<
7354serverlist() *serverlist()*
7355 Return a list of available server names, one per line.
7356 When there are no servers or the information is not available
7357 an empty string is returned. See also |clientserver|.
7358 {only available when compiled with the |+clientserver| feature}
7359 Example: >
7360 :echo serverlist()
7361<
7362setbufline({buf}, {lnum}, {text}) *setbufline()*
7363 Set line {lnum} to {text} in buffer {buf}. This works like
7364 |setline()| for the specified buffer.
7365
7366 This function works only for loaded buffers. First call
7367 |bufload()| if needed.
7368
7369 To insert lines use |appendbufline()|.
7370 Any text properties in {lnum} are cleared.
7371
7372 {text} can be a string to set one line, or a list of strings
7373 to set multiple lines. If the list extends below the last
7374 line then those lines are added.
7375
7376 For the use of {buf}, see |bufname()| above.
7377
7378 {lnum} is used like with |setline()|.
7379 Use "$" to refer to the last line in buffer {buf}.
7380 When {lnum} is just below the last line the {text} will be
7381 added below the last line.
7382
7383 When {buf} is not a valid buffer, the buffer is not loaded or
7384 {lnum} is not valid then 1 is returned. In |Vim9| script an
7385 error is given.
7386 On success 0 is returned.
7387
7388 Can also be used as a |method|, the base is passed as the
7389 third argument: >
7390 GetText()->setbufline(buf, lnum)
7391
7392setbufvar({buf}, {varname}, {val}) *setbufvar()*
7393 Set option or local variable {varname} in buffer {buf} to
7394 {val}.
7395 This also works for a global or local window option, but it
7396 doesn't work for a global or local window variable.
7397 For a local window option the global value is unchanged.
7398 For the use of {buf}, see |bufname()| above.
7399 The {varname} argument is a string.
7400 Note that the variable name without "b:" must be used.
7401 Examples: >
7402 :call setbufvar(1, "&mod", 1)
7403 :call setbufvar("todo", "myvar", "foobar")
7404< This function is not available in the |sandbox|.
7405
7406 Can also be used as a |method|, the base is passed as the
7407 third argument: >
7408 GetValue()->setbufvar(buf, varname)
7409
7410
7411setcellwidths({list}) *setcellwidths()*
7412 Specify overrides for cell widths of character ranges. This
7413 tells Vim how wide characters are, counted in screen cells.
7414 This overrides 'ambiwidth'. Example: >
7415 setcellwidths([[0xad, 0xad, 1],
7416 \ [0x2194, 0x2199, 2]])
7417
Bram Moolenaarf10911e2022-01-29 22:20:48 +00007418< *E1109* *E1110* *E1111* *E1112* *E1113* *E1114*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007419 The {list} argument is a list of lists with each three
7420 numbers. These three numbers are [low, high, width]. "low"
7421 and "high" can be the same, in which case this refers to one
7422 character. Otherwise it is the range of characters from "low"
7423 to "high" (inclusive). "width" is either 1 or 2, indicating
7424 the character width in screen cells.
7425 An error is given if the argument is invalid, also when a
7426 range overlaps with another.
7427 Only characters with value 0x100 and higher can be used.
7428
7429 If the new value causes 'fillchars' or 'listchars' to become
7430 invalid it is rejected and an error is given.
7431
7432 To clear the overrides pass an empty list: >
7433 setcellwidths([]);
7434< You can use the script $VIMRUNTIME/tools/emoji_list.vim to see
7435 the effect for known emoji characters.
7436
7437setcharpos({expr}, {list}) *setcharpos()*
7438 Same as |setpos()| but uses the specified column number as the
7439 character index instead of the byte index in the line.
7440
7441 Example:
7442 With the text "여보세요" in line 8: >
7443 call setcharpos('.', [0, 8, 4, 0])
7444< positions the cursor on the fourth character '요'. >
7445 call setpos('.', [0, 8, 4, 0])
7446< positions the cursor on the second character '보'.
7447
7448 Can also be used as a |method|: >
7449 GetPosition()->setcharpos('.')
7450
7451setcharsearch({dict}) *setcharsearch()*
7452 Set the current character search information to {dict},
7453 which contains one or more of the following entries:
7454
7455 char character which will be used for a subsequent
7456 |,| or |;| command; an empty string clears the
7457 character search
7458 forward direction of character search; 1 for forward,
7459 0 for backward
7460 until type of character search; 1 for a |t| or |T|
7461 character search, 0 for an |f| or |F|
7462 character search
7463
7464 This can be useful to save/restore a user's character search
7465 from a script: >
7466 :let prevsearch = getcharsearch()
7467 :" Perform a command which clobbers user's search
7468 :call setcharsearch(prevsearch)
7469< Also see |getcharsearch()|.
7470
7471 Can also be used as a |method|: >
7472 SavedSearch()->setcharsearch()
7473
7474setcmdpos({pos}) *setcmdpos()*
7475 Set the cursor position in the command line to byte position
7476 {pos}. The first position is 1.
7477 Use |getcmdpos()| to obtain the current position.
7478 Only works while editing the command line, thus you must use
7479 |c_CTRL-\_e|, |c_CTRL-R_=| or |c_CTRL-R_CTRL-R| with '='. For
7480 |c_CTRL-\_e| and |c_CTRL-R_CTRL-R| with '=' the position is
7481 set after the command line is set to the expression. For
7482 |c_CTRL-R_=| it is set after evaluating the expression but
7483 before inserting the resulting text.
7484 When the number is too big the cursor is put at the end of the
7485 line. A number smaller than one has undefined results.
7486 Returns FALSE when successful, TRUE when not editing the
7487 command line.
7488
7489 Can also be used as a |method|: >
7490 GetPos()->setcmdpos()
7491
7492setcursorcharpos({lnum}, {col} [, {off}]) *setcursorcharpos()*
7493setcursorcharpos({list})
7494 Same as |cursor()| but uses the specified column number as the
7495 character index instead of the byte index in the line.
7496
7497 Example:
7498 With the text "여보세요" in line 4: >
7499 call setcursorcharpos(4, 3)
7500< positions the cursor on the third character '세'. >
7501 call cursor(4, 3)
7502< positions the cursor on the first character '여'.
7503
7504 Can also be used as a |method|: >
7505 GetCursorPos()->setcursorcharpos()
7506
7507
7508setenv({name}, {val}) *setenv()*
7509 Set environment variable {name} to {val}. Example: >
7510 call setenv('HOME', '/home/myhome')
7511
7512< When {val} is |v:null| the environment variable is deleted.
7513 See also |expr-env|.
7514
7515 Can also be used as a |method|, the base is passed as the
7516 second argument: >
7517 GetPath()->setenv('PATH')
7518
7519setfperm({fname}, {mode}) *setfperm()* *chmod*
7520 Set the file permissions for {fname} to {mode}.
7521 {mode} must be a string with 9 characters. It is of the form
7522 "rwxrwxrwx", where each group of "rwx" flags represent, in
7523 turn, the permissions of the owner of the file, the group the
7524 file belongs to, and other users. A '-' character means the
7525 permission is off, any other character means on. Multi-byte
7526 characters are not supported.
7527
7528 For example "rw-r-----" means read-write for the user,
7529 readable by the group, not accessible by others. "xx-x-----"
7530 would do the same thing.
7531
7532 Returns non-zero for success, zero for failure.
7533
7534 Can also be used as a |method|: >
7535 GetFilename()->setfperm(mode)
7536<
7537 To read permissions see |getfperm()|.
7538
7539
7540setline({lnum}, {text}) *setline()*
7541 Set line {lnum} of the current buffer to {text}. To insert
7542 lines use |append()|. To set lines in another buffer use
7543 |setbufline()|. Any text properties in {lnum} are cleared.
7544
7545 {lnum} is used like with |getline()|.
7546 When {lnum} is just below the last line the {text} will be
7547 added below the last line.
7548 {text} can be any type or a List of any type, each item is
7549 converted to a String.
7550
7551 If this succeeds, FALSE is returned. If this fails (most likely
7552 because {lnum} is invalid) TRUE is returned.
7553 In |Vim9| script an error is given if {lnum} is invalid.
7554
7555 Example: >
7556 :call setline(5, strftime("%c"))
7557
7558< When {text} is a |List| then line {lnum} and following lines
7559 will be set to the items in the list. Example: >
7560 :call setline(5, ['aaa', 'bbb', 'ccc'])
7561< This is equivalent to: >
7562 :for [n, l] in [[5, 'aaa'], [6, 'bbb'], [7, 'ccc']]
7563 : call setline(n, l)
7564 :endfor
7565
7566< Note: The '[ and '] marks are not set.
7567
7568 Can also be used as a |method|, the base is passed as the
7569 second argument: >
7570 GetText()->setline(lnum)
7571
7572setloclist({nr}, {list} [, {action} [, {what}]]) *setloclist()*
7573 Create or replace or add to the location list for window {nr}.
7574 {nr} can be the window number or the |window-ID|.
7575 When {nr} is zero the current window is used.
7576
7577 For a location list window, the displayed location list is
7578 modified. For an invalid window number {nr}, -1 is returned.
7579 Otherwise, same as |setqflist()|.
7580 Also see |location-list|.
7581
7582 For {action} see |setqflist-action|.
7583
7584 If the optional {what} dictionary argument is supplied, then
7585 only the items listed in {what} are set. Refer to |setqflist()|
7586 for the list of supported keys in {what}.
7587
7588 Can also be used as a |method|, the base is passed as the
7589 second argument: >
7590 GetLoclist()->setloclist(winnr)
7591
7592setmatches({list} [, {win}]) *setmatches()*
7593 Restores a list of matches saved by |getmatches()| for the
7594 current window. Returns 0 if successful, otherwise -1. All
7595 current matches are cleared before the list is restored. See
7596 example for |getmatches()|.
7597 If {win} is specified, use the window with this number or
7598 window ID instead of the current window.
7599
7600 Can also be used as a |method|: >
7601 GetMatches()->setmatches()
7602<
7603 *setpos()*
7604setpos({expr}, {list})
7605 Set the position for String {expr}. Possible values:
7606 . the cursor
7607 'x mark x
7608
7609 {list} must be a |List| with four or five numbers:
7610 [bufnum, lnum, col, off]
7611 [bufnum, lnum, col, off, curswant]
7612
7613 "bufnum" is the buffer number. Zero can be used for the
7614 current buffer. When setting an uppercase mark "bufnum" is
7615 used for the mark position. For other marks it specifies the
7616 buffer to set the mark in. You can use the |bufnr()| function
7617 to turn a file name into a buffer number.
7618 For setting the cursor and the ' mark "bufnum" is ignored,
7619 since these are associated with a window, not a buffer.
7620 Does not change the jumplist.
7621
7622 "lnum" and "col" are the position in the buffer. The first
7623 column is 1. Use a zero "lnum" to delete a mark. If "col" is
7624 smaller than 1 then 1 is used. To use the character count
7625 instead of the byte count, use |setcharpos()|.
7626
7627 The "off" number is only used when 'virtualedit' is set. Then
7628 it is the offset in screen columns from the start of the
7629 character. E.g., a position within a <Tab> or after the last
7630 character.
7631
7632 The "curswant" number is only used when setting the cursor
7633 position. It sets the preferred column for when moving the
7634 cursor vertically. When the "curswant" number is missing the
7635 preferred column is not set. When it is present and setting a
7636 mark position it is not used.
7637
7638 Note that for '< and '> changing the line number may result in
7639 the marks to be effectively be swapped, so that '< is always
7640 before '>.
7641
7642 Returns 0 when the position could be set, -1 otherwise.
7643 An error message is given if {expr} is invalid.
7644
7645 Also see |setcharpos()|, |getpos()| and |getcurpos()|.
7646
7647 This does not restore the preferred column for moving
7648 vertically; if you set the cursor position with this, |j| and
7649 |k| motions will jump to previous columns! Use |cursor()| to
7650 also set the preferred column. Also see the "curswant" key in
7651 |winrestview()|.
7652
7653 Can also be used as a |method|: >
7654 GetPosition()->setpos('.')
7655
7656setqflist({list} [, {action} [, {what}]]) *setqflist()*
7657 Create or replace or add to the quickfix list.
7658
7659 If the optional {what} dictionary argument is supplied, then
7660 only the items listed in {what} are set. The first {list}
7661 argument is ignored. See below for the supported items in
7662 {what}.
7663 *setqflist-what*
7664 When {what} is not present, the items in {list} are used. Each
7665 item must be a dictionary. Non-dictionary items in {list} are
7666 ignored. Each dictionary item can contain the following
7667 entries:
7668
7669 bufnr buffer number; must be the number of a valid
7670 buffer
7671 filename name of a file; only used when "bufnr" is not
7672 present or it is invalid.
7673 module name of a module; if given it will be used in
7674 quickfix error window instead of the filename.
7675 lnum line number in the file
Bram Moolenaara2baa732022-02-04 16:09:54 +00007676 end_lnum end of lines, if the item spans multiple lines
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007677 pattern search pattern used to locate the error
7678 col column number
7679 vcol when non-zero: "col" is visual column
7680 when zero: "col" is byte index
Bram Moolenaara2baa732022-02-04 16:09:54 +00007681 end_col end column, if the item spans multiple columns
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007682 nr error number
7683 text description of the error
7684 type single-character error type, 'E', 'W', etc.
7685 valid recognized error message
7686
7687 The "col", "vcol", "nr", "type" and "text" entries are
7688 optional. Either "lnum" or "pattern" entry can be used to
7689 locate a matching error line.
7690 If the "filename" and "bufnr" entries are not present or
7691 neither the "lnum" or "pattern" entries are present, then the
7692 item will not be handled as an error line.
7693 If both "pattern" and "lnum" are present then "pattern" will
7694 be used.
7695 If the "valid" entry is not supplied, then the valid flag is
7696 set when "bufnr" is a valid buffer or "filename" exists.
7697 If you supply an empty {list}, the quickfix list will be
7698 cleared.
7699 Note that the list is not exactly the same as what
7700 |getqflist()| returns.
7701
7702 {action} values: *setqflist-action* *E927*
7703 'a' The items from {list} are added to the existing
7704 quickfix list. If there is no existing list, then a
7705 new list is created.
7706
7707 'r' The items from the current quickfix list are replaced
7708 with the items from {list}. This can also be used to
7709 clear the list: >
7710 :call setqflist([], 'r')
7711<
7712 'f' All the quickfix lists in the quickfix stack are
7713 freed.
7714
7715 If {action} is not present or is set to ' ', then a new list
7716 is created. The new quickfix list is added after the current
7717 quickfix list in the stack and all the following lists are
7718 freed. To add a new quickfix list at the end of the stack,
7719 set "nr" in {what} to "$".
7720
7721 The following items can be specified in dictionary {what}:
7722 context quickfix list context. See |quickfix-context|
7723 efm errorformat to use when parsing text from
7724 "lines". If this is not present, then the
7725 'errorformat' option value is used.
7726 See |quickfix-parse|
7727 id quickfix list identifier |quickfix-ID|
7728 idx index of the current entry in the quickfix
7729 list specified by 'id' or 'nr'. If set to '$',
7730 then the last entry in the list is set as the
7731 current entry. See |quickfix-index|
7732 items list of quickfix entries. Same as the {list}
7733 argument.
7734 lines use 'errorformat' to parse a list of lines and
7735 add the resulting entries to the quickfix list
7736 {nr} or {id}. Only a |List| value is supported.
7737 See |quickfix-parse|
7738 nr list number in the quickfix stack; zero
7739 means the current quickfix list and "$" means
7740 the last quickfix list.
7741 quickfixtextfunc
7742 function to get the text to display in the
7743 quickfix window. The value can be the name of
7744 a function or a funcref or a lambda. Refer to
7745 |quickfix-window-function| for an explanation
7746 of how to write the function and an example.
7747 title quickfix list title text. See |quickfix-title|
7748 Unsupported keys in {what} are ignored.
7749 If the "nr" item is not present, then the current quickfix list
7750 is modified. When creating a new quickfix list, "nr" can be
7751 set to a value one greater than the quickfix stack size.
7752 When modifying a quickfix list, to guarantee that the correct
7753 list is modified, "id" should be used instead of "nr" to
7754 specify the list.
7755
7756 Examples (See also |setqflist-examples|): >
7757 :call setqflist([], 'r', {'title': 'My search'})
7758 :call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
7759 :call setqflist([], 'a', {'id':qfid, 'lines':["F1:10:L10"]})
7760<
7761 Returns zero for success, -1 for failure.
7762
7763 This function can be used to create a quickfix list
7764 independent of the 'errorformat' setting. Use a command like
7765 `:cc 1` to jump to the first position.
7766
7767 Can also be used as a |method|, the base is passed as the
7768 second argument: >
7769 GetErrorlist()->setqflist()
7770<
7771 *setreg()*
7772setreg({regname}, {value} [, {options}])
7773 Set the register {regname} to {value}.
7774 If {regname} is "" or "@", the unnamed register '"' is used.
7775 The {regname} argument is a string. In |Vim9-script|
7776 {regname} must be one character.
7777
7778 {value} may be any value returned by |getreg()| or
7779 |getreginfo()|, including a |List| or |Dict|.
7780 If {options} contains "a" or {regname} is upper case,
7781 then the value is appended.
7782
7783 {options} can also contain a register type specification:
7784 "c" or "v" |characterwise| mode
7785 "l" or "V" |linewise| mode
7786 "b" or "<CTRL-V>" |blockwise-visual| mode
7787 If a number immediately follows "b" or "<CTRL-V>" then this is
7788 used as the width of the selection - if it is not specified
7789 then the width of the block is set to the number of characters
7790 in the longest line (counting a <Tab> as 1 character).
7791
7792 If {options} contains no register settings, then the default
7793 is to use character mode unless {value} ends in a <NL> for
7794 string {value} and linewise mode for list {value}. Blockwise
7795 mode is never selected automatically.
7796 Returns zero for success, non-zero for failure.
7797
7798 *E883*
7799 Note: you may not use |List| containing more than one item to
7800 set search and expression registers. Lists containing no
7801 items act like empty strings.
7802
7803 Examples: >
7804 :call setreg(v:register, @*)
7805 :call setreg('*', @%, 'ac')
7806 :call setreg('a', "1\n2\n3", 'b5')
7807 :call setreg('"', { 'points_to': 'a'})
7808
7809< This example shows using the functions to save and restore a
7810 register: >
7811 :let var_a = getreginfo()
7812 :call setreg('a', var_a)
7813< or: >
7814 :let var_a = getreg('a', 1, 1)
7815 :let var_amode = getregtype('a')
7816 ....
7817 :call setreg('a', var_a, var_amode)
7818< Note: you may not reliably restore register value
7819 without using the third argument to |getreg()| as without it
7820 newlines are represented as newlines AND Nul bytes are
7821 represented as newlines as well, see |NL-used-for-Nul|.
7822
7823 You can also change the type of a register by appending
7824 nothing: >
7825 :call setreg('a', '', 'al')
7826
7827< Can also be used as a |method|, the base is passed as the
7828 second argument: >
7829 GetText()->setreg('a')
7830
7831settabvar({tabnr}, {varname}, {val}) *settabvar()*
7832 Set tab-local variable {varname} to {val} in tab page {tabnr}.
7833 |t:var|
7834 The {varname} argument is a string.
7835 Note that autocommands are blocked, side effects may not be
7836 triggered, e.g. when setting 'filetype'.
7837 Note that the variable name without "t:" must be used.
7838 Tabs are numbered starting with one.
7839 This function is not available in the |sandbox|.
7840
7841 Can also be used as a |method|, the base is passed as the
7842 third argument: >
7843 GetValue()->settabvar(tab, name)
7844
7845settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()*
7846 Set option or local variable {varname} in window {winnr} to
7847 {val}.
7848 Tabs are numbered starting with one. For the current tabpage
7849 use |setwinvar()|.
7850 {winnr} can be the window number or the |window-ID|.
7851 When {winnr} is zero the current window is used.
7852 Note that autocommands are blocked, side effects may not be
7853 triggered, e.g. when setting 'filetype' or 'syntax'.
7854 This also works for a global or local buffer option, but it
7855 doesn't work for a global or local buffer variable.
7856 For a local buffer option the global value is unchanged.
7857 Note that the variable name without "w:" must be used.
7858 Examples: >
7859 :call settabwinvar(1, 1, "&list", 0)
7860 :call settabwinvar(3, 2, "myvar", "foobar")
7861< This function is not available in the |sandbox|.
7862
7863 Can also be used as a |method|, the base is passed as the
7864 fourth argument: >
7865 GetValue()->settabwinvar(tab, winnr, name)
7866
7867settagstack({nr}, {dict} [, {action}]) *settagstack()*
7868 Modify the tag stack of the window {nr} using {dict}.
7869 {nr} can be the window number or the |window-ID|.
7870
7871 For a list of supported items in {dict}, refer to
7872 |gettagstack()|. "curidx" takes effect before changing the tag
7873 stack.
7874 *E962*
7875 How the tag stack is modified depends on the {action}
7876 argument:
7877 - If {action} is not present or is set to 'r', then the tag
7878 stack is replaced.
7879 - If {action} is set to 'a', then new entries from {dict} are
7880 pushed (added) onto the tag stack.
7881 - If {action} is set to 't', then all the entries from the
7882 current entry in the tag stack or "curidx" in {dict} are
7883 removed and then new entries are pushed to the stack.
7884
7885 The current index is set to one after the length of the tag
7886 stack after the modification.
7887
7888 Returns zero for success, -1 for failure.
7889
7890 Examples (for more examples see |tagstack-examples|):
7891 Empty the tag stack of window 3: >
7892 call settagstack(3, {'items' : []})
7893
7894< Save and restore the tag stack: >
7895 let stack = gettagstack(1003)
7896 " do something else
7897 call settagstack(1003, stack)
7898 unlet stack
7899<
7900 Can also be used as a |method|, the base is passed as the
7901 second argument: >
7902 GetStack()->settagstack(winnr)
7903
7904setwinvar({winnr}, {varname}, {val}) *setwinvar()*
7905 Like |settabwinvar()| for the current tab page.
7906 Examples: >
7907 :call setwinvar(1, "&list", 0)
7908 :call setwinvar(2, "myvar", "foobar")
7909
7910< Can also be used as a |method|, the base is passed as the
7911 third argument: >
7912 GetValue()->setwinvar(winnr, name)
7913
7914sha256({string}) *sha256()*
7915 Returns a String with 64 hex characters, which is the SHA256
7916 checksum of {string}.
7917
7918 Can also be used as a |method|: >
7919 GetText()->sha256()
7920
7921< {only available when compiled with the |+cryptv| feature}
7922
7923shellescape({string} [, {special}]) *shellescape()*
7924 Escape {string} for use as a shell command argument.
7925 When the 'shell' contains powershell (MS-Windows) or pwsh
Bram Moolenaar944697a2022-02-20 19:48:20 +00007926 (MS-Windows, Linux, and macOS) then it will enclose {string}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007927 in single quotes and will double up all internal single
7928 quotes.
7929 On MS-Windows, when 'shellslash' is not set, it will enclose
7930 {string} in double quotes and double all double quotes within
7931 {string}.
7932 Otherwise it will enclose {string} in single quotes and
7933 replace all "'" with "'\''".
7934
7935 When the {special} argument is present and it's a non-zero
7936 Number or a non-empty String (|non-zero-arg|), then special
7937 items such as "!", "%", "#" and "<cword>" will be preceded by
7938 a backslash. This backslash will be removed again by the |:!|
7939 command.
7940
7941 The "!" character will be escaped (again with a |non-zero-arg|
7942 {special}) when 'shell' contains "csh" in the tail. That is
7943 because for csh and tcsh "!" is used for history replacement
7944 even when inside single quotes.
7945
7946 With a |non-zero-arg| {special} the <NL> character is also
7947 escaped. When 'shell' containing "csh" in the tail it's
7948 escaped a second time.
7949
7950 The "\" character will be escaped when 'shell' contains "fish"
7951 in the tail. That is because for fish "\" is used as an escape
7952 character inside single quotes.
7953
7954 Example of use with a |:!| command: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007955 :exe '!dir ' .. shellescape(expand('<cfile>'), 1)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007956< This results in a directory listing for the file under the
7957 cursor. Example of use with |system()|: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007958 :call system("chmod +w -- " .. shellescape(expand("%")))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007959< See also |::S|.
7960
7961 Can also be used as a |method|: >
7962 GetCommand()->shellescape()
7963
7964shiftwidth([{col}]) *shiftwidth()*
7965 Returns the effective value of 'shiftwidth'. This is the
7966 'shiftwidth' value unless it is zero, in which case it is the
7967 'tabstop' value. This function was introduced with patch
7968 7.3.694 in 2012, everybody should have it by now (however it
7969 did not allow for the optional {col} argument until 8.1.542).
7970
7971 When there is one argument {col} this is used as column number
7972 for which to return the 'shiftwidth' value. This matters for the
7973 'vartabstop' feature. If the 'vartabstop' setting is enabled and
7974 no {col} argument is given, column 1 will be assumed.
7975
7976 Can also be used as a |method|: >
7977 GetColumn()->shiftwidth()
7978
7979sign_ functions are documented here: |sign-functions-details|
7980
7981
7982simplify({filename}) *simplify()*
7983 Simplify the file name as much as possible without changing
7984 the meaning. Shortcuts (on MS-Windows) or symbolic links (on
7985 Unix) are not resolved. If the first path component in
7986 {filename} designates the current directory, this will be
7987 valid for the result as well. A trailing path separator is
7988 not removed either. On Unix "//path" is unchanged, but
7989 "///path" is simplified to "/path" (this follows the Posix
7990 standard).
7991 Example: >
7992 simplify("./dir/.././/file/") == "./file/"
7993< Note: The combination "dir/.." is only removed if "dir" is
7994 a searchable directory or does not exist. On Unix, it is also
7995 removed when "dir" is a symbolic link within the same
7996 directory. In order to resolve all the involved symbolic
7997 links before simplifying the path name, use |resolve()|.
7998
7999 Can also be used as a |method|: >
8000 GetName()->simplify()
8001
8002sin({expr}) *sin()*
8003 Return the sine of {expr}, measured in radians, as a |Float|.
8004 {expr} must evaluate to a |Float| or a |Number|.
8005 Examples: >
8006 :echo sin(100)
8007< -0.506366 >
8008 :echo sin(-4.01)
8009< 0.763301
8010
8011 Can also be used as a |method|: >
8012 Compute()->sin()
8013<
8014 {only available when compiled with the |+float| feature}
8015
8016
8017sinh({expr}) *sinh()*
8018 Return the hyperbolic sine of {expr} as a |Float| in the range
8019 [-inf, inf].
8020 {expr} must evaluate to a |Float| or a |Number|.
8021 Examples: >
8022 :echo sinh(0.5)
8023< 0.521095 >
8024 :echo sinh(-0.9)
8025< -1.026517
8026
8027 Can also be used as a |method|: >
8028 Compute()->sinh()
8029<
8030 {only available when compiled with the |+float| feature}
8031
8032
8033slice({expr}, {start} [, {end}]) *slice()*
8034 Similar to using a |slice| "expr[start : end]", but "end" is
8035 used exclusive. And for a string the indexes are used as
8036 character indexes instead of byte indexes, like in
8037 |vim9script|. Also, composing characters are not counted.
8038 When {end} is omitted the slice continues to the last item.
8039 When {end} is -1 the last item is omitted.
8040
8041 Can also be used as a |method|: >
8042 GetList()->slice(offset)
8043
8044
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008045sort({list} [, {how} [, {dict}]]) *sort()* *E702*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008046 Sort the items in {list} in-place. Returns {list}.
8047
8048 If you want a list to remain unmodified make a copy first: >
8049 :let sortedlist = sort(copy(mylist))
8050
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008051< When {how} is omitted or is an string, then sort() uses the
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008052 string representation of each item to sort on. Numbers sort
8053 after Strings, |Lists| after Numbers. For sorting text in the
8054 current buffer use |:sort|.
8055
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008056 When {how} is given and it is 'i' then case is ignored.
8057 In legacy script, for backwards compatibility, the value one
8058 can be used to ignore case. Zero means to not ignore case.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008059
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008060 When {how} is given and it is 'l' then the current collation
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008061 locale is used for ordering. Implementation details: strcoll()
8062 is used to compare strings. See |:language| check or set the
8063 collation locale. |v:collate| can also be used to check the
8064 current locale. Sorting using the locale typically ignores
8065 case. Example: >
8066 " ö is sorted similarly to o with English locale.
8067 :language collate en_US.UTF8
8068 :echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
8069< ['n', 'o', 'O', 'ö', 'p', 'z'] ~
8070>
8071 " ö is sorted after z with Swedish locale.
8072 :language collate sv_SE.UTF8
8073 :echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
8074< ['n', 'o', 'O', 'p', 'z', 'ö'] ~
8075 This does not work properly on Mac.
8076
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008077 When {how} is given and it is 'n' then all items will be
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008078 sorted numerical (Implementation detail: this uses the
8079 strtod() function to parse numbers, Strings, Lists, Dicts and
8080 Funcrefs will be considered as being 0).
8081
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008082 When {how} is given and it is 'N' then all items will be
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008083 sorted numerical. This is like 'n' but a string containing
8084 digits will be used as the number they represent.
8085
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008086 When {how} is given and it is 'f' then all items will be
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008087 sorted numerical. All values must be a Number or a Float.
8088
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008089 When {how} is a |Funcref| or a function name, this function
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008090 is called to compare items. The function is invoked with two
8091 items as argument and must return zero if they are equal, 1 or
8092 bigger if the first one sorts after the second one, -1 or
8093 smaller if the first one sorts before the second one.
8094
8095 {dict} is for functions with the "dict" attribute. It will be
8096 used to set the local variable "self". |Dictionary-function|
8097
8098 The sort is stable, items which compare equal (as number or as
8099 string) will keep their relative position. E.g., when sorting
8100 on numbers, text strings will sort next to each other, in the
8101 same order as they were originally.
8102
8103 Can also be used as a |method|: >
8104 mylist->sort()
8105
8106< Also see |uniq()|.
8107
8108 Example: >
8109 func MyCompare(i1, i2)
8110 return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
8111 endfunc
8112 eval mylist->sort("MyCompare")
8113< A shorter compare version for this specific simple case, which
8114 ignores overflow: >
8115 func MyCompare(i1, i2)
8116 return a:i1 - a:i2
8117 endfunc
8118< For a simple expression you can use a lambda: >
8119 eval mylist->sort({i1, i2 -> i1 - i2})
8120<
8121sound_clear() *sound_clear()*
8122 Stop playing all sounds.
8123
8124 On some Linux systems you may need the libcanberra-pulse
8125 package, otherwise sound may not stop.
8126
8127 {only available when compiled with the |+sound| feature}
8128
8129 *sound_playevent()*
8130sound_playevent({name} [, {callback}])
8131 Play a sound identified by {name}. Which event names are
8132 supported depends on the system. Often the XDG sound names
8133 are used. On Ubuntu they may be found in
8134 /usr/share/sounds/freedesktop/stereo. Example: >
8135 call sound_playevent('bell')
8136< On MS-Windows, {name} can be SystemAsterisk, SystemDefault,
8137 SystemExclamation, SystemExit, SystemHand, SystemQuestion,
8138 SystemStart, SystemWelcome, etc.
8139
8140 When {callback} is specified it is invoked when the sound is
8141 finished. The first argument is the sound ID, the second
8142 argument is the status:
8143 0 sound was played to the end
8144 1 sound was interrupted
8145 2 error occurred after sound started
8146 Example: >
8147 func Callback(id, status)
8148 echomsg "sound " .. a:id .. " finished with " .. a:status
8149 endfunc
8150 call sound_playevent('bell', 'Callback')
8151
8152< MS-Windows: {callback} doesn't work for this function.
8153
8154 Returns the sound ID, which can be passed to `sound_stop()`.
8155 Returns zero if the sound could not be played.
8156
8157 Can also be used as a |method|: >
8158 GetSoundName()->sound_playevent()
8159
8160< {only available when compiled with the |+sound| feature}
8161
8162 *sound_playfile()*
8163sound_playfile({path} [, {callback}])
8164 Like `sound_playevent()` but play sound file {path}. {path}
8165 must be a full path. On Ubuntu you may find files to play
8166 with this command: >
8167 :!find /usr/share/sounds -type f | grep -v index.theme
8168
8169< Can also be used as a |method|: >
8170 GetSoundPath()->sound_playfile()
8171
Bram Moolenaar1588bc82022-03-08 21:35:07 +00008172< {only available when compiled with the |+sound| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008173
8174
8175sound_stop({id}) *sound_stop()*
8176 Stop playing sound {id}. {id} must be previously returned by
8177 `sound_playevent()` or `sound_playfile()`.
8178
8179 On some Linux systems you may need the libcanberra-pulse
8180 package, otherwise sound may not stop.
8181
8182 On MS-Windows, this does not work for event sound started by
8183 `sound_playevent()`. To stop event sounds, use `sound_clear()`.
8184
8185 Can also be used as a |method|: >
8186 soundid->sound_stop()
8187
8188< {only available when compiled with the |+sound| feature}
8189
8190 *soundfold()*
8191soundfold({word})
8192 Return the sound-folded equivalent of {word}. Uses the first
8193 language in 'spelllang' for the current window that supports
8194 soundfolding. 'spell' must be set. When no sound folding is
8195 possible the {word} is returned unmodified.
8196 This can be used for making spelling suggestions. Note that
8197 the method can be quite slow.
8198
8199 Can also be used as a |method|: >
8200 GetWord()->soundfold()
8201<
8202 *spellbadword()*
8203spellbadword([{sentence}])
8204 Without argument: The result is the badly spelled word under
8205 or after the cursor. The cursor is moved to the start of the
8206 bad word. When no bad word is found in the cursor line the
8207 result is an empty string and the cursor doesn't move.
8208
8209 With argument: The result is the first word in {sentence} that
8210 is badly spelled. If there are no spelling mistakes the
8211 result is an empty string.
8212
8213 The return value is a list with two items:
8214 - The badly spelled word or an empty string.
8215 - The type of the spelling error:
8216 "bad" spelling mistake
8217 "rare" rare word
8218 "local" word only valid in another region
8219 "caps" word should start with Capital
8220 Example: >
8221 echo spellbadword("the quik brown fox")
8222< ['quik', 'bad'] ~
8223
8224 The spelling information for the current window and the value
8225 of 'spelllang' are used.
8226
8227 Can also be used as a |method|: >
8228 GetText()->spellbadword()
8229<
8230 *spellsuggest()*
8231spellsuggest({word} [, {max} [, {capital}]])
8232 Return a |List| with spelling suggestions to replace {word}.
8233 When {max} is given up to this number of suggestions are
8234 returned. Otherwise up to 25 suggestions are returned.
8235
8236 When the {capital} argument is given and it's non-zero only
8237 suggestions with a leading capital will be given. Use this
8238 after a match with 'spellcapcheck'.
8239
8240 {word} can be a badly spelled word followed by other text.
8241 This allows for joining two words that were split. The
8242 suggestions also include the following text, thus you can
8243 replace a line.
8244
8245 {word} may also be a good word. Similar words will then be
8246 returned. {word} itself is not included in the suggestions,
8247 although it may appear capitalized.
8248
8249 The spelling information for the current window is used. The
8250 values of 'spelllang' and 'spellsuggest' are used.
8251
8252 Can also be used as a |method|: >
8253 GetWord()->spellsuggest()
8254
8255split({string} [, {pattern} [, {keepempty}]]) *split()*
8256 Make a |List| out of {string}. When {pattern} is omitted or
8257 empty each white-separated sequence of characters becomes an
8258 item.
8259 Otherwise the string is split where {pattern} matches,
8260 removing the matched characters. 'ignorecase' is not used
8261 here, add \c to ignore case. |/\c|
8262 When the first or last item is empty it is omitted, unless the
8263 {keepempty} argument is given and it's non-zero.
8264 Other empty items are kept when {pattern} matches at least one
8265 character or when {keepempty} is non-zero.
8266 Example: >
8267 :let words = split(getline('.'), '\W\+')
8268< To split a string in individual characters: >
8269 :for c in split(mystring, '\zs')
8270< If you want to keep the separator you can also use '\zs' at
8271 the end of the pattern: >
8272 :echo split('abc:def:ghi', ':\zs')
8273< ['abc:', 'def:', 'ghi'] ~
8274 Splitting a table where the first element can be empty: >
8275 :let items = split(line, ':', 1)
8276< The opposite function is |join()|.
8277
8278 Can also be used as a |method|: >
8279 GetString()->split()
8280
8281sqrt({expr}) *sqrt()*
8282 Return the non-negative square root of Float {expr} as a
8283 |Float|.
8284 {expr} must evaluate to a |Float| or a |Number|. When {expr}
8285 is negative the result is NaN (Not a Number).
8286 Examples: >
8287 :echo sqrt(100)
8288< 10.0 >
8289 :echo sqrt(-4.01)
8290< nan
8291 "nan" may be different, it depends on system libraries.
8292
8293 Can also be used as a |method|: >
8294 Compute()->sqrt()
8295<
8296 {only available when compiled with the |+float| feature}
8297
8298
8299srand([{expr}]) *srand()*
8300 Initialize seed used by |rand()|:
8301 - If {expr} is not given, seed values are initialized by
8302 reading from /dev/urandom, if possible, or using time(NULL)
8303 a.k.a. epoch time otherwise; this only has second accuracy.
8304 - If {expr} is given it must be a Number. It is used to
8305 initialize the seed values. This is useful for testing or
8306 when a predictable sequence is intended.
8307
8308 Examples: >
8309 :let seed = srand()
8310 :let seed = srand(userinput)
8311 :echo rand(seed)
8312
8313state([{what}]) *state()*
8314 Return a string which contains characters indicating the
8315 current state. Mostly useful in callbacks that want to do
8316 work that may not always be safe. Roughly this works like:
8317 - callback uses state() to check if work is safe to do.
8318 Yes: then do it right away.
8319 No: add to work queue and add a |SafeState| and/or
8320 |SafeStateAgain| autocommand (|SafeState| triggers at
8321 toplevel, |SafeStateAgain| triggers after handling
8322 messages and callbacks).
8323 - When SafeState or SafeStateAgain is triggered and executes
8324 your autocommand, check with `state()` if the work can be
8325 done now, and if yes remove it from the queue and execute.
8326 Remove the autocommand if the queue is now empty.
8327 Also see |mode()|.
8328
8329 When {what} is given only characters in this string will be
8330 added. E.g, this checks if the screen has scrolled: >
8331 if state('s') == ''
8332 " screen has not scrolled
8333<
8334 These characters indicate the state, generally indicating that
8335 something is busy:
8336 m halfway a mapping, :normal command, feedkeys() or
8337 stuffed command
8338 o operator pending, e.g. after |d|
8339 a Insert mode autocomplete active
8340 x executing an autocommand
8341 w blocked on waiting, e.g. ch_evalexpr(), ch_read() and
8342 ch_readraw() when reading json
8343 S not triggering SafeState or SafeStateAgain, e.g. after
8344 |f| or a count
8345 c callback invoked, including timer (repeats for
8346 recursiveness up to "ccc")
8347 s screen has scrolled for messages
8348
8349str2float({string} [, {quoted}]) *str2float()*
8350 Convert String {string} to a Float. This mostly works the
8351 same as when using a floating point number in an expression,
8352 see |floating-point-format|. But it's a bit more permissive.
8353 E.g., "1e40" is accepted, while in an expression you need to
8354 write "1.0e40". The hexadecimal form "0x123" is also
8355 accepted, but not others, like binary or octal.
8356 When {quoted} is present and non-zero then embedded single
8357 quotes before the dot are ignored, thus "1'000.0" is a
8358 thousand.
8359 Text after the number is silently ignored.
8360 The decimal point is always '.', no matter what the locale is
8361 set to. A comma ends the number: "12,345.67" is converted to
8362 12.0. You can strip out thousands separators with
8363 |substitute()|: >
8364 let f = str2float(substitute(text, ',', '', 'g'))
8365<
8366 Can also be used as a |method|: >
8367 let f = text->substitute(',', '', 'g')->str2float()
8368<
8369 {only available when compiled with the |+float| feature}
8370
8371str2list({string} [, {utf8}]) *str2list()*
8372 Return a list containing the number values which represent
8373 each character in String {string}. Examples: >
8374 str2list(" ") returns [32]
8375 str2list("ABC") returns [65, 66, 67]
8376< |list2str()| does the opposite.
8377
8378 When {utf8} is omitted or zero, the current 'encoding' is used.
8379 When {utf8} is TRUE, always treat the String as UTF-8
8380 characters. With UTF-8 composing characters are handled
8381 properly: >
8382 str2list("á") returns [97, 769]
8383
8384< Can also be used as a |method|: >
8385 GetString()->str2list()
8386
8387
8388str2nr({string} [, {base} [, {quoted}]]) *str2nr()*
8389 Convert string {string} to a number.
8390 {base} is the conversion base, it can be 2, 8, 10 or 16.
8391 When {quoted} is present and non-zero then embedded single
8392 quotes are ignored, thus "1'000'000" is a million.
8393
8394 When {base} is omitted base 10 is used. This also means that
8395 a leading zero doesn't cause octal conversion to be used, as
8396 with the default String to Number conversion. Example: >
8397 let nr = str2nr('0123')
8398<
8399 When {base} is 16 a leading "0x" or "0X" is ignored. With a
8400 different base the result will be zero. Similarly, when
8401 {base} is 8 a leading "0", "0o" or "0O" is ignored, and when
8402 {base} is 2 a leading "0b" or "0B" is ignored.
8403 Text after the number is silently ignored.
8404
8405 Can also be used as a |method|: >
8406 GetText()->str2nr()
8407
8408
8409strcharlen({string}) *strcharlen()*
8410 The result is a Number, which is the number of characters
8411 in String {string}. Composing characters are ignored.
8412 |strchars()| can count the number of characters, counting
8413 composing characters separately.
8414
8415 Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
8416
8417 Can also be used as a |method|: >
8418 GetText()->strcharlen()
8419
8420
8421strcharpart({src}, {start} [, {len} [, {skipcc}]]) *strcharpart()*
8422 Like |strpart()| but using character index and length instead
8423 of byte index and length.
8424 When {skipcc} is omitted or zero, composing characters are
8425 counted separately.
8426 When {skipcc} set to 1, Composing characters are ignored,
8427 similar to |slice()|.
8428 When a character index is used where a character does not
8429 exist it is omitted and counted as one character. For
8430 example: >
8431 strcharpart('abc', -1, 2)
8432< results in 'a'.
8433
8434 Can also be used as a |method|: >
8435 GetText()->strcharpart(5)
8436
8437
8438strchars({string} [, {skipcc}]) *strchars()*
8439 The result is a Number, which is the number of characters
8440 in String {string}.
8441 When {skipcc} is omitted or zero, composing characters are
8442 counted separately.
8443 When {skipcc} set to 1, Composing characters are ignored.
8444 |strcharlen()| always does this.
8445
8446 Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
8447
8448 {skipcc} is only available after 7.4.755. For backward
8449 compatibility, you can define a wrapper function: >
8450 if has("patch-7.4.755")
8451 function s:strchars(str, skipcc)
8452 return strchars(a:str, a:skipcc)
8453 endfunction
8454 else
8455 function s:strchars(str, skipcc)
8456 if a:skipcc
8457 return strlen(substitute(a:str, ".", "x", "g"))
8458 else
8459 return strchars(a:str)
8460 endif
8461 endfunction
8462 endif
8463<
8464 Can also be used as a |method|: >
8465 GetText()->strchars()
8466
8467strdisplaywidth({string} [, {col}]) *strdisplaywidth()*
8468 The result is a Number, which is the number of display cells
8469 String {string} occupies on the screen when it starts at {col}
8470 (first column is zero). When {col} is omitted zero is used.
8471 Otherwise it is the screen column where to start. This
8472 matters for Tab characters.
8473 The option settings of the current window are used. This
8474 matters for anything that's displayed differently, such as
8475 'tabstop' and 'display'.
8476 When {string} contains characters with East Asian Width Class
8477 Ambiguous, this function's return value depends on 'ambiwidth'.
8478 Also see |strlen()|, |strwidth()| and |strchars()|.
8479
8480 Can also be used as a |method|: >
8481 GetText()->strdisplaywidth()
8482
8483strftime({format} [, {time}]) *strftime()*
8484 The result is a String, which is a formatted date and time, as
8485 specified by the {format} string. The given {time} is used,
8486 or the current time if no time is given. The accepted
8487 {format} depends on your system, thus this is not portable!
8488 See the manual page of the C function strftime() for the
8489 format. The maximum length of the result is 80 characters.
8490 See also |localtime()|, |getftime()| and |strptime()|.
8491 The language can be changed with the |:language| command.
8492 Examples: >
8493 :echo strftime("%c") Sun Apr 27 11:49:23 1997
8494 :echo strftime("%Y %b %d %X") 1997 Apr 27 11:53:25
8495 :echo strftime("%y%m%d %T") 970427 11:53:55
8496 :echo strftime("%H:%M") 11:55
8497 :echo strftime("%c", getftime("file.c"))
8498 Show mod time of file.c.
8499< Not available on all systems. To check use: >
8500 :if exists("*strftime")
8501
8502< Can also be used as a |method|: >
8503 GetFormat()->strftime()
8504
8505strgetchar({str}, {index}) *strgetchar()*
8506 Get character {index} from {str}. This uses a character
8507 index, not a byte index. Composing characters are considered
8508 separate characters here.
8509 Also see |strcharpart()| and |strchars()|.
8510
8511 Can also be used as a |method|: >
8512 GetText()->strgetchar(5)
8513
8514stridx({haystack}, {needle} [, {start}]) *stridx()*
8515 The result is a Number, which gives the byte index in
8516 {haystack} of the first occurrence of the String {needle}.
8517 If {start} is specified, the search starts at index {start}.
8518 This can be used to find a second match: >
8519 :let colon1 = stridx(line, ":")
8520 :let colon2 = stridx(line, ":", colon1 + 1)
8521< The search is done case-sensitive.
8522 For pattern searches use |match()|.
8523 -1 is returned if the {needle} does not occur in {haystack}.
8524 See also |strridx()|.
8525 Examples: >
8526 :echo stridx("An Example", "Example") 3
8527 :echo stridx("Starting point", "Start") 0
8528 :echo stridx("Starting point", "start") -1
8529< *strstr()* *strchr()*
8530 stridx() works similar to the C function strstr(). When used
8531 with a single character it works similar to strchr().
8532
8533 Can also be used as a |method|: >
8534 GetHaystack()->stridx(needle)
8535<
8536 *string()*
8537string({expr}) Return {expr} converted to a String. If {expr} is a Number,
8538 Float, String, Blob or a composition of them, then the result
8539 can be parsed back with |eval()|.
8540 {expr} type result ~
8541 String 'string' (single quotes are doubled)
8542 Number 123
8543 Float 123.123456 or 1.123456e8
8544 Funcref function('name')
8545 Blob 0z00112233.44556677.8899
8546 List [item, item]
8547 Dictionary {key: value, key: value}
8548
8549 When a |List| or |Dictionary| has a recursive reference it is
8550 replaced by "[...]" or "{...}". Using eval() on the result
8551 will then fail.
8552
8553 Can also be used as a |method|: >
8554 mylist->string()
8555
8556< Also see |strtrans()|.
8557
8558
8559strlen({string}) *strlen()*
8560 The result is a Number, which is the length of the String
8561 {string} in bytes.
8562 If the argument is a Number it is first converted to a String.
8563 For other types an error is given.
8564 If you want to count the number of multibyte characters use
8565 |strchars()|.
8566 Also see |len()|, |strdisplaywidth()| and |strwidth()|.
8567
8568 Can also be used as a |method|: >
8569 GetString()->strlen()
8570
8571strpart({src}, {start} [, {len} [, {chars}]]) *strpart()*
8572 The result is a String, which is part of {src}, starting from
8573 byte {start}, with the byte length {len}.
8574 When {chars} is present and TRUE then {len} is the number of
8575 characters positions (composing characters are not counted
8576 separately, thus "1" means one base character and any
8577 following composing characters).
8578 To count {start} as characters instead of bytes use
8579 |strcharpart()|.
8580
8581 When bytes are selected which do not exist, this doesn't
8582 result in an error, the bytes are simply omitted.
8583 If {len} is missing, the copy continues from {start} till the
8584 end of the {src}. >
8585 strpart("abcdefg", 3, 2) == "de"
8586 strpart("abcdefg", -2, 4) == "ab"
8587 strpart("abcdefg", 5, 4) == "fg"
8588 strpart("abcdefg", 3) == "defg"
8589
8590< Note: To get the first character, {start} must be 0. For
8591 example, to get the character under the cursor: >
8592 strpart(getline("."), col(".") - 1, 1, v:true)
8593<
8594 Can also be used as a |method|: >
8595 GetText()->strpart(5)
8596
8597strptime({format}, {timestring}) *strptime()*
8598 The result is a Number, which is a unix timestamp representing
8599 the date and time in {timestring}, which is expected to match
8600 the format specified in {format}.
8601
8602 The accepted {format} depends on your system, thus this is not
8603 portable! See the manual page of the C function strptime()
8604 for the format. Especially avoid "%c". The value of $TZ also
8605 matters.
8606
8607 If the {timestring} cannot be parsed with {format} zero is
8608 returned. If you do not know the format of {timestring} you
8609 can try different {format} values until you get a non-zero
8610 result.
8611
8612 See also |strftime()|.
8613 Examples: >
8614 :echo strptime("%Y %b %d %X", "1997 Apr 27 11:49:23")
8615< 862156163 >
8616 :echo strftime("%c", strptime("%y%m%d %T", "970427 11:53:55"))
8617< Sun Apr 27 11:53:55 1997 >
8618 :echo strftime("%c", strptime("%Y%m%d%H%M%S", "19970427115355") + 3600)
8619< Sun Apr 27 12:53:55 1997
8620
8621 Can also be used as a |method|: >
8622 GetFormat()->strptime(timestring)
8623<
8624 Not available on all systems. To check use: >
8625 :if exists("*strptime")
8626
8627strridx({haystack}, {needle} [, {start}]) *strridx()*
8628 The result is a Number, which gives the byte index in
8629 {haystack} of the last occurrence of the String {needle}.
8630 When {start} is specified, matches beyond this index are
8631 ignored. This can be used to find a match before a previous
8632 match: >
8633 :let lastcomma = strridx(line, ",")
8634 :let comma2 = strridx(line, ",", lastcomma - 1)
8635< The search is done case-sensitive.
8636 For pattern searches use |match()|.
8637 -1 is returned if the {needle} does not occur in {haystack}.
8638 If the {needle} is empty the length of {haystack} is returned.
8639 See also |stridx()|. Examples: >
8640 :echo strridx("an angry armadillo", "an") 3
8641< *strrchr()*
8642 When used with a single character it works similar to the C
8643 function strrchr().
8644
8645 Can also be used as a |method|: >
8646 GetHaystack()->strridx(needle)
8647
8648strtrans({string}) *strtrans()*
8649 The result is a String, which is {string} with all unprintable
8650 characters translated into printable characters |'isprint'|.
8651 Like they are shown in a window. Example: >
8652 echo strtrans(@a)
8653< This displays a newline in register a as "^@" instead of
8654 starting a new line.
8655
8656 Can also be used as a |method|: >
8657 GetString()->strtrans()
8658
8659strwidth({string}) *strwidth()*
8660 The result is a Number, which is the number of display cells
8661 String {string} occupies. A Tab character is counted as one
8662 cell, alternatively use |strdisplaywidth()|.
8663 When {string} contains characters with East Asian Width Class
8664 Ambiguous, this function's return value depends on 'ambiwidth'.
8665 Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
8666
8667 Can also be used as a |method|: >
8668 GetString()->strwidth()
8669
8670submatch({nr} [, {list}]) *submatch()* *E935*
8671 Only for an expression in a |:substitute| command or
8672 substitute() function.
8673 Returns the {nr}'th submatch of the matched text. When {nr}
8674 is 0 the whole matched text is returned.
8675 Note that a NL in the string can stand for a line break of a
8676 multi-line match or a NUL character in the text.
8677 Also see |sub-replace-expression|.
8678
8679 If {list} is present and non-zero then submatch() returns
8680 a list of strings, similar to |getline()| with two arguments.
8681 NL characters in the text represent NUL characters in the
8682 text.
8683 Only returns more than one item for |:substitute|, inside
8684 |substitute()| this list will always contain one or zero
8685 items, since there are no real line breaks.
8686
8687 When substitute() is used recursively only the submatches in
8688 the current (deepest) call can be obtained.
8689
8690 Examples: >
8691 :s/\d\+/\=submatch(0) + 1/
8692 :echo substitute(text, '\d\+', '\=submatch(0) + 1', '')
8693< This finds the first number in the line and adds one to it.
8694 A line break is included as a newline character.
8695
8696 Can also be used as a |method|: >
8697 GetNr()->submatch()
8698
8699substitute({string}, {pat}, {sub}, {flags}) *substitute()*
8700 The result is a String, which is a copy of {string}, in which
8701 the first match of {pat} is replaced with {sub}.
8702 When {flags} is "g", all matches of {pat} in {string} are
8703 replaced. Otherwise {flags} should be "".
8704
8705 This works like the ":substitute" command (without any flags).
8706 But the matching with {pat} is always done like the 'magic'
8707 option is set and 'cpoptions' is empty (to make scripts
8708 portable). 'ignorecase' is still relevant, use |/\c| or |/\C|
8709 if you want to ignore or match case and ignore 'ignorecase'.
8710 'smartcase' is not used. See |string-match| for how {pat} is
8711 used.
8712
8713 A "~" in {sub} is not replaced with the previous {sub}.
8714 Note that some codes in {sub} have a special meaning
8715 |sub-replace-special|. For example, to replace something with
8716 "\n" (two characters), use "\\\\n" or '\\n'.
8717
8718 When {pat} does not match in {string}, {string} is returned
8719 unmodified.
8720
8721 Example: >
8722 :let &path = substitute(&path, ",\\=[^,]*$", "", "")
8723< This removes the last component of the 'path' option. >
8724 :echo substitute("testing", ".*", "\\U\\0", "")
8725< results in "TESTING".
8726
8727 When {sub} starts with "\=", the remainder is interpreted as
8728 an expression. See |sub-replace-expression|. Example: >
8729 :echo substitute(s, '%\(\x\x\)',
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008730 \ '\=nr2char("0x" .. submatch(1))', 'g')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008731
8732< When {sub} is a Funcref that function is called, with one
8733 optional argument. Example: >
8734 :echo substitute(s, '%\(\x\x\)', SubNr, 'g')
8735< The optional argument is a list which contains the whole
8736 matched string and up to nine submatches, like what
8737 |submatch()| returns. Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008738 :echo substitute(s, '%\(\x\x\)', {m -> '0x' .. m[1]}, 'g')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008739
8740< Can also be used as a |method|: >
8741 GetString()->substitute(pat, sub, flags)
8742
8743swapinfo({fname}) *swapinfo()*
8744 The result is a dictionary, which holds information about the
8745 swapfile {fname}. The available fields are:
8746 version Vim version
8747 user user name
8748 host host name
8749 fname original file name
8750 pid PID of the Vim process that created the swap
8751 file
8752 mtime last modification time in seconds
8753 inode Optional: INODE number of the file
8754 dirty 1 if file was modified, 0 if not
8755 Note that "user" and "host" are truncated to at most 39 bytes.
8756 In case of failure an "error" item is added with the reason:
8757 Cannot open file: file not found or in accessible
8758 Cannot read file: cannot read first block
8759 Not a swap file: does not contain correct block ID
8760 Magic number mismatch: Info in first block is invalid
8761
8762 Can also be used as a |method|: >
8763 GetFilename()->swapinfo()
8764
8765swapname({buf}) *swapname()*
8766 The result is the swap file path of the buffer {expr}.
8767 For the use of {buf}, see |bufname()| above.
8768 If buffer {buf} is the current buffer, the result is equal to
8769 |:swapname| (unless there is no swap file).
8770 If buffer {buf} has no swap file, returns an empty string.
8771
8772 Can also be used as a |method|: >
8773 GetBufname()->swapname()
8774
8775synID({lnum}, {col}, {trans}) *synID()*
8776 The result is a Number, which is the syntax ID at the position
8777 {lnum} and {col} in the current window.
8778 The syntax ID can be used with |synIDattr()| and
8779 |synIDtrans()| to obtain syntax information about text.
8780
8781 {col} is 1 for the leftmost column, {lnum} is 1 for the first
8782 line. 'synmaxcol' applies, in a longer line zero is returned.
8783 Note that when the position is after the last character,
8784 that's where the cursor can be in Insert mode, synID() returns
8785 zero. {lnum} is used like with |getline()|.
8786
8787 When {trans} is |TRUE|, transparent items are reduced to the
8788 item that they reveal. This is useful when wanting to know
8789 the effective color. When {trans} is |FALSE|, the transparent
8790 item is returned. This is useful when wanting to know which
8791 syntax item is effective (e.g. inside parens).
8792 Warning: This function can be very slow. Best speed is
8793 obtained by going through the file in forward direction.
8794
8795 Example (echoes the name of the syntax item under the cursor): >
8796 :echo synIDattr(synID(line("."), col("."), 1), "name")
8797<
8798
8799synIDattr({synID}, {what} [, {mode}]) *synIDattr()*
8800 The result is a String, which is the {what} attribute of
8801 syntax ID {synID}. This can be used to obtain information
8802 about a syntax item.
8803 {mode} can be "gui", "cterm" or "term", to get the attributes
8804 for that mode. When {mode} is omitted, or an invalid value is
8805 used, the attributes for the currently active highlighting are
8806 used (GUI, cterm or term).
8807 Use synIDtrans() to follow linked highlight groups.
8808 {what} result
8809 "name" the name of the syntax item
8810 "fg" foreground color (GUI: color name used to set
8811 the color, cterm: color number as a string,
8812 term: empty string)
8813 "bg" background color (as with "fg")
8814 "font" font name (only available in the GUI)
8815 |highlight-font|
8816 "sp" special color for the GUI (as with "fg")
8817 |highlight-guisp|
8818 "ul" underline color for cterm: number as a string
8819 "fg#" like "fg", but for the GUI and the GUI is
8820 running the name in "#RRGGBB" form
8821 "bg#" like "fg#" for "bg"
8822 "sp#" like "fg#" for "sp"
8823 "bold" "1" if bold
8824 "italic" "1" if italic
8825 "reverse" "1" if reverse
8826 "inverse" "1" if inverse (= reverse)
8827 "standout" "1" if standout
8828 "underline" "1" if underlined
8829 "undercurl" "1" if undercurled
8830 "strike" "1" if strikethrough
8831
8832 Example (echoes the color of the syntax item under the
8833 cursor): >
8834 :echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg")
8835<
8836 Can also be used as a |method|: >
8837 :echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
8838
8839
8840synIDtrans({synID}) *synIDtrans()*
8841 The result is a Number, which is the translated syntax ID of
8842 {synID}. This is the syntax group ID of what is being used to
8843 highlight the character. Highlight links given with
8844 ":highlight link" are followed.
8845
8846 Can also be used as a |method|: >
8847 :echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
8848
8849synconcealed({lnum}, {col}) *synconcealed()*
8850 The result is a |List| with currently three items:
8851 1. The first item in the list is 0 if the character at the
8852 position {lnum} and {col} is not part of a concealable
8853 region, 1 if it is. {lnum} is used like with |getline()|.
8854 2. The second item in the list is a string. If the first item
8855 is 1, the second item contains the text which will be
8856 displayed in place of the concealed text, depending on the
8857 current setting of 'conceallevel' and 'listchars'.
8858 3. The third and final item in the list is a number
8859 representing the specific syntax region matched in the
8860 line. When the character is not concealed the value is
8861 zero. This allows detection of the beginning of a new
8862 concealable region if there are two consecutive regions
8863 with the same replacement character. For an example, if
8864 the text is "123456" and both "23" and "45" are concealed
8865 and replaced by the character "X", then:
8866 call returns ~
8867 synconcealed(lnum, 1) [0, '', 0]
8868 synconcealed(lnum, 2) [1, 'X', 1]
8869 synconcealed(lnum, 3) [1, 'X', 1]
8870 synconcealed(lnum, 4) [1, 'X', 2]
8871 synconcealed(lnum, 5) [1, 'X', 2]
8872 synconcealed(lnum, 6) [0, '', 0]
8873
8874
8875synstack({lnum}, {col}) *synstack()*
8876 Return a |List|, which is the stack of syntax items at the
8877 position {lnum} and {col} in the current window. {lnum} is
8878 used like with |getline()|. Each item in the List is an ID
8879 like what |synID()| returns.
8880 The first item in the List is the outer region, following are
8881 items contained in that one. The last one is what |synID()|
8882 returns, unless not the whole item is highlighted or it is a
8883 transparent item.
8884 This function is useful for debugging a syntax file.
8885 Example that shows the syntax stack under the cursor: >
8886 for id in synstack(line("."), col("."))
8887 echo synIDattr(id, "name")
8888 endfor
8889< When the position specified with {lnum} and {col} is invalid
8890 nothing is returned. The position just after the last
8891 character in a line and the first column in an empty line are
8892 valid positions.
8893
8894system({expr} [, {input}]) *system()* *E677*
8895 Get the output of the shell command {expr} as a |String|. See
8896 |systemlist()| to get the output as a |List|.
8897
8898 When {input} is given and is a |String| this string is written
8899 to a file and passed as stdin to the command. The string is
8900 written as-is, you need to take care of using the correct line
8901 separators yourself.
8902 If {input} is given and is a |List| it is written to the file
8903 in a way |writefile()| does with {binary} set to "b" (i.e.
8904 with a newline between each list item with newlines inside
8905 list items converted to NULs).
8906 When {input} is given and is a number that is a valid id for
8907 an existing buffer then the content of the buffer is written
8908 to the file line by line, each line terminated by a NL and
8909 NULs characters where the text has a NL.
8910
8911 Pipes are not used, the 'shelltemp' option is not used.
8912
8913 When prepended by |:silent| the terminal will not be set to
8914 cooked mode. This is meant to be used for commands that do
8915 not need the user to type. It avoids stray characters showing
8916 up on the screen which require |CTRL-L| to remove. >
8917 :silent let f = system('ls *.vim')
8918<
8919 Note: Use |shellescape()| or |::S| with |expand()| or
8920 |fnamemodify()| to escape special characters in a command
8921 argument. Newlines in {expr} may cause the command to fail.
8922 The characters in 'shellquote' and 'shellxquote' may also
8923 cause trouble.
8924 This is not to be used for interactive commands.
8925
8926 The result is a String. Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008927 :let files = system('ls ' .. shellescape(expand('%:h')))
8928 :let files = system('ls ' .. expand('%:h:S'))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008929
8930< To make the result more system-independent, the shell output
8931 is filtered to replace <CR> with <NL> for Macintosh, and
8932 <CR><NL> with <NL> for DOS-like systems.
8933 To avoid the string being truncated at a NUL, all NUL
8934 characters are replaced with SOH (0x01).
8935
8936 The command executed is constructed using several options:
8937 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote'
8938 ({tmp} is an automatically generated file name).
8939 For Unix, braces are put around {expr} to allow for
8940 concatenated commands.
8941
8942 The command will be executed in "cooked" mode, so that a
8943 CTRL-C will interrupt the command (on Unix at least).
8944
8945 The resulting error code can be found in |v:shell_error|.
8946 This function will fail in |restricted-mode|.
8947
8948 Note that any wrong value in the options mentioned above may
8949 make the function fail. It has also been reported to fail
8950 when using a security agent application.
8951 Unlike ":!cmd" there is no automatic check for changed files.
8952 Use |:checktime| to force a check.
8953
8954 Can also be used as a |method|: >
8955 :echo GetCmd()->system()
8956
8957
8958systemlist({expr} [, {input}]) *systemlist()*
8959 Same as |system()|, but returns a |List| with lines (parts of
8960 output separated by NL) with NULs transformed into NLs. Output
8961 is the same as |readfile()| will output with {binary} argument
8962 set to "b", except that there is no extra empty item when the
8963 result ends in a NL.
8964 Note that on MS-Windows you may get trailing CR characters.
8965
8966 To see the difference between "echo hello" and "echo -n hello"
8967 use |system()| and |split()|: >
8968 echo system('echo hello')->split('\n', 1)
8969<
8970 Returns an empty string on error.
8971
8972 Can also be used as a |method|: >
8973 :echo GetCmd()->systemlist()
8974
8975
8976tabpagebuflist([{arg}]) *tabpagebuflist()*
8977 The result is a |List|, where each item is the number of the
8978 buffer associated with each window in the current tab page.
8979 {arg} specifies the number of the tab page to be used. When
8980 omitted the current tab page is used.
8981 When {arg} is invalid the number zero is returned.
8982 To get a list of all buffers in all tabs use this: >
8983 let buflist = []
8984 for i in range(tabpagenr('$'))
8985 call extend(buflist, tabpagebuflist(i + 1))
8986 endfor
8987< Note that a buffer may appear in more than one window.
8988
8989 Can also be used as a |method|: >
8990 GetTabpage()->tabpagebuflist()
8991
8992tabpagenr([{arg}]) *tabpagenr()*
8993 The result is a Number, which is the number of the current
8994 tab page. The first tab page has number 1.
8995
8996 The optional argument {arg} supports the following values:
8997 $ the number of the last tab page (the tab page
8998 count).
8999 # the number of the last accessed tab page
9000 (where |g<Tab>| goes to). if there is no
9001 previous tab page 0 is returned.
9002 The number can be used with the |:tab| command.
9003
9004
9005tabpagewinnr({tabarg} [, {arg}]) *tabpagewinnr()*
9006 Like |winnr()| but for tab page {tabarg}.
9007 {tabarg} specifies the number of tab page to be used.
9008 {arg} is used like with |winnr()|:
9009 - When omitted the current window number is returned. This is
9010 the window which will be used when going to this tab page.
9011 - When "$" the number of windows is returned.
9012 - When "#" the previous window nr is returned.
9013 Useful examples: >
9014 tabpagewinnr(1) " current window of tab page 1
9015 tabpagewinnr(4, '$') " number of windows in tab page 4
9016< When {tabarg} is invalid zero is returned.
9017
9018 Can also be used as a |method|: >
9019 GetTabpage()->tabpagewinnr()
9020<
9021 *tagfiles()*
9022tagfiles() Returns a |List| with the file names used to search for tags
9023 for the current buffer. This is the 'tags' option expanded.
9024
9025
9026taglist({expr} [, {filename}]) *taglist()*
9027 Returns a |List| of tags matching the regular expression {expr}.
9028
9029 If {filename} is passed it is used to prioritize the results
9030 in the same way that |:tselect| does. See |tag-priority|.
9031 {filename} should be the full path of the file.
9032
9033 Each list item is a dictionary with at least the following
9034 entries:
9035 name Name of the tag.
9036 filename Name of the file where the tag is
9037 defined. It is either relative to the
9038 current directory or a full path.
9039 cmd Ex command used to locate the tag in
9040 the file.
9041 kind Type of the tag. The value for this
9042 entry depends on the language specific
9043 kind values. Only available when
9044 using a tags file generated by
Bram Moolenaar47c532e2022-03-19 15:18:53 +00009045 Universal/Exuberant ctags or hdrtag.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009046 static A file specific tag. Refer to
9047 |static-tag| for more information.
9048 More entries may be present, depending on the content of the
9049 tags file: access, implementation, inherits and signature.
9050 Refer to the ctags documentation for information about these
9051 fields. For C code the fields "struct", "class" and "enum"
9052 may appear, they give the name of the entity the tag is
9053 contained in.
9054
9055 The ex-command "cmd" can be either an ex search pattern, a
9056 line number or a line number followed by a byte number.
9057
9058 If there are no matching tags, then an empty list is returned.
9059
9060 To get an exact tag match, the anchors '^' and '$' should be
9061 used in {expr}. This also make the function work faster.
9062 Refer to |tag-regexp| for more information about the tag
9063 search regular expression pattern.
9064
9065 Refer to |'tags'| for information about how the tags file is
9066 located by Vim. Refer to |tags-file-format| for the format of
9067 the tags file generated by the different ctags tools.
9068
9069 Can also be used as a |method|: >
9070 GetTagpattern()->taglist()
9071
9072tan({expr}) *tan()*
9073 Return the tangent of {expr}, measured in radians, as a |Float|
9074 in the range [-inf, inf].
9075 {expr} must evaluate to a |Float| or a |Number|.
9076 Examples: >
9077 :echo tan(10)
9078< 0.648361 >
9079 :echo tan(-4.01)
9080< -1.181502
9081
9082 Can also be used as a |method|: >
9083 Compute()->tan()
9084<
9085 {only available when compiled with the |+float| feature}
9086
9087
9088tanh({expr}) *tanh()*
9089 Return the hyperbolic tangent of {expr} as a |Float| in the
9090 range [-1, 1].
9091 {expr} must evaluate to a |Float| or a |Number|.
9092 Examples: >
9093 :echo tanh(0.5)
9094< 0.462117 >
9095 :echo tanh(-1)
9096< -0.761594
9097
9098 Can also be used as a |method|: >
9099 Compute()->tanh()
9100<
9101 {only available when compiled with the |+float| feature}
9102
9103
9104tempname() *tempname()* *temp-file-name*
9105 The result is a String, which is the name of a file that
9106 doesn't exist. It can be used for a temporary file. The name
9107 is different for at least 26 consecutive calls. Example: >
9108 :let tmpfile = tempname()
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009109 :exe "redir > " .. tmpfile
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009110< For Unix, the file will be in a private directory |tempfile|.
9111 For MS-Windows forward slashes are used when the 'shellslash'
9112 option is set, or when 'shellcmdflag' starts with '-' and
9113 'shell' does not contain powershell or pwsh.
9114
9115
9116term_ functions are documented here: |terminal-function-details|
9117
9118
9119terminalprops() *terminalprops()*
9120 Returns a |Dictionary| with properties of the terminal that Vim
9121 detected from the response to |t_RV| request. See
9122 |v:termresponse| for the response itself. If |v:termresponse|
9123 is empty most values here will be 'u' for unknown.
9124 cursor_style whether sending |t_RS| works **
9125 cursor_blink_mode whether sending |t_RC| works **
9126 underline_rgb whether |t_8u| works **
9127 mouse mouse type supported
9128
9129 ** value 'u' for unknown, 'y' for yes, 'n' for no
9130
9131 If the |+termresponse| feature is missing then the result is
9132 an empty dictionary.
9133
9134 If "cursor_style" is 'y' then |t_RS| will be sent to request the
9135 current cursor style.
9136 If "cursor_blink_mode" is 'y' then |t_RC| will be sent to
9137 request the cursor blink status.
9138 "cursor_style" and "cursor_blink_mode" are also set if |t_u7|
9139 is not empty, Vim will detect the working of sending |t_RS|
9140 and |t_RC| on startup.
9141
9142 When "underline_rgb" is not 'y', then |t_8u| will be made empty.
9143 This avoids sending it to xterm, which would clear the colors.
9144
9145 For "mouse" the value 'u' is unknown
9146
9147 Also see:
9148 - 'ambiwidth' - detected by using |t_u7|.
9149 - |v:termstyleresp| and |v:termblinkresp| for the response to
9150 |t_RS| and |t_RC|.
9151
9152
9153test_ functions are documented here: |test-functions-details|
9154
9155
9156 *timer_info()*
9157timer_info([{id}])
9158 Return a list with information about timers.
9159 When {id} is given only information about this timer is
9160 returned. When timer {id} does not exist an empty list is
9161 returned.
9162 When {id} is omitted information about all timers is returned.
9163
9164 For each timer the information is stored in a |Dictionary| with
9165 these items:
9166 "id" the timer ID
9167 "time" time the timer was started with
9168 "remaining" time until the timer fires
9169 "repeat" number of times the timer will still fire;
9170 -1 means forever
9171 "callback" the callback
9172 "paused" 1 if the timer is paused, 0 otherwise
9173
9174 Can also be used as a |method|: >
9175 GetTimer()->timer_info()
9176
9177< {only available when compiled with the |+timers| feature}
9178
9179timer_pause({timer}, {paused}) *timer_pause()*
9180 Pause or unpause a timer. A paused timer does not invoke its
9181 callback when its time expires. Unpausing a timer may cause
9182 the callback to be invoked almost immediately if enough time
9183 has passed.
9184
9185 Pausing a timer is useful to avoid the callback to be called
9186 for a short time.
9187
9188 If {paused} evaluates to a non-zero Number or a non-empty
9189 String, then the timer is paused, otherwise it is unpaused.
9190 See |non-zero-arg|.
9191
9192 Can also be used as a |method|: >
9193 GetTimer()->timer_pause(1)
9194
9195< {only available when compiled with the |+timers| feature}
9196
9197 *timer_start()* *timer* *timers*
9198timer_start({time}, {callback} [, {options}])
9199 Create a timer and return the timer ID.
9200
9201 {time} is the waiting time in milliseconds. This is the
9202 minimum time before invoking the callback. When the system is
9203 busy or Vim is not waiting for input the time will be longer.
9204
9205 {callback} is the function to call. It can be the name of a
9206 function or a |Funcref|. It is called with one argument, which
9207 is the timer ID. The callback is only invoked when Vim is
9208 waiting for input.
9209 If you want to show a message look at |popup_notification()|
9210 to avoid interfering with what the user is doing.
9211
9212 {options} is a dictionary. Supported entries:
9213 "repeat" Number of times to repeat calling the
9214 callback. -1 means forever. When not present
9215 the callback will be called once.
9216 If the timer causes an error three times in a
9217 row the repeat is cancelled. This avoids that
9218 Vim becomes unusable because of all the error
9219 messages.
9220
9221 Example: >
9222 func MyHandler(timer)
9223 echo 'Handler called'
9224 endfunc
9225 let timer = timer_start(500, 'MyHandler',
9226 \ {'repeat': 3})
9227< This will invoke MyHandler() three times at 500 msec
9228 intervals.
9229
9230 Can also be used as a |method|: >
9231 GetMsec()->timer_start(callback)
9232
9233< Not available in the |sandbox|.
9234 {only available when compiled with the |+timers| feature}
9235
9236timer_stop({timer}) *timer_stop()*
9237 Stop a timer. The timer callback will no longer be invoked.
9238 {timer} is an ID returned by timer_start(), thus it must be a
9239 Number. If {timer} does not exist there is no error.
9240
9241 Can also be used as a |method|: >
9242 GetTimer()->timer_stop()
9243
9244< {only available when compiled with the |+timers| feature}
9245
9246timer_stopall() *timer_stopall()*
9247 Stop all timers. The timer callbacks will no longer be
9248 invoked. Useful if a timer is misbehaving. If there are no
9249 timers there is no error.
9250
9251 {only available when compiled with the |+timers| feature}
9252
9253tolower({expr}) *tolower()*
9254 The result is a copy of the String given, with all uppercase
9255 characters turned into lowercase (just like applying |gu| to
9256 the string).
9257
9258 Can also be used as a |method|: >
9259 GetText()->tolower()
9260
9261toupper({expr}) *toupper()*
9262 The result is a copy of the String given, with all lowercase
9263 characters turned into uppercase (just like applying |gU| to
9264 the string).
9265
9266 Can also be used as a |method|: >
9267 GetText()->toupper()
9268
9269tr({src}, {fromstr}, {tostr}) *tr()*
9270 The result is a copy of the {src} string with all characters
9271 which appear in {fromstr} replaced by the character in that
9272 position in the {tostr} string. Thus the first character in
9273 {fromstr} is translated into the first character in {tostr}
9274 and so on. Exactly like the unix "tr" command.
9275 This code also deals with multibyte characters properly.
9276
9277 Examples: >
9278 echo tr("hello there", "ht", "HT")
9279< returns "Hello THere" >
9280 echo tr("<blob>", "<>", "{}")
9281< returns "{blob}"
9282
9283 Can also be used as a |method|: >
9284 GetText()->tr(from, to)
9285
9286trim({text} [, {mask} [, {dir}]]) *trim()*
9287 Return {text} as a String where any character in {mask} is
9288 removed from the beginning and/or end of {text}.
9289
9290 If {mask} is not given, {mask} is all characters up to 0x20,
9291 which includes Tab, space, NL and CR, plus the non-breaking
9292 space character 0xa0.
9293
9294 The optional {dir} argument specifies where to remove the
9295 characters:
9296 0 remove from the beginning and end of {text}
9297 1 remove only at the beginning of {text}
9298 2 remove only at the end of {text}
9299 When omitted both ends are trimmed.
9300
9301 This function deals with multibyte characters properly.
9302
9303 Examples: >
9304 echo trim(" some text ")
9305< returns "some text" >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009306 echo trim(" \r\t\t\r RESERVE \t\n\x0B\xA0") .. "_TAIL"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009307< returns "RESERVE_TAIL" >
9308 echo trim("rm<Xrm<>X>rrm", "rm<>")
9309< returns "Xrm<>X" (characters in the middle are not removed) >
9310 echo trim(" vim ", " ", 2)
9311< returns " vim"
9312
9313 Can also be used as a |method|: >
9314 GetText()->trim()
9315
9316trunc({expr}) *trunc()*
9317 Return the largest integral value with magnitude less than or
9318 equal to {expr} as a |Float| (truncate towards zero).
9319 {expr} must evaluate to a |Float| or a |Number|.
9320 Examples: >
9321 echo trunc(1.456)
9322< 1.0 >
9323 echo trunc(-5.456)
9324< -5.0 >
9325 echo trunc(4.0)
9326< 4.0
9327
9328 Can also be used as a |method|: >
9329 Compute()->trunc()
9330<
9331 {only available when compiled with the |+float| feature}
9332
9333 *type()*
9334type({expr}) The result is a Number representing the type of {expr}.
9335 Instead of using the number directly, it is better to use the
9336 v:t_ variable that has the value:
9337 Number: 0 |v:t_number|
9338 String: 1 |v:t_string|
9339 Funcref: 2 |v:t_func|
9340 List: 3 |v:t_list|
9341 Dictionary: 4 |v:t_dict|
9342 Float: 5 |v:t_float|
9343 Boolean: 6 |v:t_bool| (v:false and v:true)
9344 None: 7 |v:t_none| (v:null and v:none)
9345 Job: 8 |v:t_job|
9346 Channel: 9 |v:t_channel|
9347 Blob: 10 |v:t_blob|
9348 For backward compatibility, this method can be used: >
9349 :if type(myvar) == type(0)
9350 :if type(myvar) == type("")
9351 :if type(myvar) == type(function("tr"))
9352 :if type(myvar) == type([])
9353 :if type(myvar) == type({})
9354 :if type(myvar) == type(0.0)
9355 :if type(myvar) == type(v:false)
9356 :if type(myvar) == type(v:none)
9357< To check if the v:t_ variables exist use this: >
9358 :if exists('v:t_number')
9359
9360< Can also be used as a |method|: >
9361 mylist->type()
9362
9363
9364typename({expr}) *typename()*
9365 Return a string representation of the type of {expr}.
9366 Example: >
9367 echo typename([1, 2, 3])
9368 list<number>
9369
9370
9371undofile({name}) *undofile()*
9372 Return the name of the undo file that would be used for a file
9373 with name {name} when writing. This uses the 'undodir'
9374 option, finding directories that exist. It does not check if
9375 the undo file exists.
9376 {name} is always expanded to the full path, since that is what
9377 is used internally.
9378 If {name} is empty undofile() returns an empty string, since a
9379 buffer without a file name will not write an undo file.
9380 Useful in combination with |:wundo| and |:rundo|.
9381 When compiled without the |+persistent_undo| option this always
9382 returns an empty string.
9383
9384 Can also be used as a |method|: >
9385 GetFilename()->undofile()
9386
9387undotree() *undotree()*
9388 Return the current state of the undo tree in a dictionary with
9389 the following items:
9390 "seq_last" The highest undo sequence number used.
9391 "seq_cur" The sequence number of the current position in
9392 the undo tree. This differs from "seq_last"
9393 when some changes were undone.
9394 "time_cur" Time last used for |:earlier| and related
9395 commands. Use |strftime()| to convert to
9396 something readable.
9397 "save_last" Number of the last file write. Zero when no
9398 write yet.
9399 "save_cur" Number of the current position in the undo
9400 tree.
9401 "synced" Non-zero when the last undo block was synced.
9402 This happens when waiting from input from the
9403 user. See |undo-blocks|.
9404 "entries" A list of dictionaries with information about
9405 undo blocks.
9406
9407 The first item in the "entries" list is the oldest undo item.
9408 Each List item is a |Dictionary| with these items:
9409 "seq" Undo sequence number. Same as what appears in
9410 |:undolist|.
9411 "time" Timestamp when the change happened. Use
9412 |strftime()| to convert to something readable.
9413 "newhead" Only appears in the item that is the last one
9414 that was added. This marks the last change
9415 and where further changes will be added.
9416 "curhead" Only appears in the item that is the last one
9417 that was undone. This marks the current
9418 position in the undo tree, the block that will
9419 be used by a redo command. When nothing was
9420 undone after the last change this item will
9421 not appear anywhere.
9422 "save" Only appears on the last block before a file
9423 write. The number is the write count. The
9424 first write has number 1, the last one the
9425 "save_last" mentioned above.
9426 "alt" Alternate entry. This is again a List of undo
9427 blocks. Each item may again have an "alt"
9428 item.
9429
9430uniq({list} [, {func} [, {dict}]]) *uniq()* *E882*
9431 Remove second and succeeding copies of repeated adjacent
9432 {list} items in-place. Returns {list}. If you want a list
9433 to remain unmodified make a copy first: >
9434 :let newlist = uniq(copy(mylist))
9435< The default compare function uses the string representation of
9436 each item. For the use of {func} and {dict} see |sort()|.
9437
9438 Can also be used as a |method|: >
9439 mylist->uniq()
9440
9441values({dict}) *values()*
9442 Return a |List| with all the values of {dict}. The |List| is
9443 in arbitrary order. Also see |items()| and |keys()|.
9444
9445 Can also be used as a |method|: >
9446 mydict->values()
9447
9448virtcol({expr}) *virtcol()*
9449 The result is a Number, which is the screen column of the file
9450 position given with {expr}. That is, the last screen position
9451 occupied by the character at that position, when the screen
9452 would be of unlimited width. When there is a <Tab> at the
9453 position, the returned Number will be the column at the end of
9454 the <Tab>. For example, for a <Tab> in column 1, with 'ts'
9455 set to 8, it returns 8. |conceal| is ignored.
9456 For the byte position use |col()|.
9457 For the use of {expr} see |col()|.
9458 When 'virtualedit' is used {expr} can be [lnum, col, off], where
9459 "off" is the offset in screen columns from the start of the
9460 character. E.g., a position within a <Tab> or after the last
9461 character. When "off" is omitted zero is used.
9462 When Virtual editing is active in the current mode, a position
9463 beyond the end of the line can be returned. |'virtualedit'|
9464 The accepted positions are:
9465 . the cursor position
9466 $ the end of the cursor line (the result is the
9467 number of displayed characters in the cursor line
9468 plus one)
9469 'x position of mark x (if the mark is not set, 0 is
9470 returned)
9471 v In Visual mode: the start of the Visual area (the
9472 cursor is the end). When not in Visual mode
9473 returns the cursor position. Differs from |'<| in
9474 that it's updated right away.
9475 Note that only marks in the current file can be used.
9476 Examples: >
9477 virtcol(".") with text "foo^Lbar", with cursor on the "^L", returns 5
9478 virtcol("$") with text "foo^Lbar", returns 9
9479 virtcol("'t") with text " there", with 't at 'h', returns 6
9480< The first column is 1. 0 is returned for an error.
9481 A more advanced example that echoes the maximum length of
9482 all lines: >
9483 echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
9484
9485< Can also be used as a |method|: >
9486 GetPos()->virtcol()
9487
9488
9489visualmode([{expr}]) *visualmode()*
9490 The result is a String, which describes the last Visual mode
9491 used in the current buffer. Initially it returns an empty
9492 string, but once Visual mode has been used, it returns "v",
9493 "V", or "<CTRL-V>" (a single CTRL-V character) for
9494 character-wise, line-wise, or block-wise Visual mode
9495 respectively.
9496 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009497 :exe "normal " .. visualmode()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009498< This enters the same Visual mode as before. It is also useful
9499 in scripts if you wish to act differently depending on the
9500 Visual mode that was used.
9501 If Visual mode is active, use |mode()| to get the Visual mode
9502 (e.g., in a |:vmap|).
9503 If {expr} is supplied and it evaluates to a non-zero Number or
9504 a non-empty String, then the Visual mode will be cleared and
9505 the old value is returned. See |non-zero-arg|.
9506
9507wildmenumode() *wildmenumode()*
9508 Returns |TRUE| when the wildmenu is active and |FALSE|
9509 otherwise. See 'wildmenu' and 'wildmode'.
9510 This can be used in mappings to handle the 'wildcharm' option
9511 gracefully. (Makes only sense with |mapmode-c| mappings).
9512
9513 For example to make <c-j> work like <down> in wildmode, use: >
9514 :cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"
9515<
9516 (Note, this needs the 'wildcharm' option set appropriately).
9517
9518win_execute({id}, {command} [, {silent}]) *win_execute()*
9519 Like `execute()` but in the context of window {id}.
9520 The window will temporarily be made the current window,
9521 without triggering autocommands or changing directory. When
9522 executing {command} autocommands will be triggered, this may
9523 have unexpected side effects. Use |:noautocmd| if needed.
9524 Example: >
9525 call win_execute(winid, 'set syntax=python')
9526< Doing the same with `setwinvar()` would not trigger
9527 autocommands and not actually show syntax highlighting.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009528 *E994*
9529 Not all commands are allowed in popup windows.
9530 When window {id} does not exist then no error is given and
9531 an empty string is returned.
9532
9533 Can also be used as a |method|, the base is passed as the
9534 second argument: >
9535 GetCommand()->win_execute(winid)
9536
9537win_findbuf({bufnr}) *win_findbuf()*
9538 Returns a |List| with |window-ID|s for windows that contain
9539 buffer {bufnr}. When there is none the list is empty.
9540
9541 Can also be used as a |method|: >
9542 GetBufnr()->win_findbuf()
9543
9544win_getid([{win} [, {tab}]]) *win_getid()*
9545 Get the |window-ID| for the specified window.
9546 When {win} is missing use the current window.
9547 With {win} this is the window number. The top window has
9548 number 1.
9549 Without {tab} use the current tab, otherwise the tab with
9550 number {tab}. The first tab has number one.
9551 Return zero if the window cannot be found.
9552
9553 Can also be used as a |method|: >
9554 GetWinnr()->win_getid()
9555
9556
9557win_gettype([{nr}]) *win_gettype()*
9558 Return the type of the window:
9559 "autocmd" autocommand window. Temporary window
9560 used to execute autocommands.
9561 "command" command-line window |cmdwin|
9562 (empty) normal window
9563 "loclist" |location-list-window|
9564 "popup" popup window |popup|
9565 "preview" preview window |preview-window|
9566 "quickfix" |quickfix-window|
9567 "unknown" window {nr} not found
9568
9569 When {nr} is omitted return the type of the current window.
9570 When {nr} is given return the type of this window by number or
9571 |window-ID|.
9572
9573 Also see the 'buftype' option. When running a terminal in a
9574 popup window then 'buftype' is "terminal" and win_gettype()
9575 returns "popup".
9576
9577 Can also be used as a |method|: >
9578 GetWinid()->win_gettype()
9579<
9580win_gotoid({expr}) *win_gotoid()*
9581 Go to window with ID {expr}. This may also change the current
9582 tabpage.
9583 Return TRUE if successful, FALSE if the window cannot be found.
9584
9585 Can also be used as a |method|: >
9586 GetWinid()->win_gotoid()
9587
9588win_id2tabwin({expr}) *win_id2tabwin()*
9589 Return a list with the tab number and window number of window
9590 with ID {expr}: [tabnr, winnr].
9591 Return [0, 0] if the window cannot be found.
9592
9593 Can also be used as a |method|: >
9594 GetWinid()->win_id2tabwin()
9595
9596win_id2win({expr}) *win_id2win()*
9597 Return the window number of window with ID {expr}.
9598 Return 0 if the window cannot be found in the current tabpage.
9599
9600 Can also be used as a |method|: >
9601 GetWinid()->win_id2win()
9602
Daniel Steinbergee630312022-01-10 13:36:34 +00009603win_move_separator({nr}, {offset}) *win_move_separator()*
9604 Move window {nr}'s vertical separator (i.e., the right border)
9605 by {offset} columns, as if being dragged by the mouse. {nr}
9606 can be a window number or |window-ID|. A positive {offset}
9607 moves right and a negative {offset} moves left. Moving a
9608 window's vertical separator will change the width of the
9609 window and the width of other windows adjacent to the vertical
9610 separator. The magnitude of movement may be smaller than
9611 specified (e.g., as a consequence of maintaining
9612 'winminwidth'). Returns TRUE if the window can be found and
9613 FALSE otherwise.
9614
9615 Can also be used as a |method|: >
9616 GetWinnr()->win_move_separator(offset)
9617
9618win_move_statusline({nr}, {offset}) *win_move_statusline()*
9619 Move window {nr}'s status line (i.e., the bottom border) by
9620 {offset} rows, as if being dragged by the mouse. {nr} can be a
9621 window number or |window-ID|. A positive {offset} moves down
9622 and a negative {offset} moves up. Moving a window's status
9623 line will change the height of the window and the height of
9624 other windows adjacent to the status line. The magnitude of
9625 movement may be smaller than specified (e.g., as a consequence
9626 of maintaining 'winminheight'). Returns TRUE if the window can
9627 be found and FALSE otherwise.
9628
9629 Can also be used as a |method|: >
9630 GetWinnr()->win_move_statusline(offset)
9631
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009632win_screenpos({nr}) *win_screenpos()*
9633 Return the screen position of window {nr} as a list with two
9634 numbers: [row, col]. The first window always has position
9635 [1, 1], unless there is a tabline, then it is [2, 1].
9636 {nr} can be the window number or the |window-ID|. Use zero
9637 for the current window.
9638 Returns [0, 0] if the window cannot be found in the current
9639 tabpage.
9640
9641 Can also be used as a |method|: >
9642 GetWinid()->win_screenpos()
9643<
9644win_splitmove({nr}, {target} [, {options}]) *win_splitmove()*
9645 Move the window {nr} to a new split of the window {target}.
9646 This is similar to moving to {target}, creating a new window
9647 using |:split| but having the same contents as window {nr}, and
9648 then closing {nr}.
9649
9650 Both {nr} and {target} can be window numbers or |window-ID|s.
9651 Both must be in the current tab page.
9652
9653 Returns zero for success, non-zero for failure.
9654
9655 {options} is a |Dictionary| with the following optional entries:
9656 "vertical" When TRUE, the split is created vertically,
9657 like with |:vsplit|.
9658 "rightbelow" When TRUE, the split is made below or to the
9659 right (if vertical). When FALSE, it is done
9660 above or to the left (if vertical). When not
9661 present, the values of 'splitbelow' and
9662 'splitright' are used.
9663
9664 Can also be used as a |method|: >
9665 GetWinid()->win_splitmove(target)
9666<
9667
9668 *winbufnr()*
9669winbufnr({nr}) The result is a Number, which is the number of the buffer
9670 associated with window {nr}. {nr} can be the window number or
9671 the |window-ID|.
9672 When {nr} is zero, the number of the buffer in the current
9673 window is returned.
9674 When window {nr} doesn't exist, -1 is returned.
9675 Example: >
9676 :echo "The file in the current window is " . bufname(winbufnr(0))
9677<
9678 Can also be used as a |method|: >
9679 FindWindow()->winbufnr()->bufname()
9680<
9681 *wincol()*
9682wincol() The result is a Number, which is the virtual column of the
9683 cursor in the window. This is counting screen cells from the
9684 left side of the window. The leftmost column is one.
9685
9686 *windowsversion()*
9687windowsversion()
9688 The result is a String. For MS-Windows it indicates the OS
9689 version. E.g, Windows 10 is "10.0", Windows 8 is "6.2",
9690 Windows XP is "5.1". For non-MS-Windows systems the result is
9691 an empty string.
9692
9693winheight({nr}) *winheight()*
9694 The result is a Number, which is the height of window {nr}.
9695 {nr} can be the window number or the |window-ID|.
9696 When {nr} is zero, the height of the current window is
9697 returned. When window {nr} doesn't exist, -1 is returned.
9698 An existing window always has a height of zero or more.
9699 This excludes any window toolbar line.
9700 Examples: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009701 :echo "The current window has " .. winheight(0) .. " lines."
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009702
9703< Can also be used as a |method|: >
9704 GetWinid()->winheight()
9705<
9706winlayout([{tabnr}]) *winlayout()*
9707 The result is a nested List containing the layout of windows
9708 in a tabpage.
9709
9710 Without {tabnr} use the current tabpage, otherwise the tabpage
9711 with number {tabnr}. If the tabpage {tabnr} is not found,
9712 returns an empty list.
9713
9714 For a leaf window, it returns:
9715 ['leaf', {winid}]
9716 For horizontally split windows, which form a column, it
9717 returns:
9718 ['col', [{nested list of windows}]]
9719 For vertically split windows, which form a row, it returns:
9720 ['row', [{nested list of windows}]]
9721
9722 Example: >
9723 " Only one window in the tab page
9724 :echo winlayout()
9725 ['leaf', 1000]
9726 " Two horizontally split windows
9727 :echo winlayout()
9728 ['col', [['leaf', 1000], ['leaf', 1001]]]
9729 " The second tab page, with three horizontally split
9730 " windows, with two vertically split windows in the
9731 " middle window
9732 :echo winlayout(2)
9733 ['col', [['leaf', 1002], ['row', [['leaf', 1003],
9734 ['leaf', 1001]]], ['leaf', 1000]]]
9735<
9736 Can also be used as a |method|: >
9737 GetTabnr()->winlayout()
9738<
9739 *winline()*
9740winline() The result is a Number, which is the screen line of the cursor
9741 in the window. This is counting screen lines from the top of
9742 the window. The first line is one.
9743 If the cursor was moved the view on the file will be updated
9744 first, this may cause a scroll.
9745
9746 *winnr()*
9747winnr([{arg}]) The result is a Number, which is the number of the current
9748 window. The top window has number 1.
9749 Returns zero for a popup window.
9750
9751 The optional argument {arg} supports the following values:
9752 $ the number of the last window (the window
9753 count).
9754 # the number of the last accessed window (where
9755 |CTRL-W_p| goes to). If there is no previous
9756 window or it is in another tab page 0 is
9757 returned.
9758 {N}j the number of the Nth window below the
9759 current window (where |CTRL-W_j| goes to).
9760 {N}k the number of the Nth window above the current
9761 window (where |CTRL-W_k| goes to).
9762 {N}h the number of the Nth window left of the
9763 current window (where |CTRL-W_h| goes to).
9764 {N}l the number of the Nth window right of the
9765 current window (where |CTRL-W_l| goes to).
9766 The number can be used with |CTRL-W_w| and ":wincmd w"
9767 |:wincmd|.
9768 Also see |tabpagewinnr()| and |win_getid()|.
9769 Examples: >
9770 let window_count = winnr('$')
9771 let prev_window = winnr('#')
9772 let wnum = winnr('3k')
9773
9774< Can also be used as a |method|: >
9775 GetWinval()->winnr()
9776<
9777 *winrestcmd()*
9778winrestcmd() Returns a sequence of |:resize| commands that should restore
9779 the current window sizes. Only works properly when no windows
9780 are opened or closed and the current window and tab page is
9781 unchanged.
9782 Example: >
9783 :let cmd = winrestcmd()
9784 :call MessWithWindowSizes()
9785 :exe cmd
9786<
9787 *winrestview()*
9788winrestview({dict})
9789 Uses the |Dictionary| returned by |winsaveview()| to restore
9790 the view of the current window.
9791 Note: The {dict} does not have to contain all values, that are
9792 returned by |winsaveview()|. If values are missing, those
9793 settings won't be restored. So you can use: >
9794 :call winrestview({'curswant': 4})
9795<
9796 This will only set the curswant value (the column the cursor
9797 wants to move on vertical movements) of the cursor to column 5
9798 (yes, that is 5), while all other settings will remain the
9799 same. This is useful, if you set the cursor position manually.
9800
9801 If you have changed the values the result is unpredictable.
9802 If the window size changed the result won't be the same.
9803
9804 Can also be used as a |method|: >
9805 GetView()->winrestview()
9806<
9807 *winsaveview()*
9808winsaveview() Returns a |Dictionary| that contains information to restore
9809 the view of the current window. Use |winrestview()| to
9810 restore the view.
9811 This is useful if you have a mapping that jumps around in the
9812 buffer and you want to go back to the original view.
9813 This does not save fold information. Use the 'foldenable'
9814 option to temporarily switch off folding, so that folds are
9815 not opened when moving around. This may have side effects.
9816 The return value includes:
9817 lnum cursor line number
9818 col cursor column (Note: the first column
naohiro ono56200ee2022-01-01 14:59:44 +00009819 zero, as opposed to what |getcurpos()|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009820 returns)
9821 coladd cursor column offset for 'virtualedit'
naohiro ono56200ee2022-01-01 14:59:44 +00009822 curswant column for vertical movement (Note:
9823 the first column is zero, as opposed
9824 to what |getcurpos()| returns). After
9825 |$| command it will be a very large
9826 number equal to |v:maxcol|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009827 topline first line in the window
9828 topfill filler lines, only in diff mode
9829 leftcol first column displayed; only used when
9830 'wrap' is off
9831 skipcol columns skipped
9832 Note that no option values are saved.
9833
9834
9835winwidth({nr}) *winwidth()*
9836 The result is a Number, which is the width of window {nr}.
9837 {nr} can be the window number or the |window-ID|.
9838 When {nr} is zero, the width of the current window is
9839 returned. When window {nr} doesn't exist, -1 is returned.
9840 An existing window always has a width of zero or more.
9841 Examples: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009842 :echo "The current window has " .. winwidth(0) .. " columns."
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009843 :if winwidth(0) <= 50
9844 : 50 wincmd |
9845 :endif
9846< For getting the terminal or screen size, see the 'columns'
9847 option.
9848
9849 Can also be used as a |method|: >
9850 GetWinid()->winwidth()
9851
9852
9853wordcount() *wordcount()*
9854 The result is a dictionary of byte/chars/word statistics for
9855 the current buffer. This is the same info as provided by
9856 |g_CTRL-G|
9857 The return value includes:
9858 bytes Number of bytes in the buffer
9859 chars Number of chars in the buffer
9860 words Number of words in the buffer
9861 cursor_bytes Number of bytes before cursor position
9862 (not in Visual mode)
9863 cursor_chars Number of chars before cursor position
9864 (not in Visual mode)
9865 cursor_words Number of words before cursor position
9866 (not in Visual mode)
9867 visual_bytes Number of bytes visually selected
9868 (only in Visual mode)
9869 visual_chars Number of chars visually selected
9870 (only in Visual mode)
9871 visual_words Number of words visually selected
9872 (only in Visual mode)
9873
9874
9875 *writefile()*
9876writefile({object}, {fname} [, {flags}])
9877 When {object} is a |List| write it to file {fname}. Each list
9878 item is separated with a NL. Each list item must be a String
9879 or Number.
9880 When {flags} contains "b" then binary mode is used: There will
9881 not be a NL after the last list item. An empty item at the
9882 end does cause the last line in the file to end in a NL.
9883
9884 When {object} is a |Blob| write the bytes to file {fname}
9885 unmodified.
9886
9887 When {flags} contains "a" then append mode is used, lines are
9888 appended to the file: >
9889 :call writefile(["foo"], "event.log", "a")
9890 :call writefile(["bar"], "event.log", "a")
9891<
9892 When {flags} contains "s" then fsync() is called after writing
9893 the file. This flushes the file to disk, if possible. This
9894 takes more time but avoids losing the file if the system
9895 crashes.
9896 When {flags} does not contain "S" or "s" then fsync() is
9897 called if the 'fsync' option is set.
9898 When {flags} contains "S" then fsync() is not called, even
9899 when 'fsync' is set.
9900
9901 All NL characters are replaced with a NUL character.
9902 Inserting CR characters needs to be done before passing {list}
9903 to writefile().
9904 An existing file is overwritten, if possible.
9905 When the write fails -1 is returned, otherwise 0. There is an
9906 error message if the file can't be created or when writing
9907 fails.
9908 Also see |readfile()|.
9909 To copy a file byte for byte: >
9910 :let fl = readfile("foo", "b")
9911 :call writefile(fl, "foocopy", "b")
9912
9913< Can also be used as a |method|: >
9914 GetText()->writefile("thefile")
9915
9916
9917xor({expr}, {expr}) *xor()*
9918 Bitwise XOR on the two arguments. The arguments are converted
9919 to a number. A List, Dict or Float argument causes an error.
9920 Example: >
9921 :let bits = xor(bits, 0x80)
9922<
9923 Can also be used as a |method|: >
9924 :let bits = bits->xor(0x80)
9925<
9926
9927==============================================================================
99283. Feature list *feature-list*
9929
9930There are three types of features:
99311. Features that are only supported when they have been enabled when Vim
9932 was compiled |+feature-list|. Example: >
9933 :if has("cindent")
9934< *gui_running*
99352. Features that are only supported when certain conditions have been met.
9936 Example: >
9937 :if has("gui_running")
9938< *has-patch*
99393. Beyond a certain version or at a certain version and including a specific
9940 patch. The "patch-7.4.248" feature means that the Vim version is 7.5 or
9941 later, or it is version 7.4 and patch 248 was included. Example: >
9942 :if has("patch-7.4.248")
9943< Note that it's possible for patch 248 to be omitted even though 249 is
9944 included. Only happens when cherry-picking patches.
9945 Note that this form only works for patch 7.4.237 and later, before that
9946 you need to check for the patch and the v:version. Example (checking
9947 version 6.2.148 or later): >
9948 :if v:version > 602 || (v:version == 602 && has("patch148"))
9949
9950Hint: To find out if Vim supports backslashes in a file name (MS-Windows),
9951use: `if exists('+shellslash')`
9952
9953
9954acl Compiled with |ACL| support.
9955all_builtin_terms Compiled with all builtin terminals enabled.
9956amiga Amiga version of Vim.
9957arabic Compiled with Arabic support |Arabic|.
9958arp Compiled with ARP support (Amiga).
9959autocmd Compiled with autocommand support. (always true)
9960autochdir Compiled with support for 'autochdir'
9961autoservername Automatically enable |clientserver|
9962balloon_eval Compiled with |balloon-eval| support.
9963balloon_multiline GUI supports multiline balloons.
9964beos BeOS version of Vim.
9965browse Compiled with |:browse| support, and browse() will
9966 work.
9967browsefilter Compiled with support for |browsefilter|.
9968bsd Compiled on an OS in the BSD family (excluding macOS).
9969builtin_terms Compiled with some builtin terminals.
9970byte_offset Compiled with support for 'o' in 'statusline'
9971channel Compiled with support for |channel| and |job|
9972cindent Compiled with 'cindent' support.
9973clientserver Compiled with remote invocation support |clientserver|.
9974clipboard Compiled with 'clipboard' support.
9975clipboard_working Compiled with 'clipboard' support and it can be used.
9976cmdline_compl Compiled with |cmdline-completion| support.
9977cmdline_hist Compiled with |cmdline-history| support.
9978cmdline_info Compiled with 'showcmd' and 'ruler' support.
9979comments Compiled with |'comments'| support.
9980compatible Compiled to be very Vi compatible.
9981conpty Platform where |ConPTY| can be used.
9982cryptv Compiled with encryption support |encryption|.
9983cscope Compiled with |cscope| support.
9984cursorbind Compiled with |'cursorbind'| (always true)
9985debug Compiled with "DEBUG" defined.
9986dialog_con Compiled with console dialog support.
9987dialog_gui Compiled with GUI dialog support.
9988diff Compiled with |vimdiff| and 'diff' support.
9989digraphs Compiled with support for digraphs.
9990directx Compiled with support for DirectX and 'renderoptions'.
9991dnd Compiled with support for the "~ register |quote_~|.
9992drop_file Compiled with |drop_file| support.
9993ebcdic Compiled on a machine with ebcdic character set.
9994emacs_tags Compiled with support for Emacs tags.
9995eval Compiled with expression evaluation support. Always
9996 true, of course!
9997ex_extra |+ex_extra| (always true)
9998extra_search Compiled with support for |'incsearch'| and
9999 |'hlsearch'|
10000farsi Support for Farsi was removed |farsi|.
10001file_in_path Compiled with support for |gf| and |<cfile>|
10002filterpipe When 'shelltemp' is off pipes are used for shell
10003 read/write/filter commands
10004find_in_path Compiled with support for include file searches
10005 |+find_in_path|.
10006float Compiled with support for |Float|.
10007fname_case Case in file names matters (for Amiga and MS-Windows
10008 this is not present).
10009folding Compiled with |folding| support.
10010footer Compiled with GUI footer support. |gui-footer|
10011fork Compiled to use fork()/exec() instead of system().
10012gettext Compiled with message translation |multi-lang|
10013gui Compiled with GUI enabled.
10014gui_athena Compiled with Athena GUI.
10015gui_gnome Compiled with Gnome support (gui_gtk is also defined).
10016gui_gtk Compiled with GTK+ GUI (any version).
10017gui_gtk2 Compiled with GTK+ 2 GUI (gui_gtk is also defined).
10018gui_gtk3 Compiled with GTK+ 3 GUI (gui_gtk is also defined).
10019gui_haiku Compiled with Haiku GUI.
10020gui_mac Compiled with Macintosh GUI.
10021gui_motif Compiled with Motif GUI.
10022gui_photon Compiled with Photon GUI.
10023gui_running Vim is running in the GUI, or it will start soon.
10024gui_win32 Compiled with MS-Windows Win32 GUI.
10025gui_win32s idem, and Win32s system being used (Windows 3.1)
10026haiku Haiku version of Vim.
10027hangul_input Compiled with Hangul input support. |hangul|
10028hpux HP-UX version of Vim.
10029iconv Can use iconv() for conversion.
10030insert_expand Compiled with support for CTRL-X expansion commands in
10031 Insert mode. (always true)
10032job Compiled with support for |channel| and |job|
10033ipv6 Compiled with support for IPv6 networking in |channel|.
10034jumplist Compiled with |jumplist| support.
10035keymap Compiled with 'keymap' support.
10036lambda Compiled with |lambda| support.
10037langmap Compiled with 'langmap' support.
10038libcall Compiled with |libcall()| support.
10039linebreak Compiled with 'linebreak', 'breakat', 'showbreak' and
10040 'breakindent' support.
10041linux Linux version of Vim.
10042lispindent Compiled with support for lisp indenting.
10043listcmds Compiled with commands for the buffer list |:files|
10044 and the argument list |arglist|.
10045localmap Compiled with local mappings and abbr. |:map-local|
10046lua Compiled with Lua interface |Lua|.
10047mac Any Macintosh version of Vim cf. osx
10048macunix Synonym for osxdarwin
10049menu Compiled with support for |:menu|.
10050mksession Compiled with support for |:mksession|.
10051modify_fname Compiled with file name modifiers. |filename-modifiers|
10052 (always true)
10053mouse Compiled with support for mouse.
10054mouse_dec Compiled with support for Dec terminal mouse.
10055mouse_gpm Compiled with support for gpm (Linux console mouse)
10056mouse_gpm_enabled GPM mouse is working
10057mouse_netterm Compiled with support for netterm mouse.
10058mouse_pterm Compiled with support for qnx pterm mouse.
10059mouse_sysmouse Compiled with support for sysmouse (*BSD console mouse)
10060mouse_sgr Compiled with support for sgr mouse.
10061mouse_urxvt Compiled with support for urxvt mouse.
10062mouse_xterm Compiled with support for xterm mouse.
10063mouseshape Compiled with support for 'mouseshape'.
10064multi_byte Compiled with support for 'encoding' (always true)
10065multi_byte_encoding 'encoding' is set to a multibyte encoding.
10066multi_byte_ime Compiled with support for IME input method.
10067multi_lang Compiled with support for multiple languages.
10068mzscheme Compiled with MzScheme interface |mzscheme|.
10069nanotime Compiled with sub-second time stamp checks.
10070netbeans_enabled Compiled with support for |netbeans| and connected.
10071netbeans_intg Compiled with support for |netbeans|.
10072num64 Compiled with 64-bit |Number| support.
10073ole Compiled with OLE automation support for Win32.
10074osx Compiled for macOS cf. mac
10075osxdarwin Compiled for macOS, with |mac-darwin-feature|
10076packages Compiled with |packages| support.
10077path_extra Compiled with up/downwards search in 'path' and 'tags'
10078perl Compiled with Perl interface.
10079persistent_undo Compiled with support for persistent undo history.
10080postscript Compiled with PostScript file printing.
10081printer Compiled with |:hardcopy| support.
10082profile Compiled with |:profile| support.
10083python Python 2.x interface available. |has-python|
10084python_compiled Compiled with Python 2.x interface. |has-python|
10085python_dynamic Python 2.x interface is dynamically loaded. |has-python|
10086python3 Python 3.x interface available. |has-python|
10087python3_compiled Compiled with Python 3.x interface. |has-python|
10088python3_dynamic Python 3.x interface is dynamically loaded. |has-python|
10089pythonx Python 2.x and/or 3.x interface available. |python_x|
10090qnx QNX version of Vim.
10091quickfix Compiled with |quickfix| support.
10092reltime Compiled with |reltime()| support.
10093rightleft Compiled with 'rightleft' support.
10094ruby Compiled with Ruby interface |ruby|.
10095scrollbind Compiled with 'scrollbind' support. (always true)
10096showcmd Compiled with 'showcmd' support.
10097signs Compiled with |:sign| support.
10098smartindent Compiled with 'smartindent' support.
10099sodium Compiled with libsodium for better crypt support
10100sound Compiled with sound support, e.g. `sound_playevent()`
10101spell Compiled with spell checking support |spell|.
10102startuptime Compiled with |--startuptime| support.
10103statusline Compiled with support for 'statusline', 'rulerformat'
10104 and special formats of 'titlestring' and 'iconstring'.
10105sun SunOS version of Vim.
10106sun_workshop Support for Sun |workshop| has been removed.
10107syntax Compiled with syntax highlighting support |syntax|.
10108syntax_items There are active syntax highlighting items for the
10109 current buffer.
10110system Compiled to use system() instead of fork()/exec().
10111tag_binary Compiled with binary searching in tags files
10112 |tag-binary-search|.
10113tag_old_static Support for old static tags was removed, see
10114 |tag-old-static|.
10115tcl Compiled with Tcl interface.
10116termguicolors Compiled with true color in terminal support.
10117terminal Compiled with |terminal| support.
10118terminfo Compiled with terminfo instead of termcap.
10119termresponse Compiled with support for |t_RV| and |v:termresponse|.
10120textobjects Compiled with support for |text-objects|.
10121textprop Compiled with support for |text-properties|.
10122tgetent Compiled with tgetent support, able to use a termcap
10123 or terminfo file.
10124timers Compiled with |timer_start()| support.
10125title Compiled with window title support |'title'|.
10126toolbar Compiled with support for |gui-toolbar|.
10127ttyin input is a terminal (tty)
10128ttyout output is a terminal (tty)
10129unix Unix version of Vim. *+unix*
10130unnamedplus Compiled with support for "unnamedplus" in 'clipboard'
10131user_commands User-defined commands. (always true)
10132vartabs Compiled with variable tabstop support |'vartabstop'|.
10133vcon Win32: Virtual console support is working, can use
10134 'termguicolors'. Also see |+vtp|.
10135vertsplit Compiled with vertically split windows |:vsplit|.
10136 (always true)
10137vim_starting True while initial source'ing takes place. |startup|
10138 *vim_starting*
Bram Moolenaara6feb162022-01-02 12:06:33 +000010139vim9script Compiled with |Vim9| script support
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010140viminfo Compiled with viminfo support.
10141vimscript-1 Compiled Vim script version 1 support
10142vimscript-2 Compiled Vim script version 2 support
10143vimscript-3 Compiled Vim script version 3 support
10144virtualedit Compiled with 'virtualedit' option. (always true)
10145visual Compiled with Visual mode. (always true)
10146visualextra Compiled with extra Visual mode commands. (always
10147 true) |blockwise-operators|.
10148vms VMS version of Vim.
10149vreplace Compiled with |gR| and |gr| commands. (always true)
10150vtp Compiled for vcon support |+vtp| (check vcon to find
10151 out if it works in the current console).
10152wildignore Compiled with 'wildignore' option.
10153wildmenu Compiled with 'wildmenu' option.
10154win16 old version for MS-Windows 3.1 (always false)
10155win32 Win32 version of Vim (MS-Windows 95 and later, 32 or
10156 64 bits)
10157win32unix Win32 version of Vim, using Unix files (Cygwin)
10158win64 Win64 version of Vim (MS-Windows 64 bit).
10159win95 Win32 version for MS-Windows 95/98/ME (always false)
10160winaltkeys Compiled with 'winaltkeys' option.
10161windows Compiled with support for more than one window.
10162 (always true)
10163writebackup Compiled with 'writebackup' default on.
10164xfontset Compiled with X fontset support |xfontset|.
10165xim Compiled with X input method support |xim|.
10166xpm Compiled with pixmap support.
10167xpm_w32 Compiled with pixmap support for Win32. (Only for
10168 backward compatibility. Use "xpm" instead.)
10169xsmp Compiled with X session management support.
10170xsmp_interact Compiled with interactive X session management support.
10171xterm_clipboard Compiled with support for xterm clipboard.
10172xterm_save Compiled with support for saving and restoring the
10173 xterm screen.
10174x11 Compiled with X11 support.
10175
10176
10177==============================================================================
101784. Matching a pattern in a String *string-match*
10179
10180This is common between several functions. A regexp pattern as explained at
10181|pattern| is normally used to find a match in the buffer lines. When a
10182pattern is used to find a match in a String, almost everything works in the
10183same way. The difference is that a String is handled like it is one line.
10184When it contains a "\n" character, this is not seen as a line break for the
10185pattern. It can be matched with a "\n" in the pattern, or with ".". Example:
10186>
10187 :let a = "aaaa\nxxxx"
10188 :echo matchstr(a, "..\n..")
10189 aa
10190 xx
10191 :echo matchstr(a, "a.x")
10192 a
10193 x
10194
10195Don't forget that "^" will only match at the first character of the String and
10196"$" at the last character of the string. They don't match after or before a
10197"\n".
10198
10199 vim:tw=78:ts=8:noet:ft=help:norl: