blob: 2605f6d3b698f35602a6283b693f014f5f0f4bc7 [file] [log] [blame]
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00001*builtin.txt* For Vim version 8.2. Last change: 2022 Jan 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
542sort({list} [, {func} [, {dict}]])
543 List sort {list}, using {func} to compare
544sound_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
644test_gui_drop_files({list}, {row}, {col}, {mods})
645 none drop a list of files in a window
646test_gui_mouse_event({button}, {row}, {col}, {repeated}, {mods})
647 none add a mouse event to the input buffer
648test_ignore_error({expr}) none ignore a specific error
649test_null_blob() Blob null value for testing
650test_null_channel() Channel null value for testing
651test_null_dict() Dict null value for testing
652test_null_function() Funcref null value for testing
653test_null_job() Job null value for testing
654test_null_list() List null value for testing
655test_null_partial() Funcref null value for testing
656test_null_string() String null value for testing
657test_option_not_set({name}) none reset flag indicating option was set
658test_override({expr}, {val}) none test with Vim internal overrides
659test_refcount({expr}) Number get the reference count of {expr}
660test_scrollbar({which}, {value}, {dragging})
661 none scroll in the GUI for testing
662test_setmouse({row}, {col}) none set the mouse position for testing
663test_settime({expr}) none set current time for testing
664test_srand_seed([seed]) none set seed for testing srand()
665test_unknown() any unknown value for testing
666test_void() any void value for testing
667timer_info([{id}]) List information about timers
668timer_pause({id}, {pause}) none pause or unpause a timer
669timer_start({time}, {callback} [, {options}])
670 Number create a timer
671timer_stop({timer}) none stop a timer
672timer_stopall() none stop all timers
673tolower({expr}) String the String {expr} switched to lowercase
674toupper({expr}) String the String {expr} switched to uppercase
675tr({src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr}
676 to chars in {tostr}
677trim({text} [, {mask} [, {dir}]])
678 String trim characters in {mask} from {text}
679trunc({expr}) Float truncate Float {expr}
680type({expr}) Number type of value {expr}
681typename({expr}) String representation of the type of {expr}
682undofile({name}) String undo file name for {name}
683undotree() List undo file tree
684uniq({list} [, {func} [, {dict}]])
685 List remove adjacent duplicates from a list
686values({dict}) List values in {dict}
687virtcol({expr}) Number screen column of cursor or mark
688visualmode([expr]) String last visual mode used
689wildmenumode() Number whether 'wildmenu' mode is active
690win_execute({id}, {command} [, {silent}])
691 String execute {command} in window {id}
692win_findbuf({bufnr}) List find windows containing {bufnr}
693win_getid([{win} [, {tab}]]) Number get window ID for {win} in {tab}
694win_gettype([{nr}]) String type of window {nr}
695win_gotoid({expr}) Number go to window with ID {expr}
696win_id2tabwin({expr}) List get tab and window nr from window ID
697win_id2win({expr}) Number get window nr from window ID
Daniel Steinbergee630312022-01-10 13:36:34 +0000698win_move_separator({nr}) Number move window vertical separator
699win_move_statusline({nr}) Number move window status line
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000700win_screenpos({nr}) List get screen position of window {nr}
701win_splitmove({nr}, {target} [, {options}])
702 Number move window {nr} to split of {target}
703winbufnr({nr}) Number buffer number of window {nr}
704wincol() Number window column of the cursor
705windowsversion() String MS-Windows OS version
706winheight({nr}) Number height of window {nr}
707winlayout([{tabnr}]) List layout of windows in tab {tabnr}
708winline() Number window line of the cursor
709winnr([{expr}]) Number number of current window
710winrestcmd() String returns command to restore window sizes
711winrestview({dict}) none restore view of current window
712winsaveview() Dict save view of current window
713winwidth({nr}) Number width of window {nr}
714wordcount() Dict get byte/char/word statistics
715writefile({object}, {fname} [, {flags}])
716 Number write |Blob| or |List| of lines to file
717xor({expr}, {expr}) Number bitwise XOR
718
719==============================================================================
7202. Details *builtin-function-details*
721
722Not all functions are here, some have been moved to a help file covering the
723specific functionality.
724
725abs({expr}) *abs()*
726 Return the absolute value of {expr}. When {expr} evaluates to
727 a |Float| abs() returns a |Float|. When {expr} can be
728 converted to a |Number| abs() returns a |Number|. Otherwise
729 abs() gives an error message and returns -1.
730 Examples: >
731 echo abs(1.456)
732< 1.456 >
733 echo abs(-5.456)
734< 5.456 >
735 echo abs(-4)
736< 4
737
738 Can also be used as a |method|: >
739 Compute()->abs()
740
741< {only available when compiled with the |+float| feature}
742
743
744acos({expr}) *acos()*
745 Return the arc cosine of {expr} measured in radians, as a
746 |Float| in the range of [0, pi].
747 {expr} must evaluate to a |Float| or a |Number| in the range
748 [-1, 1].
749 Examples: >
750 :echo acos(0)
751< 1.570796 >
752 :echo acos(-0.5)
753< 2.094395
754
755 Can also be used as a |method|: >
756 Compute()->acos()
757
758< {only available when compiled with the |+float| feature}
759
760
761add({object}, {expr}) *add()*
762 Append the item {expr} to |List| or |Blob| {object}. Returns
763 the resulting |List| or |Blob|. Examples: >
764 :let alist = add([1, 2, 3], item)
765 :call add(mylist, "woodstock")
766< Note that when {expr} is a |List| it is appended as a single
767 item. Use |extend()| to concatenate |Lists|.
768 When {object} is a |Blob| then {expr} must be a number.
769 Use |insert()| to add an item at another position.
770
771 Can also be used as a |method|: >
772 mylist->add(val1)->add(val2)
773
774
775and({expr}, {expr}) *and()*
776 Bitwise AND on the two arguments. The arguments are converted
777 to a number. A List, Dict or Float argument causes an error.
778 Example: >
779 :let flag = and(bits, 0x80)
780< Can also be used as a |method|: >
781 :let flag = bits->and(0x80)
782
783
784append({lnum}, {text}) *append()*
785 When {text} is a |List|: Append each item of the |List| as a
786 text line below line {lnum} in the current buffer.
787 Otherwise append {text} as one text line below line {lnum} in
788 the current buffer.
789 Any type of item is accepted and converted to a String.
790 {lnum} can be zero to insert a line before the first one.
791 {lnum} is used like with |getline()|.
792 Returns 1 for failure ({lnum} out of range or out of memory),
793 0 for success. In |Vim9| script an invalid argument or
794 negative number results in an error. Example: >
795 :let failed = append(line('$'), "# THE END")
796 :let failed = append(0, ["Chapter 1", "the beginning"])
797
798< Can also be used as a |method| after a List, the base is
799 passed as the second argument: >
800 mylist->append(lnum)
801
802
803appendbufline({buf}, {lnum}, {text}) *appendbufline()*
804 Like |append()| but append the text in buffer {buf}.
805
806 This function works only for loaded buffers. First call
807 |bufload()| if needed.
808
809 For the use of {buf}, see |bufname()|.
810
Bram Moolenaar8b6256f2021-12-28 11:24:49 +0000811 {lnum} is the line number to append below. Note that using
812 |line()| would use the current buffer, not the one appending
813 to. Use "$" to append at the end of the buffer. Other string
814 values are not supported.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000815
816 On success 0 is returned, on failure 1 is returned.
817 In |Vim9| script an error is given for an invalid {lnum}.
818
819 If {buf} is not a valid buffer or {lnum} is not valid, an
820 error message is given. Example: >
821 :let failed = appendbufline(13, 0, "# THE START")
822<
823 Can also be used as a |method| after a List, the base is
824 passed as the second argument: >
825 mylist->appendbufline(buf, lnum)
826
827
828argc([{winid}]) *argc()*
829 The result is the number of files in the argument list. See
830 |arglist|.
831 If {winid} is not supplied, the argument list of the current
832 window is used.
833 If {winid} is -1, the global argument list is used.
834 Otherwise {winid} specifies the window of which the argument
835 list is used: either the window number or the window ID.
836 Returns -1 if the {winid} argument is invalid.
837
838 *argidx()*
839argidx() The result is the current index in the argument list. 0 is
840 the first file. argc() - 1 is the last one. See |arglist|.
841
842 *arglistid()*
843arglistid([{winnr} [, {tabnr}]])
844 Return the argument list ID. This is a number which
845 identifies the argument list being used. Zero is used for the
846 global argument list. See |arglist|.
847 Returns -1 if the arguments are invalid.
848
849 Without arguments use the current window.
850 With {winnr} only use this window in the current tab page.
851 With {winnr} and {tabnr} use the window in the specified tab
852 page.
853 {winnr} can be the window number or the |window-ID|.
854
855 *argv()*
856argv([{nr} [, {winid}]])
857 The result is the {nr}th file in the argument list. See
858 |arglist|. "argv(0)" is the first one. Example: >
859 :let i = 0
860 :while i < argc()
861 : let f = escape(fnameescape(argv(i)), '.')
862 : exe 'amenu Arg.' . f . ' :e ' . f . '<CR>'
863 : let i = i + 1
864 :endwhile
865< Without the {nr} argument, or when {nr} is -1, a |List| with
866 the whole |arglist| is returned.
867
868 The {winid} argument specifies the window ID, see |argc()|.
869 For the Vim command line arguments see |v:argv|.
870
871asin({expr}) *asin()*
872 Return the arc sine of {expr} measured in radians, as a |Float|
873 in the range of [-pi/2, pi/2].
874 {expr} must evaluate to a |Float| or a |Number| in the range
875 [-1, 1].
876 Examples: >
877 :echo asin(0.8)
878< 0.927295 >
879 :echo asin(-0.5)
880< -0.523599
881
882 Can also be used as a |method|: >
883 Compute()->asin()
884<
885 {only available when compiled with the |+float| feature}
886
887
888assert_ functions are documented here: |assert-functions-details|
889
890
891
892atan({expr}) *atan()*
893 Return the principal value of the arc tangent of {expr}, in
894 the range [-pi/2, +pi/2] radians, as a |Float|.
895 {expr} must evaluate to a |Float| or a |Number|.
896 Examples: >
897 :echo atan(100)
898< 1.560797 >
899 :echo atan(-4.01)
900< -1.326405
901
902 Can also be used as a |method|: >
903 Compute()->atan()
904<
905 {only available when compiled with the |+float| feature}
906
907
908atan2({expr1}, {expr2}) *atan2()*
909 Return the arc tangent of {expr1} / {expr2}, measured in
910 radians, as a |Float| in the range [-pi, pi].
911 {expr1} and {expr2} must evaluate to a |Float| or a |Number|.
912 Examples: >
913 :echo atan2(-1, 1)
914< -0.785398 >
915 :echo atan2(1, -1)
916< 2.356194
917
918 Can also be used as a |method|: >
919 Compute()->atan2(1)
920<
921 {only available when compiled with the |+float| feature}
922
923balloon_gettext() *balloon_gettext()*
924 Return the current text in the balloon. Only for the string,
925 not used for the List.
926
927balloon_show({expr}) *balloon_show()*
928 Show {expr} inside the balloon. For the GUI {expr} is used as
929 a string. For a terminal {expr} can be a list, which contains
930 the lines of the balloon. If {expr} is not a list it will be
931 split with |balloon_split()|.
932 If {expr} is an empty string any existing balloon is removed.
933
934 Example: >
935 func GetBalloonContent()
936 " ... initiate getting the content
937 return ''
938 endfunc
939 set balloonexpr=GetBalloonContent()
940
941 func BalloonCallback(result)
942 call balloon_show(a:result)
943 endfunc
944< Can also be used as a |method|: >
945 GetText()->balloon_show()
946<
947 The intended use is that fetching the content of the balloon
948 is initiated from 'balloonexpr'. It will invoke an
949 asynchronous method, in which a callback invokes
950 balloon_show(). The 'balloonexpr' itself can return an
951 empty string or a placeholder.
952
953 When showing a balloon is not possible nothing happens, no
954 error message.
955 {only available when compiled with the |+balloon_eval| or
956 |+balloon_eval_term| feature}
957
958balloon_split({msg}) *balloon_split()*
959 Split String {msg} into lines to be displayed in a balloon.
960 The splits are made for the current window size and optimize
961 to show debugger output.
962 Returns a |List| with the split lines.
963 Can also be used as a |method|: >
964 GetText()->balloon_split()->balloon_show()
965
966< {only available when compiled with the |+balloon_eval_term|
967 feature}
968
969blob2list({blob}) *blob2list()*
970 Return a List containing the number value of each byte in Blob
971 {blob}. Examples: >
972 blob2list(0z0102.0304) returns [1, 2, 3, 4]
973 blob2list(0z) returns []
974< Returns an empty List on error. |list2blob()| does the
975 opposite.
976
977 Can also be used as a |method|: >
978 GetBlob()->blob2list()
979
980 *browse()*
981browse({save}, {title}, {initdir}, {default})
982 Put up a file requester. This only works when "has("browse")"
983 returns |TRUE| (only in some GUI versions).
984 The input fields are:
985 {save} when |TRUE|, select file to write
986 {title} title for the requester
987 {initdir} directory to start browsing in
988 {default} default file name
989 An empty string is returned when the "Cancel" button is hit,
990 something went wrong, or browsing is not possible.
991
992 *browsedir()*
993browsedir({title}, {initdir})
994 Put up a directory requester. This only works when
995 "has("browse")" returns |TRUE| (only in some GUI versions).
996 On systems where a directory browser is not supported a file
997 browser is used. In that case: select a file in the directory
998 to be used.
999 The input fields are:
1000 {title} title for the requester
1001 {initdir} directory to start browsing in
1002 When the "Cancel" button is hit, something went wrong, or
1003 browsing is not possible, an empty string is returned.
1004
1005bufadd({name}) *bufadd()*
1006 Add a buffer to the buffer list with String {name}.
1007 If a buffer for file {name} already exists, return that buffer
1008 number. Otherwise return the buffer number of the newly
1009 created buffer. When {name} is an empty string then a new
1010 buffer is always created.
1011 The buffer will not have 'buflisted' set and not be loaded
1012 yet. To add some text to the buffer use this: >
1013 let bufnr = bufadd('someName')
1014 call bufload(bufnr)
1015 call setbufline(bufnr, 1, ['some', 'text'])
1016< Can also be used as a |method|: >
1017 let bufnr = 'somename'->bufadd()
1018
1019bufexists({buf}) *bufexists()*
1020 The result is a Number, which is |TRUE| if a buffer called
1021 {buf} exists.
1022 If the {buf} argument is a number, buffer numbers are used.
1023 Number zero is the alternate buffer for the current window.
1024
1025 If the {buf} argument is a string it must match a buffer name
1026 exactly. The name can be:
1027 - Relative to the current directory.
1028 - A full path.
1029 - The name of a buffer with 'buftype' set to "nofile".
1030 - A URL name.
1031 Unlisted buffers will be found.
1032 Note that help files are listed by their short name in the
1033 output of |:buffers|, but bufexists() requires using their
1034 long name to be able to find them.
1035 bufexists() may report a buffer exists, but to use the name
1036 with a |:buffer| command you may need to use |expand()|. Esp
1037 for MS-Windows 8.3 names in the form "c:\DOCUME~1"
1038 Use "bufexists(0)" to test for the existence of an alternate
1039 file name.
1040
1041 Can also be used as a |method|: >
1042 let exists = 'somename'->bufexists()
1043<
1044 Obsolete name: buffer_exists(). *buffer_exists()*
1045
1046buflisted({buf}) *buflisted()*
1047 The result is a Number, which is |TRUE| if a buffer called
1048 {buf} exists and is listed (has the 'buflisted' option set).
1049 The {buf} argument is used like with |bufexists()|.
1050
1051 Can also be used as a |method|: >
1052 let listed = 'somename'->buflisted()
1053
1054bufload({buf}) *bufload()*
1055 Ensure the buffer {buf} is loaded. When the buffer name
1056 refers to an existing file then the file is read. Otherwise
1057 the buffer will be empty. If the buffer was already loaded
1058 then there is no change.
1059 If there is an existing swap file for the file of the buffer,
1060 there will be no dialog, the buffer will be loaded anyway.
1061 The {buf} argument is used like with |bufexists()|.
1062
1063 Can also be used as a |method|: >
1064 eval 'somename'->bufload()
1065
1066bufloaded({buf}) *bufloaded()*
1067 The result is a Number, which is |TRUE| if a buffer called
1068 {buf} exists and is loaded (shown in a window or hidden).
1069 The {buf} argument is used like with |bufexists()|.
1070
1071 Can also be used as a |method|: >
1072 let loaded = 'somename'->bufloaded()
1073
1074bufname([{buf}]) *bufname()*
1075 The result is the name of a buffer. Mostly as it is displayed
1076 by the `:ls` command, but not using special names such as
1077 "[No Name]".
1078 If {buf} is omitted the current buffer is used.
1079 If {buf} is a Number, that buffer number's name is given.
1080 Number zero is the alternate buffer for the current window.
1081 If {buf} is a String, it is used as a |file-pattern| to match
1082 with the buffer names. This is always done like 'magic' is
1083 set and 'cpoptions' is empty. When there is more than one
1084 match an empty string is returned.
1085 "" or "%" can be used for the current buffer, "#" for the
1086 alternate buffer.
1087 A full match is preferred, otherwise a match at the start, end
1088 or middle of the buffer name is accepted. If you only want a
1089 full match then put "^" at the start and "$" at the end of the
1090 pattern.
1091 Listed buffers are found first. If there is a single match
1092 with a listed buffer, that one is returned. Next unlisted
1093 buffers are searched for.
1094 If the {buf} is a String, but you want to use it as a buffer
1095 number, force it to be a Number by adding zero to it: >
1096 :echo bufname("3" + 0)
1097< Can also be used as a |method|: >
1098 echo bufnr->bufname()
1099
1100< If the buffer doesn't exist, or doesn't have a name, an empty
1101 string is returned. >
1102 bufname("#") alternate buffer name
1103 bufname(3) name of buffer 3
1104 bufname("%") name of current buffer
1105 bufname("file2") name of buffer where "file2" matches.
1106< *buffer_name()*
1107 Obsolete name: buffer_name().
1108
1109 *bufnr()*
1110bufnr([{buf} [, {create}]])
1111 The result is the number of a buffer, as it is displayed by
1112 the `:ls` command. For the use of {buf}, see |bufname()|
1113 above.
1114
1115 If the buffer doesn't exist, -1 is returned. Or, if the
1116 {create} argument is present and TRUE, a new, unlisted,
1117 buffer is created and its number is returned. Example: >
1118 let newbuf = bufnr('Scratch001', 1)
1119< Using an empty name uses the current buffer. To create a new
1120 buffer with an empty name use |bufadd()|.
1121
1122 bufnr("$") is the last buffer: >
1123 :let last_buffer = bufnr("$")
1124< The result is a Number, which is the highest buffer number
1125 of existing buffers. Note that not all buffers with a smaller
1126 number necessarily exist, because ":bwipeout" may have removed
1127 them. Use bufexists() to test for the existence of a buffer.
1128
1129 Can also be used as a |method|: >
1130 echo bufref->bufnr()
1131<
1132 Obsolete name: buffer_number(). *buffer_number()*
1133 *last_buffer_nr()*
1134 Obsolete name for bufnr("$"): last_buffer_nr().
1135
1136bufwinid({buf}) *bufwinid()*
1137 The result is a Number, which is the |window-ID| of the first
1138 window associated with buffer {buf}. For the use of {buf},
1139 see |bufname()| above. If buffer {buf} doesn't exist or
1140 there is no such window, -1 is returned. Example: >
1141
1142 echo "A window containing buffer 1 is " . (bufwinid(1))
1143<
1144 Only deals with the current tab page.
1145
1146 Can also be used as a |method|: >
1147 FindBuffer()->bufwinid()
1148
1149bufwinnr({buf}) *bufwinnr()*
1150 Like |bufwinid()| but return the window number instead of the
1151 |window-ID|.
1152 If buffer {buf} doesn't exist or there is no such window, -1
1153 is returned. Example: >
1154
1155 echo "A window containing buffer 1 is " . (bufwinnr(1))
1156
1157< The number can be used with |CTRL-W_w| and ":wincmd w"
1158 |:wincmd|.
1159
1160 Can also be used as a |method|: >
1161 FindBuffer()->bufwinnr()
1162
1163byte2line({byte}) *byte2line()*
1164 Return the line number that contains the character at byte
1165 count {byte} in the current buffer. This includes the
1166 end-of-line character, depending on the 'fileformat' option
1167 for the current buffer. The first character has byte count
1168 one.
1169 Also see |line2byte()|, |go| and |:goto|.
1170
1171 Can also be used as a |method|: >
1172 GetOffset()->byte2line()
1173
1174< {not available when compiled without the |+byte_offset|
1175 feature}
1176
1177byteidx({expr}, {nr}) *byteidx()*
1178 Return byte index of the {nr}'th character in the String
1179 {expr}. Use zero for the first character, it then returns
1180 zero.
1181 If there are no multibyte characters the returned value is
1182 equal to {nr}.
1183 Composing characters are not counted separately, their byte
1184 length is added to the preceding base character. See
1185 |byteidxcomp()| below for counting composing characters
1186 separately.
1187 Example : >
1188 echo matchstr(str, ".", byteidx(str, 3))
1189< will display the fourth character. Another way to do the
1190 same: >
1191 let s = strpart(str, byteidx(str, 3))
1192 echo strpart(s, 0, byteidx(s, 1))
1193< Also see |strgetchar()| and |strcharpart()|.
1194
1195 If there are less than {nr} characters -1 is returned.
1196 If there are exactly {nr} characters the length of the string
1197 in bytes is returned.
1198
1199 Can also be used as a |method|: >
1200 GetName()->byteidx(idx)
1201
1202byteidxcomp({expr}, {nr}) *byteidxcomp()*
1203 Like byteidx(), except that a composing character is counted
1204 as a separate character. Example: >
1205 let s = 'e' . nr2char(0x301)
1206 echo byteidx(s, 1)
1207 echo byteidxcomp(s, 1)
1208 echo byteidxcomp(s, 2)
1209< The first and third echo result in 3 ('e' plus composing
1210 character is 3 bytes), the second echo results in 1 ('e' is
1211 one byte).
1212 Only works differently from byteidx() when 'encoding' is set
1213 to a Unicode encoding.
1214
1215 Can also be used as a |method|: >
1216 GetName()->byteidxcomp(idx)
1217
1218call({func}, {arglist} [, {dict}]) *call()* *E699*
1219 Call function {func} with the items in |List| {arglist} as
1220 arguments.
1221 {func} can either be a |Funcref| or the name of a function.
1222 a:firstline and a:lastline are set to the cursor line.
1223 Returns the return value of the called function.
1224 {dict} is for functions with the "dict" attribute. It will be
1225 used to set the local variable "self". |Dictionary-function|
1226
1227 Can also be used as a |method|: >
1228 GetFunc()->call([arg, arg], dict)
1229
1230ceil({expr}) *ceil()*
1231 Return the smallest integral value greater than or equal to
1232 {expr} as a |Float| (round up).
1233 {expr} must evaluate to a |Float| or a |Number|.
1234 Examples: >
1235 echo ceil(1.456)
1236< 2.0 >
1237 echo ceil(-5.456)
1238< -5.0 >
1239 echo ceil(4.0)
1240< 4.0
1241
1242 Can also be used as a |method|: >
1243 Compute()->ceil()
1244<
1245 {only available when compiled with the |+float| feature}
1246
1247
1248ch_ functions are documented here: |channel-functions-details|
1249
1250
1251changenr() *changenr()*
1252 Return the number of the most recent change. This is the same
1253 number as what is displayed with |:undolist| and can be used
1254 with the |:undo| command.
1255 When a change was made it is the number of that change. After
1256 redo it is the number of the redone change. After undo it is
1257 one less than the number of the undone change.
1258
1259char2nr({string} [, {utf8}]) *char2nr()*
1260 Return number value of the first char in {string}.
1261 Examples: >
1262 char2nr(" ") returns 32
1263 char2nr("ABC") returns 65
1264< When {utf8} is omitted or zero, the current 'encoding' is used.
1265 Example for "utf-8": >
1266 char2nr("á") returns 225
1267 char2nr("á"[0]) returns 195
1268< When {utf8} is TRUE, always treat as UTF-8 characters.
1269 A combining character is a separate character.
1270 |nr2char()| does the opposite.
1271 To turn a string into a list of character numbers: >
1272 let str = "ABC"
1273 let list = map(split(str, '\zs'), {_, val -> char2nr(val)})
1274< Result: [65, 66, 67]
1275
1276 Can also be used as a |method|: >
1277 GetChar()->char2nr()
1278
1279
1280charclass({string}) *charclass()*
1281 Return the character class of the first character in {string}.
1282 The character class is one of:
1283 0 blank
1284 1 punctuation
1285 2 word character
1286 3 emoji
1287 other specific Unicode class
1288 The class is used in patterns and word motions.
1289
1290
1291charcol({expr}) *charcol()*
1292 Same as |col()| but returns the character index of the column
1293 position given with {expr} instead of the byte position.
1294
1295 Example:
1296 With the cursor on '세' in line 5 with text "여보세요": >
1297 charcol('.') returns 3
1298 col('.') returns 7
1299
1300< Can also be used as a |method|: >
1301 GetPos()->col()
1302<
1303 *charidx()*
1304charidx({string}, {idx} [, {countcc}])
1305 Return the character index of the byte at {idx} in {string}.
1306 The index of the first character is zero.
1307 If there are no multibyte characters the returned value is
1308 equal to {idx}.
1309 When {countcc} is omitted or |FALSE|, then composing characters
1310 are not counted separately, their byte length is
1311 added to the preceding base character.
1312 When {countcc} is |TRUE|, then composing characters are
1313 counted as separate characters.
1314 Returns -1 if the arguments are invalid or if {idx} is greater
1315 than the index of the last byte in {string}. An error is
1316 given if the first argument is not a string, the second
1317 argument is not a number or when the third argument is present
1318 and is not zero or one.
1319 See |byteidx()| and |byteidxcomp()| for getting the byte index
1320 from the character index.
1321 Examples: >
1322 echo charidx('áb́ć', 3) returns 1
1323 echo charidx('áb́ć', 6, 1) returns 4
1324 echo charidx('áb́ć', 16) returns -1
1325<
1326 Can also be used as a |method|: >
1327 GetName()->charidx(idx)
1328
1329chdir({dir}) *chdir()*
1330 Change the current working directory to {dir}. The scope of
1331 the directory change depends on the directory of the current
1332 window:
1333 - If the current window has a window-local directory
1334 (|:lcd|), then changes the window local directory.
1335 - Otherwise, if the current tabpage has a local
1336 directory (|:tcd|) then changes the tabpage local
1337 directory.
1338 - Otherwise, changes the global directory.
1339 {dir} must be a String.
1340 If successful, returns the previous working directory. Pass
1341 this to another chdir() to restore the directory.
1342 On failure, returns an empty string.
1343
1344 Example: >
1345 let save_dir = chdir(newdir)
1346 if save_dir != ""
1347 " ... do some work
1348 call chdir(save_dir)
1349 endif
1350
1351< Can also be used as a |method|: >
1352 GetDir()->chdir()
1353<
1354cindent({lnum}) *cindent()*
1355 Get the amount of indent for line {lnum} according the C
1356 indenting rules, as with 'cindent'.
1357 The indent is counted in spaces, the value of 'tabstop' is
1358 relevant. {lnum} is used just like in |getline()|.
1359 When {lnum} is invalid or Vim was not compiled the |+cindent|
1360 feature, -1 is returned.
1361 See |C-indenting|.
1362
1363 Can also be used as a |method|: >
1364 GetLnum()->cindent()
1365
1366clearmatches([{win}]) *clearmatches()*
1367 Clears all matches previously defined for the current window
1368 by |matchadd()| and the |:match| commands.
1369 If {win} is specified, use the window with this number or
1370 window ID instead of the current window.
1371
1372 Can also be used as a |method|: >
1373 GetWin()->clearmatches()
1374<
1375 *col()*
1376col({expr}) The result is a Number, which is the byte index of the column
1377 position given with {expr}. The accepted positions are:
1378 . the cursor position
1379 $ the end of the cursor line (the result is the
1380 number of bytes in the cursor line plus one)
1381 'x position of mark x (if the mark is not set, 0 is
1382 returned)
1383 v In Visual mode: the start of the Visual area (the
1384 cursor is the end). When not in Visual mode
1385 returns the cursor position. Differs from |'<| in
1386 that it's updated right away.
1387 Additionally {expr} can be [lnum, col]: a |List| with the line
1388 and column number. Most useful when the column is "$", to get
1389 the last column of a specific line. When "lnum" or "col" is
1390 out of range then col() returns zero.
1391 To get the line number use |line()|. To get both use
1392 |getpos()|.
1393 For the screen column position use |virtcol()|. For the
1394 character position use |charcol()|.
1395 Note that only marks in the current file can be used.
1396 Examples: >
1397 col(".") column of cursor
1398 col("$") length of cursor line plus one
1399 col("'t") column of mark t
1400 col("'" . markname) column of mark markname
1401< The first column is 1. 0 is returned for an error.
1402 For an uppercase mark the column may actually be in another
1403 buffer.
1404 For the cursor position, when 'virtualedit' is active, the
1405 column is one higher if the cursor is after the end of the
1406 line. This can be used to obtain the column in Insert mode: >
1407 :imap <F2> <C-O>:let save_ve = &ve<CR>
1408 \<C-O>:set ve=all<CR>
1409 \<C-O>:echo col(".") . "\n" <Bar>
1410 \let &ve = save_ve<CR>
1411
1412< Can also be used as a |method|: >
1413 GetPos()->col()
1414<
1415
1416complete({startcol}, {matches}) *complete()* *E785*
1417 Set the matches for Insert mode completion.
1418 Can only be used in Insert mode. You need to use a mapping
1419 with CTRL-R = (see |i_CTRL-R|). It does not work after CTRL-O
1420 or with an expression mapping.
1421 {startcol} is the byte offset in the line where the completed
1422 text start. The text up to the cursor is the original text
1423 that will be replaced by the matches. Use col('.') for an
1424 empty string. "col('.') - 1" will replace one character by a
1425 match.
1426 {matches} must be a |List|. Each |List| item is one match.
1427 See |complete-items| for the kind of items that are possible.
1428 "longest" in 'completeopt' is ignored.
1429 Note that the after calling this function you need to avoid
1430 inserting anything that would cause completion to stop.
1431 The match can be selected with CTRL-N and CTRL-P as usual with
1432 Insert mode completion. The popup menu will appear if
1433 specified, see |ins-completion-menu|.
1434 Example: >
1435 inoremap <F5> <C-R>=ListMonths()<CR>
1436
1437 func! ListMonths()
1438 call complete(col('.'), ['January', 'February', 'March',
1439 \ 'April', 'May', 'June', 'July', 'August', 'September',
1440 \ 'October', 'November', 'December'])
1441 return ''
1442 endfunc
1443< This isn't very useful, but it shows how it works. Note that
1444 an empty string is returned to avoid a zero being inserted.
1445
1446 Can also be used as a |method|, the base is passed as the
1447 second argument: >
1448 GetMatches()->complete(col('.'))
1449
1450complete_add({expr}) *complete_add()*
1451 Add {expr} to the list of matches. Only to be used by the
1452 function specified with the 'completefunc' option.
1453 Returns 0 for failure (empty string or out of memory),
1454 1 when the match was added, 2 when the match was already in
1455 the list.
1456 See |complete-functions| for an explanation of {expr}. It is
1457 the same as one item in the list that 'omnifunc' would return.
1458
1459 Can also be used as a |method|: >
1460 GetMoreMatches()->complete_add()
1461
1462complete_check() *complete_check()*
1463 Check for a key typed while looking for completion matches.
1464 This is to be used when looking for matches takes some time.
1465 Returns |TRUE| when searching for matches is to be aborted,
1466 zero otherwise.
1467 Only to be used by the function specified with the
1468 'completefunc' option.
1469
1470
1471complete_info([{what}]) *complete_info()*
1472 Returns a |Dictionary| with information about Insert mode
1473 completion. See |ins-completion|.
1474 The items are:
1475 mode Current completion mode name string.
1476 See |complete_info_mode| for the values.
1477 pum_visible |TRUE| if popup menu is visible.
1478 See |pumvisible()|.
1479 items List of completion matches. Each item is a
1480 dictionary containing the entries "word",
1481 "abbr", "menu", "kind", "info" and "user_data".
1482 See |complete-items|.
1483 selected Selected item index. First index is zero.
1484 Index is -1 if no item is selected (showing
1485 typed text only, or the last completion after
1486 no item is selected when using the <Up> or
1487 <Down> keys)
1488 inserted Inserted string. [NOT IMPLEMENT YET]
1489
1490 *complete_info_mode*
1491 mode values are:
1492 "" Not in completion mode
1493 "keyword" Keyword completion |i_CTRL-X_CTRL-N|
1494 "ctrl_x" Just pressed CTRL-X |i_CTRL-X|
1495 "scroll" Scrolling with |i_CTRL-X_CTRL-E| or
1496 |i_CTRL-X_CTRL-Y|
1497 "whole_line" Whole lines |i_CTRL-X_CTRL-L|
1498 "files" File names |i_CTRL-X_CTRL-F|
1499 "tags" Tags |i_CTRL-X_CTRL-]|
1500 "path_defines" Definition completion |i_CTRL-X_CTRL-D|
1501 "path_patterns" Include completion |i_CTRL-X_CTRL-I|
1502 "dictionary" Dictionary |i_CTRL-X_CTRL-K|
1503 "thesaurus" Thesaurus |i_CTRL-X_CTRL-T|
1504 "cmdline" Vim Command line |i_CTRL-X_CTRL-V|
1505 "function" User defined completion |i_CTRL-X_CTRL-U|
1506 "omni" Omni completion |i_CTRL-X_CTRL-O|
1507 "spell" Spelling suggestions |i_CTRL-X_s|
1508 "eval" |complete()| completion
1509 "unknown" Other internal modes
1510
1511 If the optional {what} list argument is supplied, then only
1512 the items listed in {what} are returned. Unsupported items in
1513 {what} are silently ignored.
1514
1515 To get the position and size of the popup menu, see
1516 |pum_getpos()|. It's also available in |v:event| during the
1517 |CompleteChanged| event.
1518
1519 Examples: >
1520 " Get all items
1521 call complete_info()
1522 " Get only 'mode'
1523 call complete_info(['mode'])
1524 " Get only 'mode' and 'pum_visible'
1525 call complete_info(['mode', 'pum_visible'])
1526
1527< Can also be used as a |method|: >
1528 GetItems()->complete_info()
1529<
1530 *confirm()*
1531confirm({msg} [, {choices} [, {default} [, {type}]]])
1532 confirm() offers the user a dialog, from which a choice can be
1533 made. It returns the number of the choice. For the first
1534 choice this is 1.
1535 Note: confirm() is only supported when compiled with dialog
1536 support, see |+dialog_con| and |+dialog_gui|.
1537
1538 {msg} is displayed in a |dialog| with {choices} as the
1539 alternatives. When {choices} is missing or empty, "&OK" is
1540 used (and translated).
1541 {msg} is a String, use '\n' to include a newline. Only on
1542 some systems the string is wrapped when it doesn't fit.
1543
1544 {choices} is a String, with the individual choices separated
1545 by '\n', e.g. >
1546 confirm("Save changes?", "&Yes\n&No\n&Cancel")
1547< The letter after the '&' is the shortcut key for that choice.
1548 Thus you can type 'c' to select "Cancel". The shortcut does
1549 not need to be the first letter: >
1550 confirm("file has been modified", "&Save\nSave &All")
1551< For the console, the first letter of each choice is used as
1552 the default shortcut key. Case is ignored.
1553
1554 The optional {default} argument is the number of the choice
1555 that is made if the user hits <CR>. Use 1 to make the first
1556 choice the default one. Use 0 to not set a default. If
1557 {default} is omitted, 1 is used.
1558
1559 The optional {type} String argument gives the type of dialog.
1560 This is only used for the icon of the GTK, Mac, Motif and
1561 Win32 GUI. It can be one of these values: "Error",
1562 "Question", "Info", "Warning" or "Generic". Only the first
1563 character is relevant. When {type} is omitted, "Generic" is
1564 used.
1565
1566 If the user aborts the dialog by pressing <Esc>, CTRL-C,
1567 or another valid interrupt key, confirm() returns 0.
1568
1569 An example: >
1570 :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2)
1571 :if choice == 0
1572 : echo "make up your mind!"
1573 :elseif choice == 3
1574 : echo "tasteful"
1575 :else
1576 : echo "I prefer bananas myself."
1577 :endif
1578< In a GUI dialog, buttons are used. The layout of the buttons
1579 depends on the 'v' flag in 'guioptions'. If it is included,
1580 the buttons are always put vertically. Otherwise, confirm()
1581 tries to put the buttons in one horizontal line. If they
1582 don't fit, a vertical layout is used anyway. For some systems
1583 the horizontal layout is always used.
1584
1585 Can also be used as a |method|in: >
1586 BuildMessage()->confirm("&Yes\n&No")
1587<
1588 *copy()*
1589copy({expr}) Make a copy of {expr}. For Numbers and Strings this isn't
1590 different from using {expr} directly.
1591 When {expr} is a |List| a shallow copy is created. This means
1592 that the original |List| can be changed without changing the
1593 copy, and vice versa. But the items are identical, thus
1594 changing an item changes the contents of both |Lists|.
1595 A |Dictionary| is copied in a similar way as a |List|.
1596 Also see |deepcopy()|.
1597 Can also be used as a |method|: >
1598 mylist->copy()
1599
1600cos({expr}) *cos()*
1601 Return the cosine of {expr}, measured in radians, as a |Float|.
1602 {expr} must evaluate to a |Float| or a |Number|.
1603 Examples: >
1604 :echo cos(100)
1605< 0.862319 >
1606 :echo cos(-4.01)
1607< -0.646043
1608
1609 Can also be used as a |method|: >
1610 Compute()->cos()
1611<
1612 {only available when compiled with the |+float| feature}
1613
1614
1615cosh({expr}) *cosh()*
1616 Return the hyperbolic cosine of {expr} as a |Float| in the range
1617 [1, inf].
1618 {expr} must evaluate to a |Float| or a |Number|.
1619 Examples: >
1620 :echo cosh(0.5)
1621< 1.127626 >
1622 :echo cosh(-0.5)
1623< -1.127626
1624
1625 Can also be used as a |method|: >
1626 Compute()->cosh()
1627<
1628 {only available when compiled with the |+float| feature}
1629
1630
1631count({comp}, {expr} [, {ic} [, {start}]]) *count()*
1632 Return the number of times an item with value {expr} appears
1633 in |String|, |List| or |Dictionary| {comp}.
1634
1635 If {start} is given then start with the item with this index.
1636 {start} can only be used with a |List|.
1637
1638 When {ic} is given and it's |TRUE| then case is ignored.
1639
1640 When {comp} is a string then the number of not overlapping
1641 occurrences of {expr} is returned. Zero is returned when
1642 {expr} is an empty string.
1643
1644 Can also be used as a |method|: >
1645 mylist->count(val)
1646<
1647 *cscope_connection()*
1648cscope_connection([{num} , {dbpath} [, {prepend}]])
1649 Checks for the existence of a |cscope| connection. If no
1650 parameters are specified, then the function returns:
1651 0, if cscope was not available (not compiled in), or
1652 if there are no cscope connections;
1653 1, if there is at least one cscope connection.
1654
1655 If parameters are specified, then the value of {num}
1656 determines how existence of a cscope connection is checked:
1657
1658 {num} Description of existence check
1659 ----- ------------------------------
1660 0 Same as no parameters (e.g., "cscope_connection()").
1661 1 Ignore {prepend}, and use partial string matches for
1662 {dbpath}.
1663 2 Ignore {prepend}, and use exact string matches for
1664 {dbpath}.
1665 3 Use {prepend}, use partial string matches for both
1666 {dbpath} and {prepend}.
1667 4 Use {prepend}, use exact string matches for both
1668 {dbpath} and {prepend}.
1669
1670 Note: All string comparisons are case sensitive!
1671
1672 Examples. Suppose we had the following (from ":cs show"): >
1673
1674 # pid database name prepend path
1675 0 27664 cscope.out /usr/local
1676<
1677 Invocation Return Val ~
1678 ---------- ---------- >
1679 cscope_connection() 1
1680 cscope_connection(1, "out") 1
1681 cscope_connection(2, "out") 0
1682 cscope_connection(3, "out") 0
1683 cscope_connection(3, "out", "local") 1
1684 cscope_connection(4, "out") 0
1685 cscope_connection(4, "out", "local") 0
1686 cscope_connection(4, "cscope.out", "/usr/local") 1
1687<
1688cursor({lnum}, {col} [, {off}]) *cursor()*
1689cursor({list})
1690 Positions the cursor at the column (byte count) {col} in the
1691 line {lnum}. The first column is one.
1692
1693 When there is one argument {list} this is used as a |List|
1694 with two, three or four item:
1695 [{lnum}, {col}]
1696 [{lnum}, {col}, {off}]
1697 [{lnum}, {col}, {off}, {curswant}]
1698 This is like the return value of |getpos()| or |getcurpos()|,
1699 but without the first item.
1700
1701 To position the cursor using the character count, use
1702 |setcursorcharpos()|.
1703
1704 Does not change the jumplist.
1705 {lnum} is used like with |getline()|.
1706 If {lnum} is greater than the number of lines in the buffer,
1707 the cursor will be positioned at the last line in the buffer.
1708 If {lnum} is zero, the cursor will stay in the current line.
1709 If {col} is greater than the number of bytes in the line,
1710 the cursor will be positioned at the last character in the
1711 line.
1712 If {col} is zero, the cursor will stay in the current column.
1713 If {curswant} is given it is used to set the preferred column
1714 for vertical movement. Otherwise {col} is used.
1715
1716 When 'virtualedit' is used {off} specifies the offset in
1717 screen columns from the start of the character. E.g., a
1718 position within a <Tab> or after the last character.
1719 Returns 0 when the position could be set, -1 otherwise.
1720
1721 Can also be used as a |method|: >
1722 GetCursorPos()->cursor()
1723
1724debugbreak({pid}) *debugbreak()*
1725 Specifically used to interrupt a program being debugged. It
1726 will cause process {pid} to get a SIGTRAP. Behavior for other
1727 processes is undefined. See |terminal-debugger|.
1728 {only available on MS-Windows}
1729
1730 Can also be used as a |method|: >
1731 GetPid()->debugbreak()
1732
1733deepcopy({expr} [, {noref}]) *deepcopy()* *E698*
1734 Make a copy of {expr}. For Numbers and Strings this isn't
1735 different from using {expr} directly.
1736 When {expr} is a |List| a full copy is created. This means
1737 that the original |List| can be changed without changing the
1738 copy, and vice versa. When an item is a |List| or
1739 |Dictionary|, a copy for it is made, recursively. Thus
1740 changing an item in the copy does not change the contents of
1741 the original |List|.
1742 A |Dictionary| is copied in a similar way as a |List|.
1743
1744 When {noref} is omitted or zero a contained |List| or
1745 |Dictionary| is only copied once. All references point to
1746 this single copy. With {noref} set to 1 every occurrence of a
1747 |List| or |Dictionary| results in a new copy. This also means
1748 that a cyclic reference causes deepcopy() to fail.
1749 *E724*
1750 Nesting is possible up to 100 levels. When there is an item
1751 that refers back to a higher level making a deep copy with
1752 {noref} set to 1 will fail.
1753 Also see |copy()|.
1754
1755 Can also be used as a |method|: >
1756 GetObject()->deepcopy()
1757
1758delete({fname} [, {flags}]) *delete()*
1759 Without {flags} or with {flags} empty: Deletes the file by the
1760 name {fname}. This also works when {fname} is a symbolic link.
1761
1762 When {flags} is "d": Deletes the directory by the name
1763 {fname}. This fails when directory {fname} is not empty.
1764
1765 When {flags} is "rf": Deletes the directory by the name
1766 {fname} and everything in it, recursively. BE CAREFUL!
1767 Note: on MS-Windows it is not possible to delete a directory
1768 that is being used.
1769
1770 A symbolic link itself is deleted, not what it points to.
1771
1772 The result is a Number, which is 0/false if the delete
1773 operation was successful and -1/true when the deletion failed
1774 or partly failed.
1775
1776 Use |remove()| to delete an item from a |List|.
1777 To delete a line from the buffer use |:delete| or
1778 |deletebufline()|.
1779
1780 Can also be used as a |method|: >
1781 GetName()->delete()
1782
1783deletebufline({buf}, {first} [, {last}]) *deletebufline()*
1784 Delete lines {first} to {last} (inclusive) from buffer {buf}.
1785 If {last} is omitted then delete line {first} only.
1786 On success 0 is returned, on failure 1 is returned.
1787
1788 This function works only for loaded buffers. First call
1789 |bufload()| if needed.
1790
1791 For the use of {buf}, see |bufname()| above.
1792
1793 {first} and {last} are used like with |getline()|. Note that
1794 when using |line()| this refers to the current buffer. Use "$"
1795 to refer to the last line in buffer {buf}.
1796
1797 Can also be used as a |method|: >
1798 GetBuffer()->deletebufline(1)
1799<
1800 *did_filetype()*
1801did_filetype() Returns |TRUE| when autocommands are being executed and the
1802 FileType event has been triggered at least once. Can be used
1803 to avoid triggering the FileType event again in the scripts
1804 that detect the file type. |FileType|
1805 Returns |FALSE| when `:setf FALLBACK` was used.
1806 When editing another file, the counter is reset, thus this
1807 really checks if the FileType event has been triggered for the
1808 current buffer. This allows an autocommand that starts
1809 editing another buffer to set 'filetype' and load a syntax
1810 file.
1811
1812diff_filler({lnum}) *diff_filler()*
1813 Returns the number of filler lines above line {lnum}.
1814 These are the lines that were inserted at this point in
1815 another diff'ed window. These filler lines are shown in the
1816 display but don't exist in the buffer.
1817 {lnum} is used like with |getline()|. Thus "." is the current
1818 line, "'m" mark m, etc.
1819 Returns 0 if the current window is not in diff mode.
1820
1821 Can also be used as a |method|: >
1822 GetLnum()->diff_filler()
1823
1824diff_hlID({lnum}, {col}) *diff_hlID()*
1825 Returns the highlight ID for diff mode at line {lnum} column
1826 {col} (byte index). When the current line does not have a
1827 diff change zero is returned.
1828 {lnum} is used like with |getline()|. Thus "." is the current
1829 line, "'m" mark m, etc.
1830 {col} is 1 for the leftmost column, {lnum} is 1 for the first
1831 line.
1832 The highlight ID can be used with |synIDattr()| to obtain
1833 syntax information about the highlighting.
1834
1835 Can also be used as a |method|: >
1836 GetLnum()->diff_hlID(col)
1837<
1838
1839digraph_get({chars}) *digraph_get()* *E1214*
1840 Return the digraph of {chars}. This should be a string with
1841 exactly two characters. If {chars} are not just two
1842 characters, or the digraph of {chars} does not exist, an error
1843 is given and an empty string is returned.
1844
1845 The character will be converted from Unicode to 'encoding'
1846 when needed. This does require the conversion to be
1847 available, it might fail.
1848
1849 Also see |digraph_getlist()|.
1850
1851 Examples: >
1852 " Get a built-in digraph
1853 :echo digraph_get('00') " Returns '∞'
1854
1855 " Get a user-defined digraph
1856 :call digraph_set('aa', 'あ')
1857 :echo digraph_get('aa') " Returns 'あ'
1858<
1859 Can also be used as a |method|: >
1860 GetChars()->digraph_get()
1861<
1862 This function works only when compiled with the |+digraphs|
1863 feature. If this feature is disabled, this function will
1864 display an error message.
1865
1866
1867digraph_getlist([{listall}]) *digraph_getlist()*
1868 Return a list of digraphs. If the {listall} argument is given
1869 and it is TRUE, return all digraphs, including the default
1870 digraphs. Otherwise, return only user-defined digraphs.
1871
1872 The characters will be converted from Unicode to 'encoding'
1873 when needed. This does require the conservation to be
1874 available, it might fail.
1875
1876 Also see |digraph_get()|.
1877
1878 Examples: >
1879 " Get user-defined digraphs
1880 :echo digraph_getlist()
1881
1882 " Get all the digraphs, including default digraphs
1883 :echo digraph_getlist(1)
1884<
1885 Can also be used as a |method|: >
1886 GetNumber()->digraph_getlist()
1887<
1888 This function works only when compiled with the |+digraphs|
1889 feature. If this feature is disabled, this function will
1890 display an error message.
1891
1892
1893digraph_set({chars}, {digraph}) *digraph_set()* *E1205*
1894 Add digraph {chars} to the list. {chars} must be a string
1895 with two characters. {digraph} is a string with one UTF-8
1896 encoded character. Be careful, composing characters are NOT
1897 ignored. This function is similar to |:digraphs| command, but
1898 useful to add digraphs start with a white space.
1899
1900 The function result is v:true if |digraph| is registered. If
1901 this fails an error message is given and v:false is returned.
1902
1903 If you want to define multiple digraphs at once, you can use
1904 |digraph_setlist()|.
1905
1906 Example: >
1907 call digraph_set(' ', 'あ')
1908<
1909 Can be used as a |method|: >
1910 GetString()->digraph_set('あ')
1911<
1912 This function works only when compiled with the |+digraphs|
1913 feature. If this feature is disabled, this function will
1914 display an error message.
1915
1916
1917digraph_setlist({digraphlist}) *digraph_setlist()*
1918 Similar to |digraph_set()| but this function can add multiple
1919 digraphs at once. {digraphlist} is a list composed of lists,
1920 where each list contains two strings with {chars} and
1921 {digraph} as in |digraph_set()|.
1922 Example: >
1923 call digraph_setlist([['aa', 'あ'], ['ii', 'い']])
1924<
1925 It is similar to the following: >
1926 for [chars, digraph] in [['aa', 'あ'], ['ii', 'い']]
1927 call digraph_set(chars, digraph)
1928 endfor
1929< Except that the function returns after the first error,
1930 following digraphs will not be added.
1931
1932 Can be used as a |method|: >
1933 GetList()->digraph_setlist()
1934<
1935 This function works only when compiled with the |+digraphs|
1936 feature. If this feature is disabled, this function will
1937 display an error message.
1938
1939
1940echoraw({string}) *echoraw()*
1941 Output {string} as-is, including unprintable characters.
1942 This can be used to output a terminal code. For example, to
1943 disable modifyOtherKeys: >
1944 call echoraw(&t_TE)
1945< and to enable it again: >
1946 call echoraw(&t_TI)
1947< Use with care, you can mess up the terminal this way.
1948
1949
1950empty({expr}) *empty()*
1951 Return the Number 1 if {expr} is empty, zero otherwise.
1952 - A |List| or |Dictionary| is empty when it does not have any
1953 items.
1954 - A |String| is empty when its length is zero.
1955 - A |Number| and |Float| are empty when their value is zero.
1956 - |v:false|, |v:none| and |v:null| are empty, |v:true| is not.
1957 - A |Job| is empty when it failed to start.
1958 - A |Channel| is empty when it is closed.
1959 - A |Blob| is empty when its length is zero.
1960
1961 For a long |List| this is much faster than comparing the
1962 length with zero.
1963
1964 Can also be used as a |method|: >
1965 mylist->empty()
1966
1967environ() *environ()*
1968 Return all of environment variables as dictionary. You can
1969 check if an environment variable exists like this: >
1970 :echo has_key(environ(), 'HOME')
1971< Note that the variable name may be CamelCase; to ignore case
1972 use this: >
1973 :echo index(keys(environ()), 'HOME', 0, 1) != -1
1974
1975escape({string}, {chars}) *escape()*
1976 Escape the characters in {chars} that occur in {string} with a
1977 backslash. Example: >
1978 :echo escape('c:\program files\vim', ' \')
1979< results in: >
1980 c:\\program\ files\\vim
1981< Also see |shellescape()| and |fnameescape()|.
1982
1983 Can also be used as a |method|: >
1984 GetText()->escape(' \')
1985<
1986 *eval()*
1987eval({string}) Evaluate {string} and return the result. Especially useful to
1988 turn the result of |string()| back into the original value.
1989 This works for Numbers, Floats, Strings, Blobs and composites
1990 of them. Also works for |Funcref|s that refer to existing
1991 functions.
1992
1993 Can also be used as a |method|: >
1994 argv->join()->eval()
1995
1996eventhandler() *eventhandler()*
1997 Returns 1 when inside an event handler. That is that Vim got
1998 interrupted while waiting for the user to type a character,
1999 e.g., when dropping a file on Vim. This means interactive
2000 commands cannot be used. Otherwise zero is returned.
2001
2002executable({expr}) *executable()*
2003 This function checks if an executable with the name {expr}
2004 exists. {expr} must be the name of the program without any
2005 arguments.
2006 executable() uses the value of $PATH and/or the normal
2007 searchpath for programs. *PATHEXT*
2008 On MS-Windows the ".exe", ".bat", etc. can optionally be
2009 included. Then the extensions in $PATHEXT are tried. Thus if
2010 "foo.exe" does not exist, "foo.exe.bat" can be found. If
2011 $PATHEXT is not set then ".com;.exe;.bat;.cmd" is used. A dot
2012 by itself can be used in $PATHEXT to try using the name
2013 without an extension. When 'shell' looks like a Unix shell,
2014 then the name is also tried without adding an extension.
2015 On MS-Windows it only checks if the file exists and is not a
2016 directory, not if it's really executable.
2017 On MS-Windows an executable in the same directory as Vim is
2018 always found. Since this directory is added to $PATH it
2019 should also work to execute it |win32-PATH|.
2020 The result is a Number:
2021 1 exists
2022 0 does not exist
2023 -1 not implemented on this system
2024 |exepath()| can be used to get the full path of an executable.
2025
2026 Can also be used as a |method|: >
2027 GetCommand()->executable()
2028
2029execute({command} [, {silent}]) *execute()*
2030 Execute an Ex command or commands and return the output as a
2031 string.
2032 {command} can be a string or a List. In case of a List the
2033 lines are executed one by one.
2034 This is equivalent to: >
2035 redir => var
2036 {command}
2037 redir END
2038<
2039 The optional {silent} argument can have these values:
2040 "" no `:silent` used
2041 "silent" `:silent` used
2042 "silent!" `:silent!` used
2043 The default is "silent". Note that with "silent!", unlike
2044 `:redir`, error messages are dropped. When using an external
2045 command the screen may be messed up, use `system()` instead.
2046 *E930*
2047 It is not possible to use `:redir` anywhere in {command}.
2048
2049 To get a list of lines use |split()| on the result: >
2050 split(execute('args'), "\n")
2051
2052< To execute a command in another window than the current one
2053 use `win_execute()`.
2054
2055 When used recursively the output of the recursive call is not
2056 included in the output of the higher level call.
2057
2058 Can also be used as a |method|: >
2059 GetCommand()->execute()
2060
2061exepath({expr}) *exepath()*
2062 If {expr} is an executable and is either an absolute path, a
2063 relative path or found in $PATH, return the full path.
2064 Note that the current directory is used when {expr} starts
2065 with "./", which may be a problem for Vim: >
2066 echo exepath(v:progpath)
2067< If {expr} cannot be found in $PATH or is not executable then
2068 an empty string is returned.
2069
2070 Can also be used as a |method|: >
2071 GetCommand()->exepath()
2072<
2073 *exists()*
2074exists({expr}) The result is a Number, which is |TRUE| if {expr} is defined,
2075 zero otherwise.
2076
2077 Note: In a compiled |:def| function the evaluation is done at
2078 runtime. Use `exists_compiled()` to evaluate the expression
2079 at compile time.
2080
2081 For checking for a supported feature use |has()|.
2082 For checking if a file exists use |filereadable()|.
2083
2084 The {expr} argument is a string, which contains one of these:
2085 &option-name Vim option (only checks if it exists,
2086 not if it really works)
2087 +option-name Vim option that works.
2088 $ENVNAME environment variable (could also be
2089 done by comparing with an empty
2090 string)
2091 *funcname built-in function (see |functions|)
2092 or user defined function (see
2093 |user-functions|) that is implemented.
2094 Also works for a variable that is a
2095 Funcref.
2096 ?funcname built-in function that could be
2097 implemented; to be used to check if
2098 "funcname" is valid
2099 varname internal variable (see
2100 |internal-variables|). Also works
2101 for |curly-braces-names|, |Dictionary|
2102 entries, |List| items, etc.
2103 Does not work for local variables in a
2104 compiled `:def` function.
2105 Beware that evaluating an index may
2106 cause an error message for an invalid
2107 expression. E.g.: >
2108 :let l = [1, 2, 3]
2109 :echo exists("l[5]")
2110< 0 >
2111 :echo exists("l[xx]")
2112< E121: Undefined variable: xx
2113 0
2114 :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")
2143 exists("*s:MyFunc")
2144 exists("bufcount")
2145 exists(":Make")
2146 exists("#CursorHold")
2147 exists("#BufReadPre#*.gz")
2148 exists("#filetypeindent")
2149 exists("#filetypeindent#FileType")
2150 exists("#filetypeindent#FileType#*")
2151 exists("##ColorScheme")
2152< There must be no space between the symbol (&/$/*/#) and the
2153 name.
2154 There must be no extra characters after the name, although in
2155 a few cases this is ignored. That may become more strict in
2156 the future, thus don't count on it!
2157 Working example: >
2158 exists(":make")
2159< NOT working example: >
2160 exists(":make install")
2161
2162< Note that the argument must be a string, not the name of the
2163 variable itself. For example: >
2164 exists(bufcount)
2165< This doesn't check for existence of the "bufcount" variable,
2166 but gets the value of "bufcount", and checks if that exists.
2167
2168 Can also be used as a |method|: >
2169 Varname()->exists()
2170<
2171
2172exists_compiled({expr}) *exists_compiled()*
2173 Like `exists()` but evaluated at compile time. This is useful
2174 to skip a block where a function is used that would otherwise
2175 give an error: >
2176 if exists_compiled('*ThatFunction')
2177 ThatFunction('works')
2178 endif
2179< If `exists()` were used then a compilation error would be
2180 given if ThatFunction() is not defined.
2181
2182 {expr} must be a literal string. *E1232*
2183 Can only be used in a |:def| function. *E1233*
2184 This does not work to check for arguments or local variables.
2185
2186
2187exp({expr}) *exp()*
2188 Return the exponential of {expr} as a |Float| in the range
2189 [0, inf].
2190 {expr} must evaluate to a |Float| or a |Number|.
2191 Examples: >
2192 :echo exp(2)
2193< 7.389056 >
2194 :echo exp(-1)
2195< 0.367879
2196
2197 Can also be used as a |method|: >
2198 Compute()->exp()
2199<
2200 {only available when compiled with the |+float| feature}
2201
2202
2203expand({string} [, {nosuf} [, {list}]]) *expand()*
2204 Expand wildcards and the following special keywords in
2205 {string}. 'wildignorecase' applies.
2206
2207 If {list} is given and it is |TRUE|, a List will be returned.
2208 Otherwise the result is a String and when there are several
2209 matches, they are separated by <NL> characters. [Note: in
2210 version 5.0 a space was used, which caused problems when a
2211 file name contains a space]
2212
2213 If the expansion fails, the result is an empty string. A name
2214 for a non-existing file is not included, unless {string} does
2215 not start with '%', '#' or '<', see below.
2216
2217 When {string} starts with '%', '#' or '<', the expansion is
2218 done like for the |cmdline-special| variables with their
2219 associated modifiers. Here is a short overview:
2220
2221 % current file name
2222 # alternate file name
2223 #n alternate file name n
2224 <cfile> file name under the cursor
2225 <afile> autocmd file name
2226 <abuf> autocmd buffer number (as a String!)
2227 <amatch> autocmd matched name
2228 <cexpr> C expression under the cursor
2229 <sfile> sourced script file or function name
2230 <slnum> sourced script line number or function
2231 line number
2232 <sflnum> script file line number, also when in
2233 a function
2234 <SID> "<SNR>123_" where "123" is the
2235 current script ID |<SID>|
2236 <stack> call stack
2237 <cword> word under the cursor
2238 <cWORD> WORD under the cursor
2239 <client> the {clientid} of the last received
2240 message |server2client()|
2241 Modifiers:
2242 :p expand to full path
2243 :h head (last path component removed)
2244 :t tail (last path component only)
2245 :r root (one extension removed)
2246 :e extension only
2247
2248 Example: >
2249 :let &tags = expand("%:p:h") . "/tags"
2250< Note that when expanding a string that starts with '%', '#' or
2251 '<', any following text is ignored. This does NOT work: >
2252 :let doesntwork = expand("%:h.bak")
2253< Use this: >
2254 :let doeswork = expand("%:h") . ".bak"
2255< Also note that expanding "<cfile>" and others only returns the
2256 referenced file name without further expansion. If "<cfile>"
2257 is "~/.cshrc", you need to do another expand() to have the
2258 "~/" expanded into the path of the home directory: >
2259 :echo expand(expand("<cfile>"))
2260<
2261 There cannot be white space between the variables and the
2262 following modifier. The |fnamemodify()| function can be used
2263 to modify normal file names.
2264
2265 When using '%' or '#', and the current or alternate file name
2266 is not defined, an empty string is used. Using "%:p" in a
2267 buffer with no name, results in the current directory, with a
2268 '/' added.
2269
2270 When {string} does not start with '%', '#' or '<', it is
2271 expanded like a file name is expanded on the command line.
2272 'suffixes' and 'wildignore' are used, unless the optional
2273 {nosuf} argument is given and it is |TRUE|.
2274 Names for non-existing files are included. The "**" item can
2275 be used to search in a directory tree. For example, to find
2276 all "README" files in the current directory and below: >
2277 :echo expand("**/README")
2278<
2279 expand() can also be used to expand variables and environment
2280 variables that are only known in a shell. But this can be
2281 slow, because a shell may be used to do the expansion. See
2282 |expr-env-expand|.
2283 The expanded variable is still handled like a list of file
2284 names. When an environment variable cannot be expanded, it is
2285 left unchanged. Thus ":echo expand('$FOOBAR')" results in
2286 "$FOOBAR".
2287
2288 See |glob()| for finding existing files. See |system()| for
2289 getting the raw output of an external command.
2290
2291 Can also be used as a |method|: >
2292 Getpattern()->expand()
2293
2294expandcmd({string}) *expandcmd()*
2295 Expand special items in String {string} like what is done for
2296 an Ex command such as `:edit`. This expands special keywords,
2297 like with |expand()|, and environment variables, anywhere in
2298 {string}. "~user" and "~/path" are only expanded at the
2299 start.
2300 Returns the expanded string. Example: >
2301 :echo expandcmd('make %<.o')
2302
2303< Can also be used as a |method|: >
2304 GetCommand()->expandcmd()
2305<
2306extend({expr1}, {expr2} [, {expr3}]) *extend()*
2307 {expr1} and {expr2} must be both |Lists| or both
2308 |Dictionaries|.
2309
2310 If they are |Lists|: Append {expr2} to {expr1}.
2311 If {expr3} is given insert the items of {expr2} before the
2312 item with index {expr3} in {expr1}. When {expr3} is zero
2313 insert before the first item. When {expr3} is equal to
2314 len({expr1}) then {expr2} is appended.
2315 Examples: >
2316 :echo sort(extend(mylist, [7, 5]))
2317 :call extend(mylist, [2, 3], 1)
2318< When {expr1} is the same List as {expr2} then the number of
2319 items copied is equal to the original length of the List.
2320 E.g., when {expr3} is 1 you get N new copies of the first item
2321 (where N is the original length of the List).
2322 Use |add()| to concatenate one item to a list. To concatenate
2323 two lists into a new list use the + operator: >
2324 :let newlist = [1, 2, 3] + [4, 5]
2325<
2326 If they are |Dictionaries|:
2327 Add all entries from {expr2} to {expr1}.
2328 If a key exists in both {expr1} and {expr2} then {expr3} is
2329 used to decide what to do:
2330 {expr3} = "keep": keep the value of {expr1}
2331 {expr3} = "force": use the value of {expr2}
2332 {expr3} = "error": give an error message *E737*
2333 When {expr3} is omitted then "force" is assumed.
2334
2335 {expr1} is changed when {expr2} is not empty. If necessary
2336 make a copy of {expr1} first.
2337 {expr2} remains unchanged.
2338 When {expr1} is locked and {expr2} is not empty the operation
2339 fails.
2340 Returns {expr1}.
2341
2342 Can also be used as a |method|: >
2343 mylist->extend(otherlist)
2344
2345
2346extendnew({expr1}, {expr2} [, {expr3}]) *extendnew()*
2347 Like |extend()| but instead of adding items to {expr1} a new
2348 List or Dictionary is created and returned. {expr1} remains
2349 unchanged. Items can still be changed by {expr2}, if you
2350 don't want that use |deepcopy()| first.
2351
2352
2353feedkeys({string} [, {mode}]) *feedkeys()*
2354 Characters in {string} are queued for processing as if they
2355 come from a mapping or were typed by the user.
2356
2357 By default the string is added to the end of the typeahead
2358 buffer, thus if a mapping is still being executed the
2359 characters come after them. Use the 'i' flag to insert before
2360 other characters, they will be executed next, before any
2361 characters from a mapping.
2362
2363 The function does not wait for processing of keys contained in
2364 {string}.
2365
2366 To include special keys into {string}, use double-quotes
2367 and "\..." notation |expr-quote|. For example,
2368 feedkeys("\<CR>") simulates pressing of the <Enter> key. But
2369 feedkeys('\<CR>') pushes 5 characters.
2370 A special code that might be useful is <Ignore>, it exits the
2371 wait for a character without doing anything. *<Ignore>*
2372
2373 {mode} is a String, which can contain these character flags:
2374 'm' Remap keys. This is default. If {mode} is absent,
2375 keys are remapped.
2376 'n' Do not remap keys.
2377 't' Handle keys as if typed; otherwise they are handled as
2378 if coming from a mapping. This matters for undo,
2379 opening folds, etc.
2380 'L' Lowlevel input. Only works for Unix or when using the
2381 GUI. Keys are used as if they were coming from the
2382 terminal. Other flags are not used. *E980*
2383 When a CTRL-C interrupts and 't' is included it sets
2384 the internal "got_int" flag.
2385 'i' Insert the string instead of appending (see above).
2386 'x' Execute commands until typeahead is empty. This is
2387 similar to using ":normal!". You can call feedkeys()
2388 several times without 'x' and then one time with 'x'
2389 (possibly with an empty {string}) to execute all the
2390 typeahead. Note that when Vim ends in Insert mode it
2391 will behave as if <Esc> is typed, to avoid getting
2392 stuck, waiting for a character to be typed before the
2393 script continues.
2394 Note that if you manage to call feedkeys() while
2395 executing commands, thus calling it recursively, then
2396 all typeahead will be consumed by the last call.
2397 '!' When used with 'x' will not end Insert mode. Can be
2398 used in a test when a timer is set to exit Insert mode
2399 a little later. Useful for testing CursorHoldI.
2400
2401 Return value is always 0.
2402
2403 Can also be used as a |method|: >
2404 GetInput()->feedkeys()
2405
2406filereadable({file}) *filereadable()*
2407 The result is a Number, which is |TRUE| when a file with the
2408 name {file} exists, and can be read. If {file} doesn't exist,
2409 or is a directory, the result is |FALSE|. {file} is any
2410 expression, which is used as a String.
2411 If you don't care about the file being readable you can use
2412 |glob()|.
2413 {file} is used as-is, you may want to expand wildcards first: >
2414 echo filereadable('~/.vimrc')
2415 0
2416 echo filereadable(expand('~/.vimrc'))
2417 1
2418
2419< Can also be used as a |method|: >
2420 GetName()->filereadable()
2421< *file_readable()*
2422 Obsolete name: file_readable().
2423
2424
2425filewritable({file}) *filewritable()*
2426 The result is a Number, which is 1 when a file with the
2427 name {file} exists, and can be written. If {file} doesn't
2428 exist, or is not writable, the result is 0. If {file} is a
2429 directory, and we can write to it, the result is 2.
2430
2431 Can also be used as a |method|: >
2432 GetName()->filewritable()
2433
2434
2435filter({expr1}, {expr2}) *filter()*
2436 {expr1} must be a |List|, |String|, |Blob| or |Dictionary|.
2437 For each item in {expr1} evaluate {expr2} and when the result
2438 is zero or false remove the item from the |List| or
2439 |Dictionary|. Similarly for each byte in a |Blob| and each
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00002440 character in a |String|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002441
2442 {expr2} must be a |string| or |Funcref|.
2443
2444 If {expr2} is a |string|, inside {expr2} |v:val| has the value
2445 of the current item. For a |Dictionary| |v:key| has the key
2446 of the current item and for a |List| |v:key| has the index of
2447 the current item. For a |Blob| |v:key| has the index of the
2448 current byte. For a |String| |v:key| has the index of the
2449 current character.
2450 Examples: >
2451 call filter(mylist, 'v:val !~ "OLD"')
2452< Removes the items where "OLD" appears. >
2453 call filter(mydict, 'v:key >= 8')
2454< Removes the items with a key below 8. >
2455 call filter(var, 0)
2456< Removes all the items, thus clears the |List| or |Dictionary|.
2457
2458 Note that {expr2} is the result of expression and is then
2459 used as an expression again. Often it is good to use a
2460 |literal-string| to avoid having to double backslashes.
2461
2462 If {expr2} is a |Funcref| it must take two arguments:
2463 1. the key or the index of the current item.
2464 2. the value of the current item.
2465 The function must return |TRUE| if the item should be kept.
2466 Example that keeps the odd items of a list: >
2467 func Odd(idx, val)
2468 return a:idx % 2 == 1
2469 endfunc
2470 call filter(mylist, function('Odd'))
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00002471< It is shorter when using a |lambda|. In |Vim9| syntax: >
2472 call filter(myList, (idx, val) => idx * val <= 42)
2473< In legacy script syntax: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002474 call filter(myList, {idx, val -> idx * val <= 42})
2475< If you do not use "val" you can leave it out: >
2476 call filter(myList, {idx -> idx % 2 == 1})
2477<
2478 In |Vim9| script the result must be true, false, zero or one.
2479 Other values will result in a type error.
2480
2481 For a |List| and a |Dictionary| the operation is done
2482 in-place. If you want it to remain unmodified make a copy
2483 first: >
2484 :let l = filter(copy(mylist), 'v:val =~ "KEEP"')
2485
2486< Returns {expr1}, the |List| or |Dictionary| that was filtered,
naohiro ono56200ee2022-01-01 14:59:44 +00002487 or a new |Blob| or |String|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002488 When an error is encountered while evaluating {expr2} no
2489 further items in {expr1} are processed.
2490 When {expr2} is a Funcref errors inside a function are ignored,
2491 unless it was defined with the "abort" flag.
2492
2493 Can also be used as a |method|: >
2494 mylist->filter(expr2)
2495
2496finddir({name} [, {path} [, {count}]]) *finddir()*
2497 Find directory {name} in {path}. Supports both downwards and
2498 upwards recursive directory searches. See |file-searching|
2499 for the syntax of {path}.
2500
2501 Returns the path of the first found match. When the found
2502 directory is below the current directory a relative path is
2503 returned. Otherwise a full path is returned.
2504 If {path} is omitted or empty then 'path' is used.
2505
2506 If the optional {count} is given, find {count}'s occurrence of
2507 {name} in {path} instead of the first one.
2508 When {count} is negative return all the matches in a |List|.
2509
2510 This is quite similar to the ex-command `:find`.
2511 {only available when compiled with the |+file_in_path|
2512 feature}
2513
2514 Can also be used as a |method|: >
2515 GetName()->finddir()
2516
2517findfile({name} [, {path} [, {count}]]) *findfile()*
2518 Just like |finddir()|, but find a file instead of a directory.
2519 Uses 'suffixesadd'.
2520 Example: >
2521 :echo findfile("tags.vim", ".;")
2522< Searches from the directory of the current file upwards until
2523 it finds the file "tags.vim".
2524
2525 Can also be used as a |method|: >
2526 GetName()->findfile()
2527
2528flatten({list} [, {maxdepth}]) *flatten()*
2529 Flatten {list} up to {maxdepth} levels. Without {maxdepth}
2530 the result is a |List| without nesting, as if {maxdepth} is
2531 a very large number.
2532 The {list} is changed in place, use |flattennew()| if you do
2533 not want that.
2534 In Vim9 script flatten() cannot be used, you must always use
2535 |flattennew()|.
2536 *E900*
2537 {maxdepth} means how deep in nested lists changes are made.
2538 {list} is not modified when {maxdepth} is 0.
2539 {maxdepth} must be positive number.
2540
2541 If there is an error the number zero is returned.
2542
2543 Example: >
2544 :echo flatten([1, [2, [3, 4]], 5])
2545< [1, 2, 3, 4, 5] >
2546 :echo flatten([1, [2, [3, 4]], 5], 1)
2547< [1, 2, [3, 4], 5]
2548
2549 Can also be used as a |method|: >
2550 mylist->flatten()
2551<
2552flattennew({list} [, {maxdepth}]) *flattennew()*
2553 Like |flatten()| but first make a copy of {list}.
2554
2555
2556float2nr({expr}) *float2nr()*
2557 Convert {expr} to a Number by omitting the part after the
2558 decimal point.
2559 {expr} must evaluate to a |Float| or a Number.
2560 When the value of {expr} is out of range for a |Number| the
2561 result is truncated to 0x7fffffff or -0x7fffffff (or when
2562 64-bit Number support is enabled, 0x7fffffffffffffff or
2563 -0x7fffffffffffffff). NaN results in -0x80000000 (or when
2564 64-bit Number support is enabled, -0x8000000000000000).
2565 Examples: >
2566 echo float2nr(3.95)
2567< 3 >
2568 echo float2nr(-23.45)
2569< -23 >
2570 echo float2nr(1.0e100)
2571< 2147483647 (or 9223372036854775807) >
2572 echo float2nr(-1.0e150)
2573< -2147483647 (or -9223372036854775807) >
2574 echo float2nr(1.0e-100)
2575< 0
2576
2577 Can also be used as a |method|: >
2578 Compute()->float2nr()
2579<
2580 {only available when compiled with the |+float| feature}
2581
2582
2583floor({expr}) *floor()*
2584 Return the largest integral value less than or equal to
2585 {expr} as a |Float| (round down).
2586 {expr} must evaluate to a |Float| or a |Number|.
2587 Examples: >
2588 echo floor(1.856)
2589< 1.0 >
2590 echo floor(-5.456)
2591< -6.0 >
2592 echo floor(4.0)
2593< 4.0
2594
2595 Can also be used as a |method|: >
2596 Compute()->floor()
2597<
2598 {only available when compiled with the |+float| feature}
2599
2600
2601fmod({expr1}, {expr2}) *fmod()*
2602 Return the remainder of {expr1} / {expr2}, even if the
2603 division is not representable. Returns {expr1} - i * {expr2}
2604 for some integer i such that if {expr2} is non-zero, the
2605 result has the same sign as {expr1} and magnitude less than
2606 the magnitude of {expr2}. If {expr2} is zero, the value
2607 returned is zero. The value returned is a |Float|.
2608 {expr1} and {expr2} must evaluate to a |Float| or a |Number|.
2609 Examples: >
2610 :echo fmod(12.33, 1.22)
2611< 0.13 >
2612 :echo fmod(-12.33, 1.22)
2613< -0.13
2614
2615 Can also be used as a |method|: >
2616 Compute()->fmod(1.22)
2617<
2618 {only available when compiled with |+float| feature}
2619
2620
2621fnameescape({string}) *fnameescape()*
2622 Escape {string} for use as file name command argument. All
2623 characters that have a special meaning, such as '%' and '|'
2624 are escaped with a backslash.
2625 For most systems the characters escaped are
2626 " \t\n*?[{`$\\%#'\"|!<". For systems where a backslash
2627 appears in a filename, it depends on the value of 'isfname'.
2628 A leading '+' and '>' is also escaped (special after |:edit|
2629 and |:write|). And a "-" by itself (special after |:cd|).
2630 Example: >
2631 :let fname = '+some str%nge|name'
2632 :exe "edit " . fnameescape(fname)
2633< results in executing: >
2634 edit \+some\ str\%nge\|name
2635<
2636 Can also be used as a |method|: >
2637 GetName()->fnameescape()
2638
2639fnamemodify({fname}, {mods}) *fnamemodify()*
2640 Modify file name {fname} according to {mods}. {mods} is a
2641 string of characters like it is used for file names on the
2642 command line. See |filename-modifiers|.
2643 Example: >
2644 :echo fnamemodify("main.c", ":p:h")
2645< results in: >
2646 /home/mool/vim/vim/src
2647< If {mods} is empty then {fname} is returned.
2648 Note: Environment variables don't work in {fname}, use
2649 |expand()| first then.
2650
2651 Can also be used as a |method|: >
2652 GetName()->fnamemodify(':p:h')
2653
2654foldclosed({lnum}) *foldclosed()*
2655 The result is a Number. If the line {lnum} is in a closed
2656 fold, the result is the number of the first line in that fold.
2657 If the line {lnum} is not in a closed fold, -1 is returned.
2658 {lnum} is used like with |getline()|. Thus "." is the current
2659 line, "'m" mark m, etc.
2660
2661 Can also be used as a |method|: >
2662 GetLnum()->foldclosed()
2663
2664foldclosedend({lnum}) *foldclosedend()*
2665 The result is a Number. If the line {lnum} is in a closed
2666 fold, the result is the number of the last line in that fold.
2667 If the line {lnum} is not in a closed fold, -1 is returned.
2668 {lnum} is used like with |getline()|. Thus "." is the current
2669 line, "'m" mark m, etc.
2670
2671 Can also be used as a |method|: >
2672 GetLnum()->foldclosedend()
2673
2674foldlevel({lnum}) *foldlevel()*
2675 The result is a Number, which is the foldlevel of line {lnum}
2676 in the current buffer. For nested folds the deepest level is
2677 returned. If there is no fold at line {lnum}, zero is
2678 returned. It doesn't matter if the folds are open or closed.
2679 When used while updating folds (from 'foldexpr') -1 is
2680 returned for lines where folds are still to be updated and the
2681 foldlevel is unknown. As a special case the level of the
2682 previous line is usually available.
2683 {lnum} is used like with |getline()|. Thus "." is the current
2684 line, "'m" mark m, etc.
2685
2686 Can also be used as a |method|: >
2687 GetLnum()->foldlevel()
2688<
2689 *foldtext()*
2690foldtext() Returns a String, to be displayed for a closed fold. This is
2691 the default function used for the 'foldtext' option and should
2692 only be called from evaluating 'foldtext'. It uses the
2693 |v:foldstart|, |v:foldend| and |v:folddashes| variables.
2694 The returned string looks like this: >
2695 +-- 45 lines: abcdef
2696< The number of leading dashes depends on the foldlevel. The
2697 "45" is the number of lines in the fold. "abcdef" is the text
2698 in the first non-blank line of the fold. Leading white space,
2699 "//" or "/*" and the text from the 'foldmarker' and
2700 'commentstring' options is removed.
2701 When used to draw the actual foldtext, the rest of the line
2702 will be filled with the fold char from the 'fillchars'
2703 setting.
2704 {not available when compiled without the |+folding| feature}
2705
2706foldtextresult({lnum}) *foldtextresult()*
2707 Returns the text that is displayed for the closed fold at line
2708 {lnum}. Evaluates 'foldtext' in the appropriate context.
2709 When there is no closed fold at {lnum} an empty string is
2710 returned.
2711 {lnum} is used like with |getline()|. Thus "." is the current
2712 line, "'m" mark m, etc.
2713 Useful when exporting folded text, e.g., to HTML.
2714 {not available when compiled without the |+folding| feature}
2715
2716
2717 Can also be used as a |method|: >
2718 GetLnum()->foldtextresult()
2719<
2720 *foreground()*
2721foreground() Move the Vim window to the foreground. Useful when sent from
2722 a client to a Vim server. |remote_send()|
2723 On Win32 systems this might not work, the OS does not always
2724 allow a window to bring itself to the foreground. Use
2725 |remote_foreground()| instead.
2726 {only in the Win32, Athena, Motif and GTK GUI versions and the
2727 Win32 console version}
2728
2729fullcommand({name}) *fullcommand()*
2730 Get the full command name from a short abbreviated command
2731 name; see |20.2| for details on command abbreviations.
2732
2733 The string argument {name} may start with a `:` and can
2734 include a [range], these are skipped and not returned.
2735 Returns an empty string if a command doesn't exist or if it's
2736 ambiguous (for user-defined commands).
2737
2738 For example `fullcommand('s')`, `fullcommand('sub')`,
2739 `fullcommand(':%substitute')` all return "substitute".
2740
2741 Can also be used as a |method|: >
2742 GetName()->fullcommand()
2743<
2744 *funcref()*
2745funcref({name} [, {arglist}] [, {dict}])
2746 Just like |function()|, but the returned Funcref will lookup
2747 the function by reference, not by name. This matters when the
2748 function {name} is redefined later.
2749
2750 Unlike |function()|, {name} must be an existing user function.
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00002751 It only works for an autoloaded function if it has already
2752 been loaded (to avoid mistakenly loading the autoload script
2753 when only intending to use the function name, use |function()|
2754 instead). {name} cannot be a builtin function.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002755
2756 Can also be used as a |method|: >
2757 GetFuncname()->funcref([arg])
2758<
2759 *function()* *partial* *E700* *E922* *E923*
2760function({name} [, {arglist}] [, {dict}])
2761 Return a |Funcref| variable that refers to function {name}.
2762 {name} can be the name of a user defined function or an
2763 internal function.
2764
2765 {name} can also be a Funcref or a partial. When it is a
2766 partial the dict stored in it will be used and the {dict}
2767 argument is not allowed. E.g.: >
2768 let FuncWithArg = function(dict.Func, [arg])
2769 let Broken = function(dict.Func, [arg], dict)
2770<
2771 When using the Funcref the function will be found by {name},
2772 also when it was redefined later. Use |funcref()| to keep the
2773 same function.
2774
2775 When {arglist} or {dict} is present this creates a partial.
2776 That means the argument list and/or the dictionary is stored in
2777 the Funcref and will be used when the Funcref is called.
2778
2779 The arguments are passed to the function in front of other
2780 arguments, but after any argument from |method|. Example: >
2781 func Callback(arg1, arg2, name)
2782 ...
2783 let Partial = function('Callback', ['one', 'two'])
2784 ...
2785 call Partial('name')
2786< Invokes the function as with: >
2787 call Callback('one', 'two', 'name')
2788
2789< With a |method|: >
2790 func Callback(one, two, three)
2791 ...
2792 let Partial = function('Callback', ['two'])
2793 ...
2794 eval 'one'->Partial('three')
2795< Invokes the function as with: >
2796 call Callback('one', 'two', 'three')
2797
2798< The function() call can be nested to add more arguments to the
2799 Funcref. The extra arguments are appended to the list of
2800 arguments. Example: >
2801 func Callback(arg1, arg2, name)
2802 ...
2803 let Func = function('Callback', ['one'])
2804 let Func2 = function(Func, ['two'])
2805 ...
2806 call Func2('name')
2807< Invokes the function as with: >
2808 call Callback('one', 'two', 'name')
2809
2810< The Dictionary is only useful when calling a "dict" function.
2811 In that case the {dict} is passed in as "self". Example: >
2812 function Callback() dict
2813 echo "called for " . self.name
2814 endfunction
2815 ...
2816 let context = {"name": "example"}
2817 let Func = function('Callback', context)
2818 ...
2819 call Func() " will echo: called for example
2820< The use of function() is not needed when there are no extra
2821 arguments, these two are equivalent: >
2822 let Func = function('Callback', context)
2823 let Func = context.Callback
2824
2825< The argument list and the Dictionary can be combined: >
2826 function Callback(arg1, count) dict
2827 ...
2828 let context = {"name": "example"}
2829 let Func = function('Callback', ['one'], context)
2830 ...
2831 call Func(500)
2832< Invokes the function as with: >
2833 call context.Callback('one', 500)
2834<
2835 Can also be used as a |method|: >
2836 GetFuncname()->function([arg])
2837
2838
2839garbagecollect([{atexit}]) *garbagecollect()*
2840 Cleanup unused |Lists|, |Dictionaries|, |Channels| and |Jobs|
2841 that have circular references.
2842
2843 There is hardly ever a need to invoke this function, as it is
2844 automatically done when Vim runs out of memory or is waiting
2845 for the user to press a key after 'updatetime'. Items without
2846 circular references are always freed when they become unused.
2847 This is useful if you have deleted a very big |List| and/or
2848 |Dictionary| with circular references in a script that runs
2849 for a long time.
2850
2851 When the optional {atexit} argument is one, garbage
2852 collection will also be done when exiting Vim, if it wasn't
2853 done before. This is useful when checking for memory leaks.
2854
2855 The garbage collection is not done immediately but only when
2856 it's safe to perform. This is when waiting for the user to
2857 type a character. To force garbage collection immediately use
2858 |test_garbagecollect_now()|.
2859
2860get({list}, {idx} [, {default}]) *get()*
2861 Get item {idx} from |List| {list}. When this item is not
2862 available return {default}. Return zero when {default} is
2863 omitted.
2864 Preferably used as a |method|: >
2865 mylist->get(idx)
2866get({blob}, {idx} [, {default}])
2867 Get byte {idx} from |Blob| {blob}. When this byte is not
2868 available return {default}. Return -1 when {default} is
2869 omitted.
2870 Preferably used as a |method|: >
2871 myblob->get(idx)
2872get({dict}, {key} [, {default}])
2873 Get item with key {key} from |Dictionary| {dict}. When this
2874 item is not available return {default}. Return zero when
2875 {default} is omitted. Useful example: >
2876 let val = get(g:, 'var_name', 'default')
2877< This gets the value of g:var_name if it exists, and uses
2878 'default' when it does not exist.
2879 Preferably used as a |method|: >
2880 mydict->get(key)
2881get({func}, {what})
2882 Get an item with from Funcref {func}. Possible values for
2883 {what} are:
2884 "name" The function name
2885 "func" The function
2886 "dict" The dictionary
2887 "args" The list with arguments
2888 Preferably used as a |method|: >
2889 myfunc->get(what)
2890<
2891 *getbufinfo()*
2892getbufinfo([{buf}])
2893getbufinfo([{dict}])
2894 Get information about buffers as a List of Dictionaries.
2895
2896 Without an argument information about all the buffers is
2897 returned.
2898
2899 When the argument is a |Dictionary| only the buffers matching
2900 the specified criteria are returned. The following keys can
2901 be specified in {dict}:
2902 buflisted include only listed buffers.
2903 bufloaded include only loaded buffers.
2904 bufmodified include only modified buffers.
2905
2906 Otherwise, {buf} specifies a particular buffer to return
2907 information for. For the use of {buf}, see |bufname()|
2908 above. If the buffer is found the returned List has one item.
2909 Otherwise the result is an empty list.
2910
2911 Each returned List item is a dictionary with the following
2912 entries:
2913 bufnr Buffer number.
2914 changed TRUE if the buffer is modified.
2915 changedtick Number of changes made to the buffer.
2916 hidden TRUE if the buffer is hidden.
2917 lastused Timestamp in seconds, like
2918 |localtime()|, when the buffer was
2919 last used.
2920 {only with the |+viminfo| feature}
2921 listed TRUE if the buffer is listed.
2922 lnum Line number used for the buffer when
2923 opened in the current window.
2924 Only valid if the buffer has been
2925 displayed in the window in the past.
2926 If you want the line number of the
2927 last known cursor position in a given
2928 window, use |line()|: >
2929 :echo line('.', {winid})
2930<
2931 linecount Number of lines in the buffer (only
2932 valid when loaded)
2933 loaded TRUE if the buffer is loaded.
2934 name Full path to the file in the buffer.
2935 signs List of signs placed in the buffer.
2936 Each list item is a dictionary with
2937 the following fields:
2938 id sign identifier
2939 lnum line number
2940 name sign name
2941 variables A reference to the dictionary with
2942 buffer-local variables.
2943 windows List of |window-ID|s that display this
2944 buffer
2945 popups List of popup |window-ID|s that
2946 display this buffer
2947
2948 Examples: >
2949 for buf in getbufinfo()
2950 echo buf.name
2951 endfor
2952 for buf in getbufinfo({'buflisted':1})
2953 if buf.changed
2954 ....
2955 endif
2956 endfor
2957<
2958 To get buffer-local options use: >
2959 getbufvar({bufnr}, '&option_name')
2960<
2961 Can also be used as a |method|: >
2962 GetBufnr()->getbufinfo()
2963<
2964
2965 *getbufline()*
2966getbufline({buf}, {lnum} [, {end}])
2967 Return a |List| with the lines starting from {lnum} to {end}
2968 (inclusive) in the buffer {buf}. If {end} is omitted, a
2969 |List| with only the line {lnum} is returned.
2970
2971 For the use of {buf}, see |bufname()| above.
2972
2973 For {lnum} and {end} "$" can be used for the last line of the
2974 buffer. Otherwise a number must be used.
2975
2976 When {lnum} is smaller than 1 or bigger than the number of
2977 lines in the buffer, an empty |List| is returned.
2978
2979 When {end} is greater than the number of lines in the buffer,
2980 it is treated as {end} is set to the number of lines in the
2981 buffer. When {end} is before {lnum} an empty |List| is
2982 returned.
2983
2984 This function works only for loaded buffers. For unloaded and
2985 non-existing buffers, an empty |List| is returned.
2986
2987 Example: >
2988 :let lines = getbufline(bufnr("myfile"), 1, "$")
2989
2990< Can also be used as a |method|: >
2991 GetBufnr()->getbufline(lnum)
2992
2993getbufvar({buf}, {varname} [, {def}]) *getbufvar()*
2994 The result is the value of option or local buffer variable
2995 {varname} in buffer {buf}. Note that the name without "b:"
2996 must be used.
2997 The {varname} argument is a string.
2998 When {varname} is empty returns a |Dictionary| with all the
2999 buffer-local variables.
3000 When {varname} is equal to "&" returns a |Dictionary| with all
3001 the buffer-local options.
3002 Otherwise, when {varname} starts with "&" returns the value of
3003 a buffer-local option.
3004 This also works for a global or buffer-local option, but it
3005 doesn't work for a global variable, window-local variable or
3006 window-local option.
3007 For the use of {buf}, see |bufname()| above.
3008 When the buffer or variable doesn't exist {def} or an empty
3009 string is returned, there is no error message.
3010 Examples: >
3011 :let bufmodified = getbufvar(1, "&mod")
3012 :echo "todo myvar = " . getbufvar("todo", "myvar")
3013
3014< Can also be used as a |method|: >
3015 GetBufnr()->getbufvar(varname)
3016<
3017getchangelist([{buf}]) *getchangelist()*
3018 Returns the |changelist| for the buffer {buf}. For the use
3019 of {buf}, see |bufname()| above. If buffer {buf} doesn't
3020 exist, an empty list is returned.
3021
3022 The returned list contains two entries: a list with the change
3023 locations and the current position in the list. Each
3024 entry in the change list is a dictionary with the following
3025 entries:
3026 col column number
3027 coladd column offset for 'virtualedit'
3028 lnum line number
3029 If buffer {buf} is the current buffer, then the current
3030 position refers to the position in the list. For other
3031 buffers, it is set to the length of the list.
3032
3033 Can also be used as a |method|: >
3034 GetBufnr()->getchangelist()
3035
3036getchar([expr]) *getchar()*
3037 Get a single character from the user or input stream.
3038 If [expr] is omitted, wait until a character is available.
3039 If [expr] is 0, only get a character when one is available.
3040 Return zero otherwise.
3041 If [expr] is 1, only check if a character is available, it is
3042 not consumed. Return zero if no character available.
3043 If you prefer always getting a string use |getcharstr()|.
3044
3045 Without [expr] and when [expr] is 0 a whole character or
3046 special key is returned. If it is a single character, the
3047 result is a number. Use nr2char() to convert it to a String.
3048 Otherwise a String is returned with the encoded character.
3049 For a special key it's a String with a sequence of bytes
3050 starting with 0x80 (decimal: 128). This is the same value as
3051 the String "\<Key>", e.g., "\<Left>". The returned value is
3052 also a String when a modifier (shift, control, alt) was used
3053 that is not included in the character.
3054
3055 When [expr] is 0 and Esc is typed, there will be a short delay
3056 while Vim waits to see if this is the start of an escape
3057 sequence.
3058
3059 When [expr] is 1 only the first byte is returned. For a
3060 one-byte character it is the character itself as a number.
3061 Use nr2char() to convert it to a String.
3062
3063 Use getcharmod() to obtain any additional modifiers.
3064
3065 When the user clicks a mouse button, the mouse event will be
3066 returned. The position can then be found in |v:mouse_col|,
3067 |v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|.
3068 |getmousepos()| can also be used. Mouse move events will be
3069 ignored.
3070 This example positions the mouse as it would normally happen: >
3071 let c = getchar()
3072 if c == "\<LeftMouse>" && v:mouse_win > 0
3073 exe v:mouse_win . "wincmd w"
3074 exe v:mouse_lnum
3075 exe "normal " . v:mouse_col . "|"
3076 endif
3077<
3078 When using bracketed paste only the first character is
3079 returned, the rest of the pasted text is dropped.
3080 |xterm-bracketed-paste|.
3081
3082 There is no prompt, you will somehow have to make clear to the
3083 user that a character has to be typed. The screen is not
3084 redrawn, e.g. when resizing the window. When using a popup
3085 window it should work better with a |popup-filter|.
3086
3087 There is no mapping for the character.
3088 Key codes are replaced, thus when the user presses the <Del>
3089 key you get the code for the <Del> key, not the raw character
3090 sequence. Examples: >
3091 getchar() == "\<Del>"
3092 getchar() == "\<S-Left>"
3093< This example redefines "f" to ignore case: >
3094 :nmap f :call FindChar()<CR>
3095 :function FindChar()
3096 : let c = nr2char(getchar())
3097 : while col('.') < col('$') - 1
3098 : normal l
3099 : if getline('.')[col('.') - 1] ==? c
3100 : break
3101 : endif
3102 : endwhile
3103 :endfunction
3104<
3105 You may also receive synthetic characters, such as
3106 |<CursorHold>|. Often you will want to ignore this and get
3107 another character: >
3108 :function GetKey()
3109 : let c = getchar()
3110 : while c == "\<CursorHold>"
3111 : let c = getchar()
3112 : endwhile
3113 : return c
3114 :endfunction
3115
3116getcharmod() *getcharmod()*
3117 The result is a Number which is the state of the modifiers for
3118 the last obtained character with getchar() or in another way.
3119 These values are added together:
3120 2 shift
3121 4 control
3122 8 alt (meta)
3123 16 meta (when it's different from ALT)
3124 32 mouse double click
3125 64 mouse triple click
3126 96 mouse quadruple click (== 32 + 64)
3127 128 command (Macintosh only)
3128 Only the modifiers that have not been included in the
3129 character itself are obtained. Thus Shift-a results in "A"
3130 without a modifier.
3131
3132 *getcharpos()*
3133getcharpos({expr})
3134 Get the position for String {expr}. Same as |getpos()| but the
3135 column number in the returned List is a character index
3136 instead of a byte index.
naohiro ono56200ee2022-01-01 14:59:44 +00003137 If |getpos()| returns a very large column number, equal to
3138 |v:maxcol|, then getcharpos() will return the character index
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003139 of the last character.
3140
3141 Example:
3142 With the cursor on '세' in line 5 with text "여보세요": >
3143 getcharpos('.') returns [0, 5, 3, 0]
3144 getpos('.') returns [0, 5, 7, 0]
3145<
3146 Can also be used as a |method|: >
3147 GetMark()->getcharpos()
3148
3149getcharsearch() *getcharsearch()*
3150 Return the current character search information as a {dict}
3151 with the following entries:
3152
3153 char character previously used for a character
3154 search (|t|, |f|, |T|, or |F|); empty string
3155 if no character search has been performed
3156 forward direction of character search; 1 for forward,
3157 0 for backward
3158 until type of character search; 1 for a |t| or |T|
3159 character search, 0 for an |f| or |F|
3160 character search
3161
3162 This can be useful to always have |;| and |,| search
3163 forward/backward regardless of the direction of the previous
3164 character search: >
3165 :nnoremap <expr> ; getcharsearch().forward ? ';' : ','
3166 :nnoremap <expr> , getcharsearch().forward ? ',' : ';'
3167< Also see |setcharsearch()|.
3168
3169
3170getcharstr([expr]) *getcharstr()*
3171 Get a single character from the user or input stream as a
3172 string.
3173 If [expr] is omitted, wait until a character is available.
3174 If [expr] is 0 or false, only get a character when one is
3175 available. Return an empty string otherwise.
3176 If [expr] is 1 or true, only check if a character is
3177 available, it is not consumed. Return an empty string
3178 if no character is available.
3179 Otherwise this works like |getchar()|, except that a number
3180 result is converted to a string.
3181
3182
3183getcmdline() *getcmdline()*
3184 Return the current command-line. Only works when the command
3185 line is being edited, thus requires use of |c_CTRL-\_e| or
3186 |c_CTRL-R_=|.
3187 Example: >
3188 :cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
3189< Also see |getcmdtype()|, |getcmdpos()| and |setcmdpos()|.
3190 Returns an empty string when entering a password or using
3191 |inputsecret()|.
3192
3193getcmdpos() *getcmdpos()*
3194 Return the position of the cursor in the command line as a
3195 byte count. The first column is 1.
3196 Only works when editing the command line, thus requires use of
3197 |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
3198 Returns 0 otherwise.
3199 Also see |getcmdtype()|, |setcmdpos()| and |getcmdline()|.
3200
3201getcmdtype() *getcmdtype()*
3202 Return the current command-line type. Possible return values
3203 are:
3204 : normal Ex command
3205 > debug mode command |debug-mode|
3206 / forward search command
3207 ? backward search command
3208 @ |input()| command
3209 - |:insert| or |:append| command
3210 = |i_CTRL-R_=|
3211 Only works when editing the command line, thus requires use of
3212 |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
3213 Returns an empty string otherwise.
3214 Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
3215
3216getcmdwintype() *getcmdwintype()*
3217 Return the current |command-line-window| type. Possible return
3218 values are the same as |getcmdtype()|. Returns an empty string
3219 when not in the command-line window.
3220
3221getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
3222 Return a list of command-line completion matches. The String
3223 {type} argument specifies what for. The following completion
3224 types are supported:
3225
3226 arglist file names in argument list
3227 augroup autocmd groups
3228 buffer buffer names
3229 behave :behave suboptions
3230 color color schemes
3231 command Ex command
3232 cmdline |cmdline-completion| result
3233 compiler compilers
3234 cscope |:cscope| suboptions
3235 diff_buffer |:diffget| and |:diffput| completion
3236 dir directory names
3237 environment environment variable names
3238 event autocommand events
3239 expression Vim expression
3240 file file and directory names
3241 file_in_path file and directory names in |'path'|
3242 filetype filetype names |'filetype'|
3243 function function name
3244 help help subjects
3245 highlight highlight groups
3246 history :history suboptions
3247 locale locale names (as output of locale -a)
3248 mapclear buffer argument
3249 mapping mapping name
3250 menu menus
3251 messages |:messages| suboptions
3252 option options
3253 packadd optional package |pack-add| names
3254 shellcmd Shell command
3255 sign |:sign| suboptions
3256 syntax syntax file names |'syntax'|
3257 syntime |:syntime| suboptions
3258 tag tags
3259 tag_listfiles tags, file names
3260 user user names
3261 var user variables
3262
3263 If {pat} is an empty string, then all the matches are
3264 returned. Otherwise only items matching {pat} are returned.
3265 See |wildcards| for the use of special characters in {pat}.
3266
3267 If the optional {filtered} flag is set to 1, then 'wildignore'
3268 is applied to filter the results. Otherwise all the matches
3269 are returned. The 'wildignorecase' option always applies.
3270
3271 If {type} is "cmdline", then the |cmdline-completion| result is
3272 returned. For example, to complete the possible values after
3273 a ":call" command: >
3274 echo getcompletion('call ', 'cmdline')
3275<
3276 If there are no matches, an empty list is returned. An
3277 invalid value for {type} produces an error.
3278
3279 Can also be used as a |method|: >
3280 GetPattern()->getcompletion('color')
3281<
3282 *getcurpos()*
3283getcurpos([{winid}])
3284 Get the position of the cursor. This is like getpos('.'), but
3285 includes an extra "curswant" item in the list:
3286 [0, lnum, col, off, curswant] ~
3287 The "curswant" number is the preferred column when moving the
naohiro ono56200ee2022-01-01 14:59:44 +00003288 cursor vertically. After |$| command it will be a very large
3289 number equal to |v:maxcol|. Also see |getcursorcharpos()| and
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003290 |getpos()|.
3291 The first "bufnum" item is always zero. The byte position of
3292 the cursor is returned in 'col'. To get the character
3293 position, use |getcursorcharpos()|.
3294
3295 The optional {winid} argument can specify the window. It can
3296 be the window number or the |window-ID|. The last known
3297 cursor position is returned, this may be invalid for the
3298 current value of the buffer if it is not the current window.
3299 If {winid} is invalid a list with zeroes is returned.
3300
3301 This can be used to save and restore the cursor position: >
3302 let save_cursor = getcurpos()
3303 MoveTheCursorAround
3304 call setpos('.', save_cursor)
3305< Note that this only works within the window. See
3306 |winrestview()| for restoring more state.
3307
3308 Can also be used as a |method|: >
3309 GetWinid()->getcurpos()
3310<
3311 *getcursorcharpos()*
3312getcursorcharpos([{winid}])
3313 Same as |getcurpos()| but the column number in the returned
3314 List is a character index instead of a byte index.
3315
3316 Example:
3317 With the cursor on '보' in line 3 with text "여보세요": >
3318 getcursorcharpos() returns [0, 3, 2, 0, 3]
3319 getcurpos() returns [0, 3, 4, 0, 3]
3320<
3321 Can also be used as a |method|: >
3322 GetWinid()->getcursorcharpos()
3323
3324< *getcwd()*
3325getcwd([{winnr} [, {tabnr}]])
3326 The result is a String, which is the name of the current
3327 working directory. 'autochdir' is ignored.
3328
3329 With {winnr} return the local current directory of this window
3330 in the current tab page. {winnr} can be the window number or
3331 the |window-ID|.
3332 If {winnr} is -1 return the name of the global working
3333 directory. See also |haslocaldir()|.
3334
3335 With {winnr} and {tabnr} return the local current directory of
3336 the window in the specified tab page. If {winnr} is -1 return
3337 the working directory of the tabpage.
3338 If {winnr} is zero use the current window, if {tabnr} is zero
3339 use the current tabpage.
3340 Without any arguments, return the actual working directory of
3341 the current window.
3342 Return an empty string if the arguments are invalid.
3343
3344 Examples: >
3345 " Get the working directory of the current window
3346 :echo getcwd()
3347 :echo getcwd(0)
3348 :echo getcwd(0, 0)
3349 " Get the working directory of window 3 in tabpage 2
3350 :echo getcwd(3, 2)
3351 " Get the global working directory
3352 :echo getcwd(-1)
3353 " Get the working directory of tabpage 3
3354 :echo getcwd(-1, 3)
3355 " Get the working directory of current tabpage
3356 :echo getcwd(-1, 0)
3357
3358< Can also be used as a |method|: >
3359 GetWinnr()->getcwd()
3360
3361getenv({name}) *getenv()*
3362 Return the value of environment variable {name}. The {name}
3363 argument is a string, without a leading '$'. Example: >
3364 myHome = getenv('HOME')
3365
3366< When the variable does not exist |v:null| is returned. That
3367 is different from a variable set to an empty string, although
3368 some systems interpret the empty value as the variable being
3369 deleted. See also |expr-env|.
3370
3371 Can also be used as a |method|: >
3372 GetVarname()->getenv()
3373
3374getfontname([{name}]) *getfontname()*
3375 Without an argument returns the name of the normal font being
3376 used. Like what is used for the Normal highlight group
3377 |hl-Normal|.
3378 With an argument a check is done whether String {name} is a
3379 valid font name. If not then an empty string is returned.
3380 Otherwise the actual font name is returned, or {name} if the
3381 GUI does not support obtaining the real name.
3382 Only works when the GUI is running, thus not in your vimrc or
3383 gvimrc file. Use the |GUIEnter| autocommand to use this
3384 function just after the GUI has started.
3385 Note that the GTK GUI accepts any font name, thus checking for
3386 a valid name does not work.
3387
3388getfperm({fname}) *getfperm()*
3389 The result is a String, which is the read, write, and execute
3390 permissions of the given file {fname}.
3391 If {fname} does not exist or its directory cannot be read, an
3392 empty string is returned.
3393 The result is of the form "rwxrwxrwx", where each group of
3394 "rwx" flags represent, in turn, the permissions of the owner
3395 of the file, the group the file belongs to, and other users.
3396 If a user does not have a given permission the flag for this
3397 is replaced with the string "-". Examples: >
3398 :echo getfperm("/etc/passwd")
3399 :echo getfperm(expand("~/.vimrc"))
3400< This will hopefully (from a security point of view) display
3401 the string "rw-r--r--" or even "rw-------".
3402
3403 Can also be used as a |method|: >
3404 GetFilename()->getfperm()
3405<
3406 For setting permissions use |setfperm()|.
3407
3408getfsize({fname}) *getfsize()*
3409 The result is a Number, which is the size in bytes of the
3410 given file {fname}.
3411 If {fname} is a directory, 0 is returned.
3412 If the file {fname} can't be found, -1 is returned.
3413 If the size of {fname} is too big to fit in a Number then -2
3414 is returned.
3415
3416 Can also be used as a |method|: >
3417 GetFilename()->getfsize()
3418
3419getftime({fname}) *getftime()*
3420 The result is a Number, which is the last modification time of
3421 the given file {fname}. The value is measured as seconds
3422 since 1st Jan 1970, and may be passed to strftime(). See also
3423 |localtime()| and |strftime()|.
3424 If the file {fname} can't be found -1 is returned.
3425
3426 Can also be used as a |method|: >
3427 GetFilename()->getftime()
3428
3429getftype({fname}) *getftype()*
3430 The result is a String, which is a description of the kind of
3431 file of the given file {fname}.
3432 If {fname} does not exist an empty string is returned.
3433 Here is a table over different kinds of files and their
3434 results:
3435 Normal file "file"
3436 Directory "dir"
3437 Symbolic link "link"
3438 Block device "bdev"
3439 Character device "cdev"
3440 Socket "socket"
3441 FIFO "fifo"
3442 All other "other"
3443 Example: >
3444 getftype("/home")
3445< Note that a type such as "link" will only be returned on
3446 systems that support it. On some systems only "dir" and
3447 "file" are returned. On MS-Windows a symbolic link to a
3448 directory returns "dir" instead of "link".
3449
3450 Can also be used as a |method|: >
3451 GetFilename()->getftype()
3452
3453getimstatus() *getimstatus()*
3454 The result is a Number, which is |TRUE| when the IME status is
3455 active.
3456 See 'imstatusfunc'.
3457
3458getjumplist([{winnr} [, {tabnr}]]) *getjumplist()*
3459 Returns the |jumplist| for the specified window.
3460
3461 Without arguments use the current window.
3462 With {winnr} only use this window in the current tab page.
3463 {winnr} can also be a |window-ID|.
3464 With {winnr} and {tabnr} use the window in the specified tab
3465 page.
3466
3467 The returned list contains two entries: a list with the jump
3468 locations and the last used jump position number in the list.
3469 Each entry in the jump location list is a dictionary with
3470 the following entries:
3471 bufnr buffer number
3472 col column number
3473 coladd column offset for 'virtualedit'
3474 filename filename if available
3475 lnum line number
3476
3477 Can also be used as a |method|: >
3478 GetWinnr()->getjumplist()
3479
3480< *getline()*
3481getline({lnum} [, {end}])
3482 Without {end} the result is a String, which is line {lnum}
3483 from the current buffer. Example: >
3484 getline(1)
3485< When {lnum} is a String that doesn't start with a
3486 digit, |line()| is called to translate the String into a Number.
3487 To get the line under the cursor: >
3488 getline(".")
3489< When {lnum} is a number smaller than 1 or bigger than the
3490 number of lines in the buffer, an empty string is returned.
3491
3492 When {end} is given the result is a |List| where each item is
3493 a line from the current buffer in the range {lnum} to {end},
3494 including line {end}.
3495 {end} is used in the same way as {lnum}.
3496 Non-existing lines are silently omitted.
3497 When {end} is before {lnum} an empty |List| is returned.
3498 Example: >
3499 :let start = line('.')
3500 :let end = search("^$") - 1
3501 :let lines = getline(start, end)
3502
3503< Can also be used as a |method|: >
3504 ComputeLnum()->getline()
3505
3506< To get lines from another buffer see |getbufline()|
3507
3508getloclist({nr} [, {what}]) *getloclist()*
3509 Returns a |List| with all the entries in the location list for
3510 window {nr}. {nr} can be the window number or the |window-ID|.
3511 When {nr} is zero the current window is used.
3512
3513 For a location list window, the displayed location list is
3514 returned. For an invalid window number {nr}, an empty list is
3515 returned. Otherwise, same as |getqflist()|.
3516
3517 If the optional {what} dictionary argument is supplied, then
3518 returns the items listed in {what} as a dictionary. Refer to
3519 |getqflist()| for the supported items in {what}.
3520
3521 In addition to the items supported by |getqflist()| in {what},
3522 the following item is supported by |getloclist()|:
3523
3524 filewinid id of the window used to display files
3525 from the location list. This field is
3526 applicable only when called from a
3527 location list window. See
3528 |location-list-file-window| for more
3529 details.
3530
3531 Returns a |Dictionary| with default values if there is no
3532 location list for the window {nr}.
3533 Returns an empty Dictionary if window {nr} does not exist.
3534
3535 Examples (See also |getqflist-examples|): >
3536 :echo getloclist(3, {'all': 0})
3537 :echo getloclist(5, {'filewinid': 0})
3538
3539
3540getmarklist([{buf}]) *getmarklist()*
3541 Without the {buf} argument returns a |List| with information
3542 about all the global marks. |mark|
3543
3544 If the optional {buf} argument is specified, returns the
3545 local marks defined in buffer {buf}. For the use of {buf},
3546 see |bufname()|.
3547
3548 Each item in the returned List is a |Dict| with the following:
3549 mark name of the mark prefixed by "'"
3550 pos a |List| with the position of the mark:
3551 [bufnum, lnum, col, off]
3552 Refer to |getpos()| for more information.
3553 file file name
3554
3555 Refer to |getpos()| for getting information about a specific
3556 mark.
3557
3558 Can also be used as a |method|: >
3559 GetBufnr()->getmarklist()
3560
3561getmatches([{win}]) *getmatches()*
3562 Returns a |List| with all matches previously defined for the
3563 current window by |matchadd()| and the |:match| commands.
3564 |getmatches()| is useful in combination with |setmatches()|,
3565 as |setmatches()| can restore a list of matches saved by
3566 |getmatches()|.
3567 If {win} is specified, use the window with this number or
3568 window ID instead of the current window.
3569 Example: >
3570 :echo getmatches()
3571< [{'group': 'MyGroup1', 'pattern': 'TODO',
3572 'priority': 10, 'id': 1}, {'group': 'MyGroup2',
3573 'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
3574 :let m = getmatches()
3575 :call clearmatches()
3576 :echo getmatches()
3577< [] >
3578 :call setmatches(m)
3579 :echo getmatches()
3580< [{'group': 'MyGroup1', 'pattern': 'TODO',
3581 'priority': 10, 'id': 1}, {'group': 'MyGroup2',
3582 'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
3583 :unlet m
3584<
3585getmousepos() *getmousepos()*
3586 Returns a |Dictionary| with the last known position of the
3587 mouse. This can be used in a mapping for a mouse click or in
3588 a filter of a popup window. The items are:
3589 screenrow screen row
3590 screencol screen column
3591 winid Window ID of the click
3592 winrow row inside "winid"
3593 wincol column inside "winid"
3594 line text line inside "winid"
3595 column text column inside "winid"
3596 All numbers are 1-based.
3597
3598 If not over a window, e.g. when in the command line, then only
3599 "screenrow" and "screencol" are valid, the others are zero.
3600
3601 When on the status line below a window or the vertical
3602 separator right of a window, the "line" and "column" values
3603 are zero.
3604
3605 When the position is after the text then "column" is the
3606 length of the text in bytes plus one.
3607
3608 If the mouse is over a popup window then that window is used.
3609
3610 When using |getchar()| the Vim variables |v:mouse_lnum|,
3611 |v:mouse_col| and |v:mouse_winid| also provide these values.
3612
3613 *getpid()*
3614getpid() Return a Number which is the process ID of the Vim process.
3615 On Unix and MS-Windows this is a unique number, until Vim
3616 exits.
3617
3618 *getpos()*
3619getpos({expr}) Get the position for String {expr}. For possible values of
3620 {expr} see |line()|. For getting the cursor position see
3621 |getcurpos()|.
3622 The result is a |List| with four numbers:
3623 [bufnum, lnum, col, off]
3624 "bufnum" is zero, unless a mark like '0 or 'A is used, then it
3625 is the buffer number of the mark.
3626 "lnum" and "col" are the position in the buffer. The first
3627 column is 1.
3628 The "off" number is zero, unless 'virtualedit' is used. Then
3629 it is the offset in screen columns from the start of the
3630 character. E.g., a position within a <Tab> or after the last
3631 character.
3632 Note that for '< and '> Visual mode matters: when it is "V"
3633 (visual line mode) the column of '< is zero and the column of
naohiro ono56200ee2022-01-01 14:59:44 +00003634 '> is a large number equal to |v:maxcol|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003635 The column number in the returned List is the byte position
3636 within the line. To get the character position in the line,
3637 use |getcharpos()|.
naohiro ono56200ee2022-01-01 14:59:44 +00003638 A very large column number equal to |v:maxcol| can be returned,
3639 in which case it means "after the end of the line".
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003640 This can be used to save and restore the position of a mark: >
3641 let save_a_mark = getpos("'a")
3642 ...
3643 call setpos("'a", save_a_mark)
3644< Also see |getcharpos()|, |getcurpos()| and |setpos()|.
3645
3646 Can also be used as a |method|: >
3647 GetMark()->getpos()
3648
3649getqflist([{what}]) *getqflist()*
3650 Returns a |List| with all the current quickfix errors. Each
3651 list item is a dictionary with these entries:
3652 bufnr number of buffer that has the file name, use
3653 bufname() to get the name
3654 module module name
3655 lnum line number in the buffer (first line is 1)
3656 end_lnum
3657 end of line number if the item is multiline
3658 col column number (first column is 1)
3659 end_col end of column number if the item has range
3660 vcol |TRUE|: "col" is visual column
3661 |FALSE|: "col" is byte index
3662 nr error number
3663 pattern search pattern used to locate the error
3664 text description of the error
3665 type type of the error, 'E', '1', etc.
3666 valid |TRUE|: recognized error message
3667
3668 When there is no error list or it's empty, an empty list is
3669 returned. Quickfix list entries with a non-existing buffer
3670 number are returned with "bufnr" set to zero (Note: some
3671 functions accept buffer number zero for the alternate buffer,
3672 you may need to explicitly check for zero).
3673
3674 Useful application: Find pattern matches in multiple files and
3675 do something with them: >
3676 :vimgrep /theword/jg *.c
3677 :for d in getqflist()
3678 : echo bufname(d.bufnr) ':' d.lnum '=' d.text
3679 :endfor
3680<
3681 If the optional {what} dictionary argument is supplied, then
3682 returns only the items listed in {what} as a dictionary. The
3683 following string items are supported in {what}:
3684 changedtick get the total number of changes made
3685 to the list |quickfix-changedtick|
3686 context get the |quickfix-context|
3687 efm errorformat to use when parsing "lines". If
3688 not present, then the 'errorformat' option
3689 value is used.
3690 id get information for the quickfix list with
3691 |quickfix-ID|; zero means the id for the
3692 current list or the list specified by "nr"
3693 idx get information for the quickfix entry at this
3694 index in the list specified by 'id' or 'nr'.
3695 If set to zero, then uses the current entry.
3696 See |quickfix-index|
3697 items quickfix list entries
3698 lines parse a list of lines using 'efm' and return
3699 the resulting entries. Only a |List| type is
3700 accepted. The current quickfix list is not
3701 modified. See |quickfix-parse|.
3702 nr get information for this quickfix list; zero
3703 means the current quickfix list and "$" means
3704 the last quickfix list
3705 qfbufnr number of the buffer displayed in the quickfix
3706 window. Returns 0 if the quickfix buffer is
3707 not present. See |quickfix-buffer|.
3708 size number of entries in the quickfix list
3709 title get the list title |quickfix-title|
3710 winid get the quickfix |window-ID|
3711 all all of the above quickfix properties
3712 Non-string items in {what} are ignored. To get the value of a
3713 particular item, set it to zero.
3714 If "nr" is not present then the current quickfix list is used.
3715 If both "nr" and a non-zero "id" are specified, then the list
3716 specified by "id" is used.
3717 To get the number of lists in the quickfix stack, set "nr" to
3718 "$" in {what}. The "nr" value in the returned dictionary
3719 contains the quickfix stack size.
3720 When "lines" is specified, all the other items except "efm"
3721 are ignored. The returned dictionary contains the entry
3722 "items" with the list of entries.
3723
3724 The returned dictionary contains the following entries:
3725 changedtick total number of changes made to the
3726 list |quickfix-changedtick|
3727 context quickfix list context. See |quickfix-context|
3728 If not present, set to "".
3729 id quickfix list ID |quickfix-ID|. If not
3730 present, set to 0.
3731 idx index of the quickfix entry in the list. If not
3732 present, set to 0.
3733 items quickfix list entries. If not present, set to
3734 an empty list.
3735 nr quickfix list number. If not present, set to 0
3736 qfbufnr number of the buffer displayed in the quickfix
3737 window. If not present, set to 0.
3738 size number of entries in the quickfix list. If not
3739 present, set to 0.
3740 title quickfix list title text. If not present, set
3741 to "".
3742 winid quickfix |window-ID|. If not present, set to 0
3743
3744 Examples (See also |getqflist-examples|): >
3745 :echo getqflist({'all': 1})
3746 :echo getqflist({'nr': 2, 'title': 1})
3747 :echo getqflist({'lines' : ["F1:10:L10"]})
3748<
3749getreg([{regname} [, 1 [, {list}]]]) *getreg()*
3750 The result is a String, which is the contents of register
3751 {regname}. Example: >
3752 :let cliptext = getreg('*')
3753< When register {regname} was not set the result is an empty
3754 string.
3755 The {regname} argument must be a string.
3756
3757 getreg('=') returns the last evaluated value of the expression
3758 register. (For use in maps.)
3759 getreg('=', 1) returns the expression itself, so that it can
3760 be restored with |setreg()|. For other registers the extra
3761 argument is ignored, thus you can always give it.
3762
3763 If {list} is present and |TRUE|, the result type is changed
3764 to |List|. Each list item is one text line. Use it if you care
3765 about zero bytes possibly present inside register: without
3766 third argument both NLs and zero bytes are represented as NLs
3767 (see |NL-used-for-Nul|).
3768 When the register was not set an empty list is returned.
3769
3770 If {regname} is "", the unnamed register '"' is used.
3771 If {regname} is not specified, |v:register| is used.
3772 In |Vim9-script| {regname} must be one character.
3773
3774 Can also be used as a |method|: >
3775 GetRegname()->getreg()
3776
3777getreginfo([{regname}]) *getreginfo()*
3778 Returns detailed information about register {regname} as a
3779 Dictionary with the following entries:
3780 regcontents List of lines contained in register
3781 {regname}, like
3782 |getreg|({regname}, 1, 1).
3783 regtype the type of register {regname}, as in
3784 |getregtype()|.
3785 isunnamed Boolean flag, v:true if this register
3786 is currently pointed to by the unnamed
3787 register.
3788 points_to for the unnamed register, gives the
3789 single letter name of the register
3790 currently pointed to (see |quotequote|).
3791 For example, after deleting a line
3792 with `dd`, this field will be "1",
3793 which is the register that got the
3794 deleted text.
3795
3796 The {regname} argument is a string. If {regname} is invalid
3797 or not set, an empty Dictionary will be returned.
3798 If {regname} is "" or "@", the unnamed register '"' is used.
3799 If {regname} is not specified, |v:register| is used.
3800 The returned Dictionary can be passed to |setreg()|.
3801 In |Vim9-script| {regname} must be one character.
3802
3803 Can also be used as a |method|: >
3804 GetRegname()->getreginfo()
3805
3806getregtype([{regname}]) *getregtype()*
3807 The result is a String, which is type of register {regname}.
3808 The value will be one of:
3809 "v" for |characterwise| text
3810 "V" for |linewise| text
3811 "<CTRL-V>{width}" for |blockwise-visual| text
3812 "" for an empty or unknown register
3813 <CTRL-V> is one character with value 0x16.
3814 The {regname} argument is a string. If {regname} is "", the
3815 unnamed register '"' is used. If {regname} is not specified,
3816 |v:register| is used.
3817 In |Vim9-script| {regname} must be one character.
3818
3819 Can also be used as a |method|: >
3820 GetRegname()->getregtype()
3821
3822gettabinfo([{tabnr}]) *gettabinfo()*
3823 If {tabnr} is not specified, then information about all the
3824 tab pages is returned as a |List|. Each List item is a
3825 |Dictionary|. Otherwise, {tabnr} specifies the tab page
3826 number and information about that one is returned. If the tab
3827 page does not exist an empty List is returned.
3828
3829 Each List item is a |Dictionary| with the following entries:
3830 tabnr tab page number.
3831 variables a reference to the dictionary with
3832 tabpage-local variables
3833 windows List of |window-ID|s in the tab page.
3834
3835 Can also be used as a |method|: >
3836 GetTabnr()->gettabinfo()
3837
3838gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()*
3839 Get the value of a tab-local variable {varname} in tab page
3840 {tabnr}. |t:var|
3841 Tabs are numbered starting with one.
3842 The {varname} argument is a string. When {varname} is empty a
3843 dictionary with all tab-local variables is returned.
3844 Note that the name without "t:" must be used.
3845 When the tab or variable doesn't exist {def} or an empty
3846 string is returned, there is no error message.
3847
3848 Can also be used as a |method|: >
3849 GetTabnr()->gettabvar(varname)
3850
3851gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()*
3852 Get the value of window-local variable {varname} in window
3853 {winnr} in tab page {tabnr}.
3854 The {varname} argument is a string. When {varname} is empty a
3855 dictionary with all window-local variables is returned.
3856 When {varname} is equal to "&" get the values of all
3857 window-local options in a |Dictionary|.
3858 Otherwise, when {varname} starts with "&" get the value of a
3859 window-local option.
3860 Note that {varname} must be the name without "w:".
3861 Tabs are numbered starting with one. For the current tabpage
3862 use |getwinvar()|.
3863 {winnr} can be the window number or the |window-ID|.
3864 When {winnr} is zero the current window is used.
3865 This also works for a global option, buffer-local option and
3866 window-local option, but it doesn't work for a global variable
3867 or buffer-local variable.
3868 When the tab, window or variable doesn't exist {def} or an
3869 empty string is returned, there is no error message.
3870 Examples: >
3871 :let list_is_on = gettabwinvar(1, 2, '&list')
3872 :echo "myvar = " . gettabwinvar(3, 1, 'myvar')
3873<
3874 To obtain all window-local variables use: >
3875 gettabwinvar({tabnr}, {winnr}, '&')
3876
3877< Can also be used as a |method|: >
3878 GetTabnr()->gettabwinvar(winnr, varname)
3879
3880gettagstack([{winnr}]) *gettagstack()*
3881 The result is a Dict, which is the tag stack of window {winnr}.
3882 {winnr} can be the window number or the |window-ID|.
3883 When {winnr} is not specified, the current window is used.
3884 When window {winnr} doesn't exist, an empty Dict is returned.
3885
3886 The returned dictionary contains the following entries:
3887 curidx Current index in the stack. When at
3888 top of the stack, set to (length + 1).
3889 Index of bottom of the stack is 1.
3890 items List of items in the stack. Each item
3891 is a dictionary containing the
3892 entries described below.
3893 length Number of entries in the stack.
3894
3895 Each item in the stack is a dictionary with the following
3896 entries:
3897 bufnr buffer number of the current jump
3898 from cursor position before the tag jump.
3899 See |getpos()| for the format of the
3900 returned list.
3901 matchnr current matching tag number. Used when
3902 multiple matching tags are found for a
3903 name.
3904 tagname name of the tag
3905
3906 See |tagstack| for more information about the tag stack.
3907
3908 Can also be used as a |method|: >
3909 GetWinnr()->gettagstack()
3910
3911
3912gettext({text}) *gettext()*
3913 Translate String {text} if possible.
3914 This is mainly for use in the distributed Vim scripts. When
3915 generating message translations the {text} is extracted by
3916 xgettext, the translator can add the translated message in the
3917 .po file and Vim will lookup the translation when gettext() is
3918 called.
3919 For {text} double quoted strings are preferred, because
3920 xgettext does not understand escaping in single quoted
3921 strings.
3922
3923
3924getwininfo([{winid}]) *getwininfo()*
3925 Returns information about windows as a |List| with Dictionaries.
3926
3927 If {winid} is given Information about the window with that ID
3928 is returned, as a |List| with one item. If the window does not
3929 exist the result is an empty list.
3930
3931 Without {winid} information about all the windows in all the
3932 tab pages is returned.
3933
3934 Each List item is a |Dictionary| with the following entries:
3935 botline last complete displayed buffer line
3936 bufnr number of buffer in the window
3937 height window height (excluding winbar)
3938 loclist 1 if showing a location list
3939 {only with the +quickfix feature}
3940 quickfix 1 if quickfix or location list window
3941 {only with the +quickfix feature}
3942 terminal 1 if a terminal window
3943 {only with the +terminal feature}
3944 tabnr tab page number
3945 topline first displayed buffer line
3946 variables a reference to the dictionary with
3947 window-local variables
3948 width window width
3949 winbar 1 if the window has a toolbar, 0
3950 otherwise
3951 wincol leftmost screen column of the window;
3952 "col" from |win_screenpos()|
3953 textoff number of columns occupied by any
3954 'foldcolumn', 'signcolumn' and line
3955 number in front of the text
3956 winid |window-ID|
3957 winnr window number
3958 winrow topmost screen line of the window;
3959 "row" from |win_screenpos()|
3960
3961 Can also be used as a |method|: >
3962 GetWinnr()->getwininfo()
3963
3964getwinpos([{timeout}]) *getwinpos()*
3965 The result is a |List| with two numbers, the result of
3966 |getwinposx()| and |getwinposy()| combined:
3967 [x-pos, y-pos]
3968 {timeout} can be used to specify how long to wait in msec for
3969 a response from the terminal. When omitted 100 msec is used.
3970 Use a longer time for a remote terminal.
3971 When using a value less than 10 and no response is received
3972 within that time, a previously reported position is returned,
3973 if available. This can be used to poll for the position and
3974 do some work in the meantime: >
3975 while 1
3976 let res = getwinpos(1)
3977 if res[0] >= 0
3978 break
3979 endif
3980 " Do some work here
3981 endwhile
3982<
3983
3984 Can also be used as a |method|: >
3985 GetTimeout()->getwinpos()
3986<
3987 *getwinposx()*
3988getwinposx() The result is a Number, which is the X coordinate in pixels of
3989 the left hand side of the GUI Vim window. Also works for an
3990 xterm (uses a timeout of 100 msec).
3991 The result will be -1 if the information is not available.
3992 The value can be used with `:winpos`.
3993
3994 *getwinposy()*
3995getwinposy() The result is a Number, which is the Y coordinate in pixels of
3996 the top of the GUI Vim window. Also works for an xterm (uses
3997 a timeout of 100 msec).
3998 The result will be -1 if the information is not available.
3999 The value can be used with `:winpos`.
4000
4001getwinvar({winnr}, {varname} [, {def}]) *getwinvar()*
4002 Like |gettabwinvar()| for the current tabpage.
4003 Examples: >
4004 :let list_is_on = getwinvar(2, '&list')
4005 :echo "myvar = " . getwinvar(1, 'myvar')
4006
4007< Can also be used as a |method|: >
4008 GetWinnr()->getwinvar(varname)
4009<
4010glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()*
4011 Expand the file wildcards in {expr}. See |wildcards| for the
4012 use of special characters.
4013
4014 Unless the optional {nosuf} argument is given and is |TRUE|,
4015 the 'suffixes' and 'wildignore' options apply: Names matching
4016 one of the patterns in 'wildignore' will be skipped and
4017 'suffixes' affect the ordering of matches.
4018 'wildignorecase' always applies.
4019
4020 When {list} is present and it is |TRUE| the result is a |List|
4021 with all matching files. The advantage of using a List is,
4022 you also get filenames containing newlines correctly.
4023 Otherwise the result is a String and when there are several
4024 matches, they are separated by <NL> characters.
4025
4026 If the expansion fails, the result is an empty String or List.
4027
4028 You can also use |readdir()| if you need to do complicated
4029 things, such as limiting the number of matches.
4030
4031 A name for a non-existing file is not included. A symbolic
4032 link is only included if it points to an existing file.
4033 However, when the {alllinks} argument is present and it is
4034 |TRUE| then all symbolic links are included.
4035
4036 For most systems backticks can be used to get files names from
4037 any external command. Example: >
4038 :let tagfiles = glob("`find . -name tags -print`")
4039 :let &tags = substitute(tagfiles, "\n", ",", "g")
4040< The result of the program inside the backticks should be one
4041 item per line. Spaces inside an item are allowed.
4042
4043 See |expand()| for expanding special Vim variables. See
4044 |system()| for getting the raw output of an external command.
4045
4046 Can also be used as a |method|: >
4047 GetExpr()->glob()
4048
4049glob2regpat({string}) *glob2regpat()*
4050 Convert a file pattern, as used by glob(), into a search
4051 pattern. The result can be used to match with a string that
4052 is a file name. E.g. >
4053 if filename =~ glob2regpat('Make*.mak')
4054< This is equivalent to: >
4055 if filename =~ '^Make.*\.mak$'
4056< When {string} is an empty string the result is "^$", match an
4057 empty string.
4058 Note that the result depends on the system. On MS-Windows
4059 a backslash usually means a path separator.
4060
4061 Can also be used as a |method|: >
4062 GetExpr()->glob2regpat()
4063< *globpath()*
4064globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
4065 Perform glob() for String {expr} on all directories in {path}
4066 and concatenate the results. Example: >
4067 :echo globpath(&rtp, "syntax/c.vim")
4068<
4069 {path} is a comma-separated list of directory names. Each
4070 directory name is prepended to {expr} and expanded like with
4071 |glob()|. A path separator is inserted when needed.
4072 To add a comma inside a directory name escape it with a
4073 backslash. Note that on MS-Windows a directory may have a
4074 trailing backslash, remove it if you put a comma after it.
4075 If the expansion fails for one of the directories, there is no
4076 error message.
4077
4078 Unless the optional {nosuf} argument is given and is |TRUE|,
4079 the 'suffixes' and 'wildignore' options apply: Names matching
4080 one of the patterns in 'wildignore' will be skipped and
4081 'suffixes' affect the ordering of matches.
4082
4083 When {list} is present and it is |TRUE| the result is a |List|
4084 with all matching files. The advantage of using a List is, you
4085 also get filenames containing newlines correctly. Otherwise
4086 the result is a String and when there are several matches,
4087 they are separated by <NL> characters. Example: >
4088 :echo globpath(&rtp, "syntax/c.vim", 0, 1)
4089<
4090 {alllinks} is used as with |glob()|.
4091
4092 The "**" item can be used to search in a directory tree.
4093 For example, to find all "README.txt" files in the directories
4094 in 'runtimepath' and below: >
4095 :echo globpath(&rtp, "**/README.txt")
4096< Upwards search and limiting the depth of "**" is not
4097 supported, thus using 'path' will not always work properly.
4098
4099 Can also be used as a |method|, the base is passed as the
4100 second argument: >
4101 GetExpr()->globpath(&rtp)
4102<
4103 *has()*
4104has({feature} [, {check}])
4105 When {check} is omitted or is zero: The result is a Number,
4106 which is 1 if the feature {feature} is supported, zero
4107 otherwise. The {feature} argument is a string, case is
4108 ignored. See |feature-list| below.
4109
4110 When {check} is present and not zero: The result is a Number,
4111 which is 1 if the feature {feature} could ever be supported,
4112 zero otherwise. This is useful to check for a typo in
4113 {feature} and to detect dead code. Keep in mind that an older
4114 Vim version will not know about a feature added later and
4115 features that have been abandoned will not be known by the
4116 current Vim version.
4117
4118 Also see |exists()| and |exists_compiled()|.
4119
4120 Note that to skip code that has a syntax error when the
4121 feature is not available, Vim may skip the rest of the line
4122 and miss a following `endif`. Therefore put the `endif` on a
4123 separate line: >
4124 if has('feature')
4125 let x = this->breaks->without->the->feature
4126 endif
4127< If the `endif` would be moved to the second line as "| endif" it
4128 would not be found.
4129
4130
4131has_key({dict}, {key}) *has_key()*
4132 The result is a Number, which is TRUE if |Dictionary| {dict}
4133 has an entry with key {key}. FALSE otherwise. The {key}
4134 argument is a string.
4135
4136 Can also be used as a |method|: >
4137 mydict->has_key(key)
4138
4139haslocaldir([{winnr} [, {tabnr}]]) *haslocaldir()*
4140 The result is a Number:
4141 1 when the window has set a local directory via |:lcd|
4142 2 when the tab-page has set a local directory via |:tcd|
4143 0 otherwise.
4144
4145 Without arguments use the current window.
4146 With {winnr} use this window in the current tab page.
4147 With {winnr} and {tabnr} use the window in the specified tab
4148 page.
4149 {winnr} can be the window number or the |window-ID|.
4150 If {winnr} is -1 it is ignored and only the tabpage is used.
4151 Return 0 if the arguments are invalid.
4152 Examples: >
4153 if haslocaldir() == 1
4154 " window local directory case
4155 elseif haslocaldir() == 2
4156 " tab-local directory case
4157 else
4158 " global directory case
4159 endif
4160
4161 " current window
4162 :echo haslocaldir()
4163 :echo haslocaldir(0)
4164 :echo haslocaldir(0, 0)
4165 " window n in current tab page
4166 :echo haslocaldir(n)
4167 :echo haslocaldir(n, 0)
4168 " window n in tab page m
4169 :echo haslocaldir(n, m)
4170 " tab page m
4171 :echo haslocaldir(-1, m)
4172<
4173 Can also be used as a |method|: >
4174 GetWinnr()->haslocaldir()
4175
4176hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()*
4177 The result is a Number, which is TRUE if there is a mapping
4178 that contains {what} in somewhere in the rhs (what it is
4179 mapped to) and this mapping exists in one of the modes
4180 indicated by {mode}.
4181 The arguments {what} and {mode} are strings.
4182 When {abbr} is there and it is |TRUE| use abbreviations
4183 instead of mappings. Don't forget to specify Insert and/or
4184 Command-line mode.
4185 Both the global mappings and the mappings local to the current
4186 buffer are checked for a match.
4187 If no matching mapping is found FALSE is returned.
4188 The following characters are recognized in {mode}:
4189 n Normal mode
4190 v Visual and Select mode
4191 x Visual mode
4192 s Select mode
4193 o Operator-pending mode
4194 i Insert mode
4195 l Language-Argument ("r", "f", "t", etc.)
4196 c Command-line mode
4197 When {mode} is omitted, "nvo" is used.
4198
4199 This function is useful to check if a mapping already exists
4200 to a function in a Vim script. Example: >
4201 :if !hasmapto('\ABCdoit')
4202 : map <Leader>d \ABCdoit
4203 :endif
4204< This installs the mapping to "\ABCdoit" only if there isn't
4205 already a mapping to "\ABCdoit".
4206
4207 Can also be used as a |method|: >
4208 GetRHS()->hasmapto()
4209
4210histadd({history}, {item}) *histadd()*
4211 Add the String {item} to the history {history} which can be
4212 one of: *hist-names*
4213 "cmd" or ":" command line history
4214 "search" or "/" search pattern history
4215 "expr" or "=" typed expression history
4216 "input" or "@" input line history
4217 "debug" or ">" debug command history
4218 empty the current or last used history
4219 The {history} string does not need to be the whole name, one
4220 character is sufficient.
4221 If {item} does already exist in the history, it will be
4222 shifted to become the newest entry.
4223 The result is a Number: TRUE if the operation was successful,
4224 otherwise FALSE is returned.
4225
4226 Example: >
4227 :call histadd("input", strftime("%Y %b %d"))
4228 :let date=input("Enter date: ")
4229< This function is not available in the |sandbox|.
4230
4231 Can also be used as a |method|, the base is passed as the
4232 second argument: >
4233 GetHistory()->histadd('search')
4234
4235histdel({history} [, {item}]) *histdel()*
4236 Clear {history}, i.e. delete all its entries. See |hist-names|
4237 for the possible values of {history}.
4238
4239 If the parameter {item} evaluates to a String, it is used as a
4240 regular expression. All entries matching that expression will
4241 be removed from the history (if there are any).
4242 Upper/lowercase must match, unless "\c" is used |/\c|.
4243 If {item} evaluates to a Number, it will be interpreted as
4244 an index, see |:history-indexing|. The respective entry will
4245 be removed if it exists.
4246
4247 The result is TRUE for a successful operation, otherwise FALSE
4248 is returned.
4249
4250 Examples:
4251 Clear expression register history: >
4252 :call histdel("expr")
4253<
4254 Remove all entries starting with "*" from the search history: >
4255 :call histdel("/", '^\*')
4256<
4257 The following three are equivalent: >
4258 :call histdel("search", histnr("search"))
4259 :call histdel("search", -1)
4260 :call histdel("search", '^'.histget("search", -1).'$')
4261<
4262 To delete the last search pattern and use the last-but-one for
4263 the "n" command and 'hlsearch': >
4264 :call histdel("search", -1)
4265 :let @/ = histget("search", -1)
4266<
4267 Can also be used as a |method|: >
4268 GetHistory()->histdel()
4269
4270histget({history} [, {index}]) *histget()*
4271 The result is a String, the entry with Number {index} from
4272 {history}. See |hist-names| for the possible values of
4273 {history}, and |:history-indexing| for {index}. If there is
4274 no such entry, an empty String is returned. When {index} is
4275 omitted, the most recent item from the history is used.
4276
4277 Examples:
4278 Redo the second last search from history. >
4279 :execute '/' . histget("search", -2)
4280
4281< Define an Ex command ":H {num}" that supports re-execution of
4282 the {num}th entry from the output of |:history|. >
4283 :command -nargs=1 H execute histget("cmd", 0+<args>)
4284<
4285 Can also be used as a |method|: >
4286 GetHistory()->histget()
4287
4288histnr({history}) *histnr()*
4289 The result is the Number of the current entry in {history}.
4290 See |hist-names| for the possible values of {history}.
4291 If an error occurred, -1 is returned.
4292
4293 Example: >
4294 :let inp_index = histnr("expr")
4295
4296< Can also be used as a |method|: >
4297 GetHistory()->histnr()
4298<
4299hlexists({name}) *hlexists()*
4300 The result is a Number, which is TRUE if a highlight group
4301 called {name} exists. This is when the group has been
4302 defined in some way. Not necessarily when highlighting has
4303 been defined for it, it may also have been used for a syntax
4304 item.
4305 *highlight_exists()*
4306 Obsolete name: highlight_exists().
4307
4308 Can also be used as a |method|: >
4309 GetName()->hlexists()
4310<
4311hlget([{name} [, {resolve}]]) *hlget()*
4312 Returns a List of all the highlight group attributes. If the
4313 optional {name} is specified, then returns a List with only
4314 the attributes of the specified highlight group. Returns an
4315 empty List if the highlight group {name} is not present.
4316
4317 If the optional {resolve} argument is set to v:true and the
4318 highlight group {name} is linked to another group, then the
4319 link is resolved recursively and the attributes of the
4320 resolved highlight group are returned.
4321
4322 Each entry in the returned List is a Dictionary with the
4323 following items:
4324 cleared boolean flag, set to v:true if the highlight
4325 group attributes are cleared or not yet
4326 specified. See |highlight-clear|.
4327 cterm cterm attributes. See |highlight-cterm|.
4328 ctermbg cterm background color.
4329 See |highlight-ctermbg|.
4330 ctermfg cterm foreground color.
4331 See |highlight-ctermfg|.
4332 ctermul cterm underline color. See |highlight-ctermul|.
4333 default boolean flag, set to v:true if the highlight
4334 group link is a default link. See
4335 |highlight-default|.
4336 font highlight group font. See |highlight-font|.
4337 gui gui attributes. See |highlight-gui|.
4338 guibg gui background color. See |highlight-guibg|.
4339 guifg gui foreground color. See |highlight-guifg|.
4340 guisp gui special color. See |highlight-guisp|.
4341 id highlight group ID.
4342 linksto linked highlight group name.
4343 See |:highlight-link|.
4344 name highlight group name. See |group-name|.
4345 start start terminal keycode. See |highlight-start|.
4346 stop stop terminal keycode. See |highlight-stop|.
4347 term term attributes. See |highlight-term|.
4348
4349 The 'term', 'cterm' and 'gui' items in the above Dictionary
4350 have a dictionary value with the following optional boolean
4351 items: 'bold', 'standout', 'underline', 'undercurl', 'italic',
4352 'reverse', 'inverse' and 'strikethrough'.
4353
4354 Example(s): >
4355 :echo hlget()
4356 :echo hlget('ModeMsg')
4357 :echo hlget('Number', v:true)
4358<
4359 Can also be used as a |method|: >
4360 GetName()->hlget()
4361<
4362hlset({list}) *hlset()*
4363 Creates or modifies the attributes of a List of highlight
4364 groups. Each item in {list} is a dictionary containing the
4365 attributes of a highlight group. See |hlget()| for the list of
4366 supported items in this dictionary.
4367
4368 In addition to the items described in |hlget()|, the following
4369 additional items are supported in the dictionary:
4370
4371 force boolean flag to force the creation of
4372 a link for an existing highlight group
4373 with attributes.
4374
4375 The highlight group is identified using the 'name' item and
4376 the 'id' item (if supplied) is ignored. If a highlight group
4377 with a specified name doesn't exist, then it is created.
4378 Otherwise the attributes of an existing highlight group are
4379 modified.
4380
4381 If an empty dictionary value is used for the 'term' or 'cterm'
4382 or 'gui' entries, then the corresponding attributes are
4383 cleared. If the 'cleared' item is set to v:true, then all the
4384 attributes of the highlight group are cleared.
4385
4386 The 'linksto' item can be used to link a highlight group to
4387 another highlight group. See |:highlight-link|.
4388
4389 Returns zero for success, -1 for failure.
4390
4391 Example(s): >
4392 " add bold attribute to the Visual highlight group
4393 :call hlset([#{name: 'Visual',
4394 \ term: #{reverse: 1 , bold: 1}}])
4395 :call hlset([#{name: 'Type', guifg: 'DarkGreen'}])
4396 :let l = hlget()
4397 :call hlset(l)
4398 " clear the Search highlight group
4399 :call hlset([#{name: 'Search', cleared: v:true}])
4400 " clear the 'term' attributes for a highlight group
4401 :call hlset([#{name: 'Title', term: {}}])
4402 " create the MyHlg group linking it to DiffAdd
4403 :call hlset([#{name: 'MyHlg', linksto: 'DiffAdd'}])
4404 " remove the MyHlg group link
4405 :call hlset([#{name: 'MyHlg', linksto: 'NONE'}])
4406 " clear the attributes and a link
4407 :call hlset([#{name: 'MyHlg', cleared: v:true,
4408 \ linksto: 'NONE'}])
4409<
4410 Can also be used as a |method|: >
4411 GetAttrList()->hlset()
4412<
4413 *hlID()*
4414hlID({name}) The result is a Number, which is the ID of the highlight group
4415 with name {name}. When the highlight group doesn't exist,
4416 zero is returned.
4417 This can be used to retrieve information about the highlight
4418 group. For example, to get the background color of the
4419 "Comment" group: >
4420 :echo synIDattr(synIDtrans(hlID("Comment")), "bg")
4421< *highlightID()*
4422 Obsolete name: highlightID().
4423
4424 Can also be used as a |method|: >
4425 GetName()->hlID()
4426
4427hostname() *hostname()*
4428 The result is a String, which is the name of the machine on
4429 which Vim is currently running. Machine names greater than
4430 256 characters long are truncated.
4431
4432iconv({string}, {from}, {to}) *iconv()*
4433 The result is a String, which is the text {string} converted
4434 from encoding {from} to encoding {to}.
4435 When the conversion completely fails an empty string is
4436 returned. When some characters could not be converted they
4437 are replaced with "?".
4438 The encoding names are whatever the iconv() library function
4439 can accept, see ":!man 3 iconv".
4440 Most conversions require Vim to be compiled with the |+iconv|
4441 feature. Otherwise only UTF-8 to latin1 conversion and back
4442 can be done.
4443 This can be used to display messages with special characters,
4444 no matter what 'encoding' is set to. Write the message in
4445 UTF-8 and use: >
4446 echo iconv(utf8_str, "utf-8", &enc)
4447< Note that Vim uses UTF-8 for all Unicode encodings, conversion
4448 from/to UCS-2 is automatically changed to use UTF-8. You
4449 cannot use UCS-2 in a string anyway, because of the NUL bytes.
4450
4451 Can also be used as a |method|: >
4452 GetText()->iconv('latin1', 'utf-8')
4453<
4454 *indent()*
4455indent({lnum}) The result is a Number, which is indent of line {lnum} in the
4456 current buffer. The indent is counted in spaces, the value
4457 of 'tabstop' is relevant. {lnum} is used just like in
4458 |getline()|.
4459 When {lnum} is invalid -1 is returned. In |Vim9| script an
4460 error is given.
4461
4462 Can also be used as a |method|: >
4463 GetLnum()->indent()
4464
4465index({object}, {expr} [, {start} [, {ic}]]) *index()*
4466 If {object} is a |List| return the lowest index where the item
4467 has a value equal to {expr}. There is no automatic
4468 conversion, so the String "4" is different from the Number 4.
4469 And the number 4 is different from the Float 4.0. The value
4470 of 'ignorecase' is not used here, case always matters.
4471
4472 If {object} is |Blob| return the lowest index where the byte
4473 value is equal to {expr}.
4474
4475 If {start} is given then start looking at the item with index
4476 {start} (may be negative for an item relative to the end).
4477 When {ic} is given and it is |TRUE|, ignore case. Otherwise
4478 case must match.
4479 -1 is returned when {expr} is not found in {object}.
4480 Example: >
4481 :let idx = index(words, "the")
4482 :if index(numbers, 123) >= 0
4483
4484< Can also be used as a |method|: >
4485 GetObject()->index(what)
4486
4487input({prompt} [, {text} [, {completion}]]) *input()*
4488 The result is a String, which is whatever the user typed on
4489 the command-line. The {prompt} argument is either a prompt
4490 string, or a blank string (for no prompt). A '\n' can be used
4491 in the prompt to start a new line.
4492 The highlighting set with |:echohl| is used for the prompt.
4493 The input is entered just like a command-line, with the same
4494 editing commands and mappings. There is a separate history
4495 for lines typed for input().
4496 Example: >
4497 :if input("Coffee or beer? ") == "beer"
4498 : echo "Cheers!"
4499 :endif
4500<
4501 If the optional {text} argument is present and not empty, this
4502 is used for the default reply, as if the user typed this.
4503 Example: >
4504 :let color = input("Color? ", "white")
4505
4506< The optional {completion} argument specifies the type of
4507 completion supported for the input. Without it completion is
4508 not performed. The supported completion types are the same as
4509 that can be supplied to a user-defined command using the
4510 "-complete=" argument. Refer to |:command-completion| for
4511 more information. Example: >
4512 let fname = input("File: ", "", "file")
4513<
4514 NOTE: This function must not be used in a startup file, for
4515 the versions that only run in GUI mode (e.g., the Win32 GUI).
4516 Note: When input() is called from within a mapping it will
4517 consume remaining characters from that mapping, because a
4518 mapping is handled like the characters were typed.
4519 Use |inputsave()| before input() and |inputrestore()|
4520 after input() to avoid that. Another solution is to avoid
4521 that further characters follow in the mapping, e.g., by using
4522 |:execute| or |:normal|.
4523
4524 Example with a mapping: >
4525 :nmap \x :call GetFoo()<CR>:exe "/" . Foo<CR>
4526 :function GetFoo()
4527 : call inputsave()
4528 : let g:Foo = input("enter search pattern: ")
4529 : call inputrestore()
4530 :endfunction
4531
4532< Can also be used as a |method|: >
4533 GetPrompt()->input()
4534
4535inputdialog({prompt} [, {text} [, {cancelreturn}]]) *inputdialog()*
4536 Like |input()|, but when the GUI is running and text dialogs
4537 are supported, a dialog window pops up to input the text.
4538 Example: >
4539 :let n = inputdialog("value for shiftwidth", shiftwidth())
4540 :if n != ""
4541 : let &sw = n
4542 :endif
4543< When the dialog is cancelled {cancelreturn} is returned. When
4544 omitted an empty string is returned.
4545 Hitting <Enter> works like pressing the OK button. Hitting
4546 <Esc> works like pressing the Cancel button.
4547 NOTE: Command-line completion is not supported.
4548
4549 Can also be used as a |method|: >
4550 GetPrompt()->inputdialog()
4551
4552inputlist({textlist}) *inputlist()*
4553 {textlist} must be a |List| of strings. This |List| is
4554 displayed, one string per line. The user will be prompted to
4555 enter a number, which is returned.
4556 The user can also select an item by clicking on it with the
4557 mouse, if the mouse is enabled in the command line ('mouse' is
4558 "a" or includes "c"). For the first string 0 is returned.
4559 When clicking above the first item a negative number is
4560 returned. When clicking on the prompt one more than the
4561 length of {textlist} is returned.
4562 Make sure {textlist} has less than 'lines' entries, otherwise
4563 it won't work. It's a good idea to put the entry number at
4564 the start of the string. And put a prompt in the first item.
4565 Example: >
4566 let color = inputlist(['Select color:', '1. red',
4567 \ '2. green', '3. blue'])
4568
4569< Can also be used as a |method|: >
4570 GetChoices()->inputlist()
4571
4572inputrestore() *inputrestore()*
4573 Restore typeahead that was saved with a previous |inputsave()|.
4574 Should be called the same number of times inputsave() is
4575 called. Calling it more often is harmless though.
4576 Returns TRUE when there is nothing to restore, FALSE otherwise.
4577
4578inputsave() *inputsave()*
4579 Preserve typeahead (also from mappings) and clear it, so that
4580 a following prompt gets input from the user. Should be
4581 followed by a matching inputrestore() after the prompt. Can
4582 be used several times, in which case there must be just as
4583 many inputrestore() calls.
4584 Returns TRUE when out of memory, FALSE otherwise.
4585
4586inputsecret({prompt} [, {text}]) *inputsecret()*
4587 This function acts much like the |input()| function with but
4588 two exceptions:
4589 a) the user's response will be displayed as a sequence of
4590 asterisks ("*") thereby keeping the entry secret, and
4591 b) the user's response will not be recorded on the input
4592 |history| stack.
4593 The result is a String, which is whatever the user actually
4594 typed on the command-line in response to the issued prompt.
4595 NOTE: Command-line completion is not supported.
4596
4597 Can also be used as a |method|: >
4598 GetPrompt()->inputsecret()
4599
4600insert({object}, {item} [, {idx}]) *insert()*
4601 When {object} is a |List| or a |Blob| insert {item} at the start
4602 of it.
4603
4604 If {idx} is specified insert {item} before the item with index
4605 {idx}. If {idx} is zero it goes before the first item, just
4606 like omitting {idx}. A negative {idx} is also possible, see
4607 |list-index|. -1 inserts just before the last item.
4608
4609 Returns the resulting |List| or |Blob|. Examples: >
4610 :let mylist = insert([2, 3, 5], 1)
4611 :call insert(mylist, 4, -1)
4612 :call insert(mylist, 6, len(mylist))
4613< The last example can be done simpler with |add()|.
4614 Note that when {item} is a |List| it is inserted as a single
4615 item. Use |extend()| to concatenate |Lists|.
4616
4617 Can also be used as a |method|: >
4618 mylist->insert(item)
4619
4620interrupt() *interrupt()*
4621 Interrupt script execution. It works more or less like the
4622 user typing CTRL-C, most commands won't execute and control
4623 returns to the user. This is useful to abort execution
4624 from lower down, e.g. in an autocommand. Example: >
4625 :function s:check_typoname(file)
4626 : if fnamemodify(a:file, ':t') == '['
4627 : echomsg 'Maybe typo'
4628 : call interrupt()
4629 : endif
4630 :endfunction
4631 :au BufWritePre * call s:check_typoname(expand('<amatch>'))
4632
4633invert({expr}) *invert()*
4634 Bitwise invert. The argument is converted to a number. A
4635 List, Dict or Float argument causes an error. Example: >
4636 :let bits = invert(bits)
4637< Can also be used as a |method|: >
4638 :let bits = bits->invert()
4639
4640isdirectory({directory}) *isdirectory()*
4641 The result is a Number, which is |TRUE| when a directory
4642 with the name {directory} exists. If {directory} doesn't
4643 exist, or isn't a directory, the result is |FALSE|. {directory}
4644 is any expression, which is used as a String.
4645
4646 Can also be used as a |method|: >
4647 GetName()->isdirectory()
4648
4649isinf({expr}) *isinf()*
4650 Return 1 if {expr} is a positive infinity, or -1 a negative
4651 infinity, otherwise 0. >
4652 :echo isinf(1.0 / 0.0)
4653< 1 >
4654 :echo isinf(-1.0 / 0.0)
4655< -1
4656
4657 Can also be used as a |method|: >
4658 Compute()->isinf()
4659<
4660 {only available when compiled with the |+float| feature}
4661
4662islocked({expr}) *islocked()* *E786*
4663 The result is a Number, which is |TRUE| when {expr} is the
4664 name of a locked variable.
4665 The string argument {expr} must be the name of a variable,
4666 |List| item or |Dictionary| entry, not the variable itself!
4667 Example: >
4668 :let alist = [0, ['a', 'b'], 2, 3]
4669 :lockvar 1 alist
4670 :echo islocked('alist') " 1
4671 :echo islocked('alist[1]') " 0
4672
4673< When {expr} is a variable that does not exist you get an error
4674 message. Use |exists()| to check for existence.
4675 In Vim9 script it does not work for local variables.
4676
4677 Can also be used as a |method|: >
4678 GetName()->islocked()
4679
4680isnan({expr}) *isnan()*
4681 Return |TRUE| if {expr} is a float with value NaN. >
4682 echo isnan(0.0 / 0.0)
4683< 1
4684
4685 Can also be used as a |method|: >
4686 Compute()->isnan()
4687<
4688 {only available when compiled with the |+float| feature}
4689
4690items({dict}) *items()*
4691 Return a |List| with all the key-value pairs of {dict}. Each
4692 |List| item is a list with two items: the key of a {dict}
4693 entry and the value of this entry. The |List| is in arbitrary
4694 order. Also see |keys()| and |values()|.
4695 Example: >
4696 for [key, value] in items(mydict)
4697 echo key . ': ' . value
4698 endfor
4699
4700< Can also be used as a |method|: >
4701 mydict->items()
4702
4703job_ functions are documented here: |job-functions-details|
4704
4705
4706join({list} [, {sep}]) *join()*
4707 Join the items in {list} together into one String.
4708 When {sep} is specified it is put in between the items. If
4709 {sep} is omitted a single space is used.
4710 Note that {sep} is not added at the end. You might want to
4711 add it there too: >
4712 let lines = join(mylist, "\n") . "\n"
4713< String items are used as-is. |Lists| and |Dictionaries| are
4714 converted into a string like with |string()|.
4715 The opposite function is |split()|.
4716
4717 Can also be used as a |method|: >
4718 mylist->join()
4719
4720js_decode({string}) *js_decode()*
4721 This is similar to |json_decode()| with these differences:
4722 - Object key names do not have to be in quotes.
4723 - Strings can be in single quotes.
4724 - Empty items in an array (between two commas) are allowed and
4725 result in v:none items.
4726
4727 Can also be used as a |method|: >
4728 ReadObject()->js_decode()
4729
4730js_encode({expr}) *js_encode()*
4731 This is similar to |json_encode()| with these differences:
4732 - Object key names are not in quotes.
4733 - v:none items in an array result in an empty item between
4734 commas.
4735 For example, the Vim object:
4736 [1,v:none,{"one":1},v:none] ~
4737 Will be encoded as:
4738 [1,,{one:1},,] ~
4739 While json_encode() would produce:
4740 [1,null,{"one":1},null] ~
4741 This encoding is valid for JavaScript. It is more efficient
4742 than JSON, especially when using an array with optional items.
4743
4744 Can also be used as a |method|: >
4745 GetObject()->js_encode()
4746
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00004747json_decode({string}) *json_decode()* *E491*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004748 This parses a JSON formatted string and returns the equivalent
4749 in Vim values. See |json_encode()| for the relation between
4750 JSON and Vim values.
4751 The decoding is permissive:
4752 - A trailing comma in an array and object is ignored, e.g.
4753 "[1, 2, ]" is the same as "[1, 2]".
4754 - Integer keys are accepted in objects, e.g. {1:2} is the
4755 same as {"1":2}.
4756 - More floating point numbers are recognized, e.g. "1." for
4757 "1.0", or "001.2" for "1.2". Special floating point values
4758 "Infinity", "-Infinity" and "NaN" (capitalization ignored)
4759 are accepted.
4760 - Leading zeroes in integer numbers are ignored, e.g. "012"
4761 for "12" or "-012" for "-12".
4762 - Capitalization is ignored in literal names null, true or
4763 false, e.g. "NULL" for "null", "True" for "true".
4764 - Control characters U+0000 through U+001F which are not
4765 escaped in strings are accepted, e.g. " " (tab
4766 character in string) for "\t".
4767 - An empty JSON expression or made of only spaces is accepted
4768 and results in v:none.
4769 - Backslash in an invalid 2-character sequence escape is
4770 ignored, e.g. "\a" is decoded as "a".
4771 - A correct surrogate pair in JSON strings should normally be
4772 a 12 character sequence such as "\uD834\uDD1E", but
4773 json_decode() silently accepts truncated surrogate pairs
4774 such as "\uD834" or "\uD834\u"
4775 *E938*
4776 A duplicate key in an object, valid in rfc7159, is not
4777 accepted by json_decode() as the result must be a valid Vim
4778 type, e.g. this fails: {"a":"b", "a":"c"}
4779
4780 Can also be used as a |method|: >
4781 ReadObject()->json_decode()
4782
4783json_encode({expr}) *json_encode()*
4784 Encode {expr} as JSON and return this as a string.
4785 The encoding is specified in:
4786 https://tools.ietf.org/html/rfc7159.html
4787 Vim values are converted as follows:
4788 |Number| decimal number
4789 |Float| floating point number
4790 Float nan "NaN"
4791 Float inf "Infinity"
4792 Float -inf "-Infinity"
4793 |String| in double quotes (possibly null)
4794 |Funcref| not possible, error
4795 |List| as an array (possibly null); when
4796 used recursively: []
4797 |Dict| as an object (possibly null); when
4798 used recursively: {}
4799 |Blob| as an array of the individual bytes
4800 v:false "false"
4801 v:true "true"
4802 v:none "null"
4803 v:null "null"
4804 Note that NaN and Infinity are passed on as values. This is
4805 missing in the JSON standard, but several implementations do
4806 allow it. If not then you will get an error.
4807
4808 Can also be used as a |method|: >
4809 GetObject()->json_encode()
4810
4811keys({dict}) *keys()*
4812 Return a |List| with all the keys of {dict}. The |List| is in
4813 arbitrary order. Also see |items()| and |values()|.
4814
4815 Can also be used as a |method|: >
4816 mydict->keys()
4817
4818< *len()* *E701*
4819len({expr}) The result is a Number, which is the length of the argument.
4820 When {expr} is a String or a Number the length in bytes is
4821 used, as with |strlen()|.
4822 When {expr} is a |List| the number of items in the |List| is
4823 returned.
4824 When {expr} is a |Blob| the number of bytes is returned.
4825 When {expr} is a |Dictionary| the number of entries in the
4826 |Dictionary| is returned.
4827 Otherwise an error is given.
4828
4829 Can also be used as a |method|: >
4830 mylist->len()
4831
4832< *libcall()* *E364* *E368*
4833libcall({libname}, {funcname}, {argument})
4834 Call function {funcname} in the run-time library {libname}
4835 with single argument {argument}.
4836 This is useful to call functions in a library that you
4837 especially made to be used with Vim. Since only one argument
4838 is possible, calling standard library functions is rather
4839 limited.
4840 The result is the String returned by the function. If the
4841 function returns NULL, this will appear as an empty string ""
4842 to Vim.
4843 If the function returns a number, use libcallnr()!
4844 If {argument} is a number, it is passed to the function as an
4845 int; if {argument} is a string, it is passed as a
4846 null-terminated string.
4847 This function will fail in |restricted-mode|.
4848
4849 libcall() allows you to write your own 'plug-in' extensions to
4850 Vim without having to recompile the program. It is NOT a
4851 means to call system functions! If you try to do so Vim will
4852 very probably crash.
4853
4854 For Win32, the functions you write must be placed in a DLL
4855 and use the normal C calling convention (NOT Pascal which is
4856 used in Windows System DLLs). The function must take exactly
4857 one parameter, either a character pointer or a long integer,
4858 and must return a character pointer or NULL. The character
4859 pointer returned must point to memory that will remain valid
4860 after the function has returned (e.g. in static data in the
4861 DLL). If it points to allocated memory, that memory will
4862 leak away. Using a static buffer in the function should work,
4863 it's then freed when the DLL is unloaded.
4864
4865 WARNING: If the function returns a non-valid pointer, Vim may
4866 crash! This also happens if the function returns a number,
4867 because Vim thinks it's a pointer.
4868 For Win32 systems, {libname} should be the filename of the DLL
4869 without the ".DLL" suffix. A full path is only required if
4870 the DLL is not in the usual places.
4871 For Unix: When compiling your own plugins, remember that the
4872 object code must be compiled as position-independent ('PIC').
4873 {only in Win32 and some Unix versions, when the |+libcall|
4874 feature is present}
4875 Examples: >
4876 :echo libcall("libc.so", "getenv", "HOME")
4877
4878< Can also be used as a |method|, the base is passed as the
4879 third argument: >
4880 GetValue()->libcall("libc.so", "getenv")
4881<
4882 *libcallnr()*
4883libcallnr({libname}, {funcname}, {argument})
4884 Just like |libcall()|, but used for a function that returns an
4885 int instead of a string.
4886 {only in Win32 on some Unix versions, when the |+libcall|
4887 feature is present}
4888 Examples: >
4889 :echo libcallnr("/usr/lib/libc.so", "getpid", "")
4890 :call libcallnr("libc.so", "printf", "Hello World!\n")
4891 :call libcallnr("libc.so", "sleep", 10)
4892<
4893 Can also be used as a |method|, the base is passed as the
4894 third argument: >
4895 GetValue()->libcallnr("libc.so", "printf")
4896<
4897
4898line({expr} [, {winid}]) *line()*
4899 The result is a Number, which is the line number of the file
4900 position given with {expr}. The {expr} argument is a string.
4901 The accepted positions are:
4902 . the cursor position
4903 $ the last line in the current buffer
4904 'x position of mark x (if the mark is not set, 0 is
4905 returned)
4906 w0 first line visible in current window (one if the
4907 display isn't updated, e.g. in silent Ex mode)
4908 w$ last line visible in current window (this is one
4909 less than "w0" if no lines are visible)
4910 v In Visual mode: the start of the Visual area (the
4911 cursor is the end). When not in Visual mode
4912 returns the cursor position. Differs from |'<| in
4913 that it's updated right away.
4914 Note that a mark in another file can be used. The line number
4915 then applies to another buffer.
4916 To get the column number use |col()|. To get both use
4917 |getpos()|.
4918 With the optional {winid} argument the values are obtained for
4919 that window instead of the current window.
4920 Examples: >
4921 line(".") line number of the cursor
4922 line(".", winid) idem, in window "winid"
4923 line("'t") line number of mark t
4924 line("'" . marker) line number of mark marker
4925<
4926 To jump to the last known position when opening a file see
4927 |last-position-jump|.
4928
4929 Can also be used as a |method|: >
4930 GetValue()->line()
4931
4932line2byte({lnum}) *line2byte()*
4933 Return the byte count from the start of the buffer for line
4934 {lnum}. This includes the end-of-line character, depending on
4935 the 'fileformat' option for the current buffer. The first
4936 line returns 1. 'encoding' matters, 'fileencoding' is ignored.
4937 This can also be used to get the byte count for the line just
4938 below the last line: >
4939 line2byte(line("$") + 1)
4940< This is the buffer size plus one. If 'fileencoding' is empty
4941 it is the file size plus one. {lnum} is used like with
4942 |getline()|. When {lnum} is invalid, or the |+byte_offset|
4943 feature has been disabled at compile time, -1 is returned.
4944 Also see |byte2line()|, |go| and |:goto|.
4945
4946 Can also be used as a |method|: >
4947 GetLnum()->line2byte()
4948
4949lispindent({lnum}) *lispindent()*
4950 Get the amount of indent for line {lnum} according the lisp
4951 indenting rules, as with 'lisp'.
4952 The indent is counted in spaces, the value of 'tabstop' is
4953 relevant. {lnum} is used just like in |getline()|.
4954 When {lnum} is invalid or Vim was not compiled the
4955 |+lispindent| feature, -1 is returned. In |Vim9| script an
4956 error is given.
4957
4958 Can also be used as a |method|: >
4959 GetLnum()->lispindent()
4960
4961list2blob({list}) *list2blob()*
4962 Return a Blob concatenating all the number values in {list}.
4963 Examples: >
4964 list2blob([1, 2, 3, 4]) returns 0z01020304
4965 list2blob([]) returns 0z
4966< Returns an empty Blob on error. If one of the numbers is
4967 negative or more than 255 error *E1239* is given.
4968
4969 |blob2list()| does the opposite.
4970
4971 Can also be used as a |method|: >
4972 GetList()->list2blob()
4973
4974list2str({list} [, {utf8}]) *list2str()*
4975 Convert each number in {list} to a character string can
4976 concatenate them all. Examples: >
4977 list2str([32]) returns " "
4978 list2str([65, 66, 67]) returns "ABC"
4979< The same can be done (slowly) with: >
4980 join(map(list, {nr, val -> nr2char(val)}), '')
4981< |str2list()| does the opposite.
4982
4983 When {utf8} is omitted or zero, the current 'encoding' is used.
4984 When {utf8} is TRUE, always return UTF-8 characters.
4985 With UTF-8 composing characters work as expected: >
4986 list2str([97, 769]) returns "á"
4987<
4988 Can also be used as a |method|: >
4989 GetList()->list2str()
4990
4991listener_add({callback} [, {buf}]) *listener_add()*
4992 Add a callback function that will be invoked when changes have
4993 been made to buffer {buf}.
4994 {buf} refers to a buffer name or number. For the accepted
4995 values, see |bufname()|. When {buf} is omitted the current
4996 buffer is used.
4997 Returns a unique ID that can be passed to |listener_remove()|.
4998
4999 The {callback} is invoked with five arguments:
5000 a:bufnr the buffer that was changed
5001 a:start first changed line number
5002 a:end first line number below the change
5003 a:added number of lines added, negative if lines were
5004 deleted
5005 a:changes a List of items with details about the changes
5006
5007 Example: >
5008 func Listener(bufnr, start, end, added, changes)
5009 echo 'lines ' .. a:start .. ' until ' .. a:end .. ' changed'
5010 endfunc
5011 call listener_add('Listener', bufnr)
5012
5013< The List cannot be changed. Each item in a:changes is a
5014 dictionary with these entries:
5015 lnum the first line number of the change
5016 end the first line below the change
5017 added number of lines added; negative if lines were
5018 deleted
5019 col first column in "lnum" that was affected by
5020 the change; one if unknown or the whole line
5021 was affected; this is a byte index, first
5022 character has a value of one.
5023 When lines are inserted the values are:
5024 lnum line above which the new line is added
5025 end equal to "lnum"
5026 added number of lines inserted
5027 col 1
5028 When lines are deleted the values are:
5029 lnum the first deleted line
5030 end the line below the first deleted line, before
5031 the deletion was done
5032 added negative, number of lines deleted
5033 col 1
5034 When lines are changed:
5035 lnum the first changed line
5036 end the line below the last changed line
5037 added 0
5038 col first column with a change or 1
5039
5040 The entries are in the order the changes were made, thus the
5041 most recent change is at the end. The line numbers are valid
5042 when the callback is invoked, but later changes may make them
5043 invalid, thus keeping a copy for later might not work.
5044
5045 The {callback} is invoked just before the screen is updated,
5046 when |listener_flush()| is called or when a change is being
5047 made that changes the line count in a way it causes a line
5048 number in the list of changes to become invalid.
5049
5050 The {callback} is invoked with the text locked, see
5051 |textlock|. If you do need to make changes to the buffer, use
5052 a timer to do this later |timer_start()|.
5053
5054 The {callback} is not invoked when the buffer is first loaded.
5055 Use the |BufReadPost| autocmd event to handle the initial text
5056 of a buffer.
5057 The {callback} is also not invoked when the buffer is
5058 unloaded, use the |BufUnload| autocmd event for that.
5059
5060 Can also be used as a |method|, the base is passed as the
5061 second argument: >
5062 GetBuffer()->listener_add(callback)
5063
5064listener_flush([{buf}]) *listener_flush()*
5065 Invoke listener callbacks for buffer {buf}. If there are no
5066 pending changes then no callbacks are invoked.
5067
5068 {buf} refers to a buffer name or number. For the accepted
5069 values, see |bufname()|. When {buf} is omitted the current
5070 buffer is used.
5071
5072 Can also be used as a |method|: >
5073 GetBuffer()->listener_flush()
5074
5075listener_remove({id}) *listener_remove()*
5076 Remove a listener previously added with listener_add().
5077 Returns FALSE when {id} could not be found, TRUE when {id} was
5078 removed.
5079
5080 Can also be used as a |method|: >
5081 GetListenerId()->listener_remove()
5082
5083localtime() *localtime()*
5084 Return the current time, measured as seconds since 1st Jan
5085 1970. See also |strftime()|, |strptime()| and |getftime()|.
5086
5087
5088log({expr}) *log()*
5089 Return the natural logarithm (base e) of {expr} as a |Float|.
5090 {expr} must evaluate to a |Float| or a |Number| in the range
5091 (0, inf].
5092 Examples: >
5093 :echo log(10)
5094< 2.302585 >
5095 :echo log(exp(5))
5096< 5.0
5097
5098 Can also be used as a |method|: >
5099 Compute()->log()
5100<
5101 {only available when compiled with the |+float| feature}
5102
5103
5104log10({expr}) *log10()*
5105 Return the logarithm of Float {expr} to base 10 as a |Float|.
5106 {expr} must evaluate to a |Float| or a |Number|.
5107 Examples: >
5108 :echo log10(1000)
5109< 3.0 >
5110 :echo log10(0.01)
5111< -2.0
5112
5113 Can also be used as a |method|: >
5114 Compute()->log10()
5115<
5116 {only available when compiled with the |+float| feature}
5117
5118luaeval({expr} [, {expr}]) *luaeval()*
5119 Evaluate Lua expression {expr} and return its result converted
5120 to Vim data structures. Second {expr} may hold additional
5121 argument accessible as _A inside first {expr}.
5122 Strings are returned as they are.
5123 Boolean objects are converted to numbers.
5124 Numbers are converted to |Float| values if vim was compiled
5125 with |+float| and to numbers otherwise.
5126 Dictionaries and lists obtained by vim.eval() are returned
5127 as-is.
5128 Other objects are returned as zero without any errors.
5129 See |lua-luaeval| for more details.
5130 Note that in a `:def` function local variables are not visible
5131 to {expr}.
5132
5133 Can also be used as a |method|: >
5134 GetExpr()->luaeval()
5135
5136< {only available when compiled with the |+lua| feature}
5137
5138map({expr1}, {expr2}) *map()*
5139 {expr1} must be a |List|, |String|, |Blob| or |Dictionary|.
5140 When {expr1} is a |List|| or |Dictionary|, replace each
5141 item in {expr1} with the result of evaluating {expr2}.
5142 For a |Blob| each byte is replaced.
5143 For a |String|, each character, including composing
5144 characters, is replaced.
5145 If the item type changes you may want to use |mapnew()| to
5146 create a new List or Dictionary. This is required when using
5147 Vim9 script.
5148
5149 {expr2} must be a |String| or |Funcref|.
5150
5151 If {expr2} is a |String|, inside {expr2} |v:val| has the value
5152 of the current item. For a |Dictionary| |v:key| has the key
5153 of the current item and for a |List| |v:key| has the index of
5154 the current item. For a |Blob| |v:key| has the index of the
5155 current byte. For a |String| |v:key| has the index of the
5156 current character.
5157 Example: >
5158 :call map(mylist, '"> " . v:val . " <"')
5159< This puts "> " before and " <" after each item in "mylist".
5160
5161 Note that {expr2} is the result of an expression and is then
5162 used as an expression again. Often it is good to use a
5163 |literal-string| to avoid having to double backslashes. You
5164 still have to double ' quotes
5165
5166 If {expr2} is a |Funcref| it is called with two arguments:
5167 1. The key or the index of the current item.
5168 2. the value of the current item.
5169 The function must return the new value of the item. Example
5170 that changes each value by "key-value": >
5171 func KeyValue(key, val)
5172 return a:key . '-' . a:val
5173 endfunc
5174 call map(myDict, function('KeyValue'))
5175< It is shorter when using a |lambda|: >
5176 call map(myDict, {key, val -> key . '-' . val})
5177< If you do not use "val" you can leave it out: >
5178 call map(myDict, {key -> 'item: ' . key})
5179< If you do not use "key" you can use a short name: >
5180 call map(myDict, {_, val -> 'item: ' . val})
5181<
5182 The operation is done in-place for a |List| and |Dictionary|.
5183 If you want it to remain unmodified make a copy first: >
5184 :let tlist = map(copy(mylist), ' v:val . "\t"')
5185
5186< Returns {expr1}, the |List| or |Dictionary| that was filtered,
5187 or a new |Blob| or |String|.
5188 When an error is encountered while evaluating {expr2} no
5189 further items in {expr1} are processed.
5190 When {expr2} is a Funcref errors inside a function are ignored,
5191 unless it was defined with the "abort" flag.
5192
5193 Can also be used as a |method|: >
5194 mylist->map(expr2)
5195
5196
5197maparg({name} [, {mode} [, {abbr} [, {dict}]]]) *maparg()*
5198 When {dict} is omitted or zero: Return the rhs of mapping
5199 {name} in mode {mode}. The returned String has special
5200 characters translated like in the output of the ":map" command
5201 listing.
5202
5203 When there is no mapping for {name}, an empty String is
5204 returned. When the mapping for {name} is empty, then "<Nop>"
5205 is returned.
5206
5207 The {name} can have special key names, like in the ":map"
5208 command.
5209
5210 {mode} can be one of these strings:
5211 "n" Normal
5212 "v" Visual (including Select)
5213 "o" Operator-pending
5214 "i" Insert
5215 "c" Cmd-line
5216 "s" Select
5217 "x" Visual
5218 "l" langmap |language-mapping|
5219 "t" Terminal-Job
5220 "" Normal, Visual and Operator-pending
5221 When {mode} is omitted, the modes for "" are used.
5222
5223 When {abbr} is there and it is |TRUE| use abbreviations
5224 instead of mappings.
5225
5226 When {dict} is there and it is |TRUE| return a dictionary
5227 containing all the information of the mapping with the
5228 following items:
5229 "lhs" The {lhs} of the mapping as it would be typed
5230 "lhsraw" The {lhs} of the mapping as raw bytes
5231 "lhsrawalt" The {lhs} of the mapping as raw bytes, alternate
5232 form, only present when it differs from "lhsraw"
5233 "rhs" The {rhs} of the mapping as typed.
5234 "silent" 1 for a |:map-silent| mapping, else 0.
5235 "noremap" 1 if the {rhs} of the mapping is not remappable.
5236 "script" 1 if mapping was defined with <script>.
5237 "expr" 1 for an expression mapping (|:map-<expr>|).
5238 "buffer" 1 for a buffer local mapping (|:map-local|).
5239 "mode" Modes for which the mapping is defined. In
5240 addition to the modes mentioned above, these
5241 characters will be used:
5242 " " Normal, Visual and Operator-pending
5243 "!" Insert and Commandline mode
5244 (|mapmode-ic|)
5245 "sid" The script local ID, used for <sid> mappings
5246 (|<SID>|).
5247 "lnum" The line number in "sid", zero if unknown.
5248 "nowait" Do not wait for other, longer mappings.
5249 (|:map-<nowait>|).
5250
5251 The dictionary can be used to restore a mapping with
5252 |mapset()|.
5253
5254 The mappings local to the current buffer are checked first,
5255 then the global mappings.
5256 This function can be used to map a key even when it's already
5257 mapped, and have it do the original mapping too. Sketch: >
5258 exe 'nnoremap <Tab> ==' . maparg('<Tab>', 'n')
5259
5260< Can also be used as a |method|: >
5261 GetKey()->maparg('n')
5262
5263mapcheck({name} [, {mode} [, {abbr}]]) *mapcheck()*
5264 Check if there is a mapping that matches with {name} in mode
5265 {mode}. See |maparg()| for {mode} and special names in
5266 {name}.
5267 When {abbr} is there and it is |TRUE| use abbreviations
5268 instead of mappings.
5269 A match happens with a mapping that starts with {name} and
5270 with a mapping which is equal to the start of {name}.
5271
5272 matches mapping "a" "ab" "abc" ~
5273 mapcheck("a") yes yes yes
5274 mapcheck("abc") yes yes yes
5275 mapcheck("ax") yes no no
5276 mapcheck("b") no no no
5277
5278 The difference with maparg() is that mapcheck() finds a
5279 mapping that matches with {name}, while maparg() only finds a
5280 mapping for {name} exactly.
5281 When there is no mapping that starts with {name}, an empty
5282 String is returned. If there is one, the RHS of that mapping
5283 is returned. If there are several mappings that start with
5284 {name}, the RHS of one of them is returned. This will be
5285 "<Nop>" if the RHS is empty.
5286 The mappings local to the current buffer are checked first,
5287 then the global mappings.
5288 This function can be used to check if a mapping can be added
5289 without being ambiguous. Example: >
5290 :if mapcheck("_vv") == ""
5291 : map _vv :set guifont=7x13<CR>
5292 :endif
5293< This avoids adding the "_vv" mapping when there already is a
5294 mapping for "_v" or for "_vvv".
5295
5296 Can also be used as a |method|: >
5297 GetKey()->mapcheck('n')
5298
5299
5300mapnew({expr1}, {expr2}) *mapnew()*
5301 Like |map()| but instead of replacing items in {expr1} a new
5302 List or Dictionary is created and returned. {expr1} remains
5303 unchanged. Items can still be changed by {expr2}, if you
5304 don't want that use |deepcopy()| first.
5305
5306
5307mapset({mode}, {abbr}, {dict}) *mapset()*
5308 Restore a mapping from a dictionary returned by |maparg()|.
5309 {mode} and {abbr} should be the same as for the call to
5310 |maparg()|. *E460*
5311 {mode} is used to define the mode in which the mapping is set,
5312 not the "mode" entry in {dict}.
5313 Example for saving and restoring a mapping: >
5314 let save_map = maparg('K', 'n', 0, 1)
5315 nnoremap K somethingelse
5316 ...
5317 call mapset('n', 0, save_map)
5318< Note that if you are going to replace a map in several modes,
5319 e.g. with `:map!`, you need to save the mapping for all of
5320 them, since they can differ.
5321
5322
5323match({expr}, {pat} [, {start} [, {count}]]) *match()*
5324 When {expr} is a |List| then this returns the index of the
5325 first item where {pat} matches. Each item is used as a
5326 String, |Lists| and |Dictionaries| are used as echoed.
5327
5328 Otherwise, {expr} is used as a String. The result is a
5329 Number, which gives the index (byte offset) in {expr} where
5330 {pat} matches.
5331
5332 A match at the first character or |List| item returns zero.
5333 If there is no match -1 is returned.
5334
5335 For getting submatches see |matchlist()|.
5336 Example: >
5337 :echo match("testing", "ing") " results in 4
5338 :echo match([1, 'x'], '\a') " results in 1
5339< See |string-match| for how {pat} is used.
5340 *strpbrk()*
5341 Vim doesn't have a strpbrk() function. But you can do: >
5342 :let sepidx = match(line, '[.,;: \t]')
5343< *strcasestr()*
5344 Vim doesn't have a strcasestr() function. But you can add
5345 "\c" to the pattern to ignore case: >
5346 :let idx = match(haystack, '\cneedle')
5347<
5348 If {start} is given, the search starts from byte index
5349 {start} in a String or item {start} in a |List|.
5350 The result, however, is still the index counted from the
5351 first character/item. Example: >
5352 :echo match("testing", "ing", 2)
5353< result is again "4". >
5354 :echo match("testing", "ing", 4)
5355< result is again "4". >
5356 :echo match("testing", "t", 2)
5357< result is "3".
5358 For a String, if {start} > 0 then it is like the string starts
5359 {start} bytes later, thus "^" will match at {start}. Except
5360 when {count} is given, then it's like matches before the
5361 {start} byte are ignored (this is a bit complicated to keep it
5362 backwards compatible).
5363 For a String, if {start} < 0, it will be set to 0. For a list
5364 the index is counted from the end.
5365 If {start} is out of range ({start} > strlen({expr}) for a
5366 String or {start} > len({expr}) for a |List|) -1 is returned.
5367
5368 When {count} is given use the {count}'th match. When a match
5369 is found in a String the search for the next one starts one
5370 character further. Thus this example results in 1: >
5371 echo match("testing", "..", 0, 2)
5372< In a |List| the search continues in the next item.
5373 Note that when {count} is added the way {start} works changes,
5374 see above.
5375
5376 See |pattern| for the patterns that are accepted.
5377 The 'ignorecase' option is used to set the ignore-caseness of
5378 the pattern. 'smartcase' is NOT used. The matching is always
5379 done like 'magic' is set and 'cpoptions' is empty.
5380 Note that a match at the start is preferred, thus when the
5381 pattern is using "*" (any number of matches) it tends to find
5382 zero matches at the start instead of a number of matches
5383 further down in the text.
5384
5385 Can also be used as a |method|: >
5386 GetText()->match('word')
5387 GetList()->match('word')
5388<
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00005389 *matchadd()* *E290* *E798* *E799* *E801* *E957*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005390matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
5391 Defines a pattern to be highlighted in the current window (a
5392 "match"). It will be highlighted with {group}. Returns an
5393 identification number (ID), which can be used to delete the
5394 match using |matchdelete()|. The ID is bound to the window.
5395 Matching is case sensitive and magic, unless case sensitivity
5396 or magicness are explicitly overridden in {pattern}. The
5397 'magic', 'smartcase' and 'ignorecase' options are not used.
5398 The "Conceal" value is special, it causes the match to be
5399 concealed.
5400
5401 The optional {priority} argument assigns a priority to the
5402 match. A match with a high priority will have its
5403 highlighting overrule that of a match with a lower priority.
5404 A priority is specified as an integer (negative numbers are no
5405 exception). If the {priority} argument is not specified, the
5406 default priority is 10. The priority of 'hlsearch' is zero,
5407 hence all matches with a priority greater than zero will
5408 overrule it. Syntax highlighting (see 'syntax') is a separate
5409 mechanism, and regardless of the chosen priority a match will
5410 always overrule syntax highlighting.
5411
5412 The optional {id} argument allows the request for a specific
5413 match ID. If a specified ID is already taken, an error
5414 message will appear and the match will not be added. An ID
5415 is specified as a positive integer (zero excluded). IDs 1, 2
5416 and 3 are reserved for |:match|, |:2match| and |:3match|,
5417 respectively. If the {id} argument is not specified or -1,
5418 |matchadd()| automatically chooses a free ID.
5419
5420 The optional {dict} argument allows for further custom
5421 values. Currently this is used to specify a match specific
5422 conceal character that will be shown for |hl-Conceal|
5423 highlighted matches. The dict can have the following members:
5424
5425 conceal Special character to show instead of the
5426 match (only for |hl-Conceal| highlighted
5427 matches, see |:syn-cchar|)
5428 window Instead of the current window use the
5429 window with this number or window ID.
5430
5431 The number of matches is not limited, as it is the case with
5432 the |:match| commands.
5433
5434 Example: >
5435 :highlight MyGroup ctermbg=green guibg=green
5436 :let m = matchadd("MyGroup", "TODO")
5437< Deletion of the pattern: >
5438 :call matchdelete(m)
5439
5440< A list of matches defined by |matchadd()| and |:match| are
5441 available from |getmatches()|. All matches can be deleted in
5442 one operation by |clearmatches()|.
5443
5444 Can also be used as a |method|: >
5445 GetGroup()->matchadd('TODO')
5446<
5447 *matchaddpos()*
5448matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
5449 Same as |matchadd()|, but requires a list of positions {pos}
5450 instead of a pattern. This command is faster than |matchadd()|
5451 because it does not require to handle regular expressions and
5452 sets buffer line boundaries to redraw screen. It is supposed
5453 to be used when fast match additions and deletions are
5454 required, for example to highlight matching parentheses.
5455
5456 {pos} is a list of positions. Each position can be one of
5457 these:
5458 - A number. This whole line will be highlighted. The first
5459 line has number 1.
5460 - A list with one number, e.g., [23]. The whole line with this
5461 number will be highlighted.
5462 - A list with two numbers, e.g., [23, 11]. The first number is
5463 the line number, the second one is the column number (first
5464 column is 1, the value must correspond to the byte index as
5465 |col()| would return). The character at this position will
5466 be highlighted.
5467 - A list with three numbers, e.g., [23, 11, 3]. As above, but
5468 the third number gives the length of the highlight in bytes.
5469
5470 The maximum number of positions in {pos} is 8.
5471
5472 Example: >
5473 :highlight MyGroup ctermbg=green guibg=green
5474 :let m = matchaddpos("MyGroup", [[23, 24], 34])
5475< Deletion of the pattern: >
5476 :call matchdelete(m)
5477
5478< Matches added by |matchaddpos()| are returned by
5479 |getmatches()|.
5480
5481 Can also be used as a |method|: >
5482 GetGroup()->matchaddpos([23, 11])
5483
5484matcharg({nr}) *matcharg()*
5485 Selects the {nr} match item, as set with a |:match|,
5486 |:2match| or |:3match| command.
5487 Return a |List| with two elements:
5488 The name of the highlight group used
5489 The pattern used.
5490 When {nr} is not 1, 2 or 3 returns an empty |List|.
5491 When there is no match item set returns ['', ''].
5492 This is useful to save and restore a |:match|.
5493 Highlighting matches using the |:match| commands are limited
5494 to three matches. |matchadd()| does not have this limitation.
5495
5496 Can also be used as a |method|: >
5497 GetMatch()->matcharg()
5498
5499matchdelete({id} [, {win}) *matchdelete()* *E802* *E803*
5500 Deletes a match with ID {id} previously defined by |matchadd()|
5501 or one of the |:match| commands. Returns 0 if successful,
5502 otherwise -1. See example for |matchadd()|. All matches can
5503 be deleted in one operation by |clearmatches()|.
5504 If {win} is specified, use the window with this number or
5505 window ID instead of the current window.
5506
5507 Can also be used as a |method|: >
5508 GetMatch()->matchdelete()
5509
5510matchend({expr}, {pat} [, {start} [, {count}]]) *matchend()*
5511 Same as |match()|, but return the index of first character
5512 after the match. Example: >
5513 :echo matchend("testing", "ing")
5514< results in "7".
5515 *strspn()* *strcspn()*
5516 Vim doesn't have a strspn() or strcspn() function, but you can
5517 do it with matchend(): >
5518 :let span = matchend(line, '[a-zA-Z]')
5519 :let span = matchend(line, '[^a-zA-Z]')
5520< Except that -1 is returned when there are no matches.
5521
5522 The {start}, if given, has the same meaning as for |match()|. >
5523 :echo matchend("testing", "ing", 2)
5524< results in "7". >
5525 :echo matchend("testing", "ing", 5)
5526< result is "-1".
5527 When {expr} is a |List| the result is equal to |match()|.
5528
5529 Can also be used as a |method|: >
5530 GetText()->matchend('word')
5531
5532
5533matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
5534 If {list} is a list of strings, then returns a |List| with all
5535 the strings in {list} that fuzzy match {str}. The strings in
5536 the returned list are sorted based on the matching score.
5537
5538 The optional {dict} argument always supports the following
5539 items:
5540 matchseq When this item is present and {str} contains
5541 multiple words separated by white space, then
5542 returns only matches that contain the words in
5543 the given sequence.
5544
5545 If {list} is a list of dictionaries, then the optional {dict}
5546 argument supports the following additional items:
5547 key key of the item which is fuzzy matched against
5548 {str}. The value of this item should be a
5549 string.
5550 text_cb |Funcref| that will be called for every item
5551 in {list} to get the text for fuzzy matching.
5552 This should accept a dictionary item as the
5553 argument and return the text for that item to
5554 use for fuzzy matching.
5555
5556 {str} is treated as a literal string and regular expression
5557 matching is NOT supported. The maximum supported {str} length
5558 is 256.
5559
5560 When {str} has multiple words each separated by white space,
5561 then the list of strings that have all the words is returned.
5562
5563 If there are no matching strings or there is an error, then an
5564 empty list is returned. If length of {str} is greater than
5565 256, then returns an empty list.
5566
5567 Refer to |fuzzy-match| for more information about fuzzy
5568 matching strings.
5569
5570 Example: >
5571 :echo matchfuzzy(["clay", "crow"], "cay")
5572< results in ["clay"]. >
5573 :echo getbufinfo()->map({_, v -> v.name})->matchfuzzy("ndl")
5574< results in a list of buffer names fuzzy matching "ndl". >
5575 :echo getbufinfo()->matchfuzzy("ndl", {'key' : 'name'})
5576< results in a list of buffer information dicts with buffer
5577 names fuzzy matching "ndl". >
5578 :echo getbufinfo()->matchfuzzy("spl",
5579 \ {'text_cb' : {v -> v.name}})
5580< results in a list of buffer information dicts with buffer
5581 names fuzzy matching "spl". >
5582 :echo v:oldfiles->matchfuzzy("test")
5583< results in a list of file names fuzzy matching "test". >
5584 :let l = readfile("buffer.c")->matchfuzzy("str")
5585< results in a list of lines in "buffer.c" fuzzy matching "str". >
5586 :echo ['one two', 'two one']->matchfuzzy('two one')
5587< results in ['two one', 'one two']. >
5588 :echo ['one two', 'two one']->matchfuzzy('two one',
5589 \ {'matchseq': 1})
5590< results in ['two one'].
5591
5592matchfuzzypos({list}, {str} [, {dict}]) *matchfuzzypos()*
5593 Same as |matchfuzzy()|, but returns the list of matched
5594 strings, the list of character positions where characters
5595 in {str} matches and a list of matching scores. You can
5596 use |byteidx()| to convert a character position to a byte
5597 position.
5598
5599 If {str} matches multiple times in a string, then only the
5600 positions for the best match is returned.
5601
5602 If there are no matching strings or there is an error, then a
5603 list with three empty list items is returned.
5604
5605 Example: >
5606 :echo matchfuzzypos(['testing'], 'tsg')
5607< results in [['testing'], [[0, 2, 6]], [99]] >
5608 :echo matchfuzzypos(['clay', 'lacy'], 'la')
5609< results in [['lacy', 'clay'], [[0, 1], [1, 2]], [153, 133]] >
5610 :echo [{'text': 'hello', 'id' : 10}]->matchfuzzypos('ll', {'key' : 'text'})
5611< results in [[{'id': 10, 'text': 'hello'}], [[2, 3]], [127]]
5612
5613matchlist({expr}, {pat} [, {start} [, {count}]]) *matchlist()*
5614 Same as |match()|, but return a |List|. The first item in the
5615 list is the matched string, same as what matchstr() would
5616 return. Following items are submatches, like "\1", "\2", etc.
5617 in |:substitute|. When an optional submatch didn't match an
5618 empty string is used. Example: >
5619 echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)')
5620< Results in: ['acd', 'a', '', 'c', 'd', '', '', '', '', '']
5621 When there is no match an empty list is returned.
5622
5623 You can pass in a List, but that is not very useful.
5624
5625 Can also be used as a |method|: >
5626 GetText()->matchlist('word')
5627
5628matchstr({expr}, {pat} [, {start} [, {count}]]) *matchstr()*
5629 Same as |match()|, but return the matched string. Example: >
5630 :echo matchstr("testing", "ing")
5631< results in "ing".
5632 When there is no match "" is returned.
5633 The {start}, if given, has the same meaning as for |match()|. >
5634 :echo matchstr("testing", "ing", 2)
5635< results in "ing". >
5636 :echo matchstr("testing", "ing", 5)
5637< result is "".
5638 When {expr} is a |List| then the matching item is returned.
5639 The type isn't changed, it's not necessarily a String.
5640
5641 Can also be used as a |method|: >
5642 GetText()->matchstr('word')
5643
5644matchstrpos({expr}, {pat} [, {start} [, {count}]]) *matchstrpos()*
5645 Same as |matchstr()|, but return the matched string, the start
5646 position and the end position of the match. Example: >
5647 :echo matchstrpos("testing", "ing")
5648< results in ["ing", 4, 7].
5649 When there is no match ["", -1, -1] is returned.
5650 The {start}, if given, has the same meaning as for |match()|. >
5651 :echo matchstrpos("testing", "ing", 2)
5652< results in ["ing", 4, 7]. >
5653 :echo matchstrpos("testing", "ing", 5)
5654< result is ["", -1, -1].
5655 When {expr} is a |List| then the matching item, the index
5656 of first item where {pat} matches, the start position and the
5657 end position of the match are returned. >
5658 :echo matchstrpos([1, '__x'], '\a')
5659< result is ["x", 1, 2, 3].
5660 The type isn't changed, it's not necessarily a String.
5661
5662 Can also be used as a |method|: >
5663 GetText()->matchstrpos('word')
5664<
5665
5666 *max()*
5667max({expr}) Return the maximum value of all items in {expr}. Example: >
5668 echo max([apples, pears, oranges])
5669
5670< {expr} can be a |List| or a |Dictionary|. For a Dictionary,
5671 it returns the maximum of all values in the Dictionary.
5672 If {expr} is neither a List nor a Dictionary, or one of the
5673 items in {expr} cannot be used as a Number this results in
5674 an error. An empty |List| or |Dictionary| results in zero.
5675
5676 Can also be used as a |method|: >
5677 mylist->max()
5678
5679
5680menu_info({name} [, {mode}]) *menu_info()*
5681 Return information about the specified menu {name} in
5682 mode {mode}. The menu name should be specified without the
5683 shortcut character ('&'). If {name} is "", then the top-level
5684 menu names are returned.
5685
5686 {mode} can be one of these strings:
5687 "n" Normal
5688 "v" Visual (including Select)
5689 "o" Operator-pending
5690 "i" Insert
5691 "c" Cmd-line
5692 "s" Select
5693 "x" Visual
5694 "t" Terminal-Job
5695 "" Normal, Visual and Operator-pending
5696 "!" Insert and Cmd-line
5697 When {mode} is omitted, the modes for "" are used.
5698
5699 Returns a |Dictionary| containing the following items:
5700 accel menu item accelerator text |menu-text|
5701 display display name (name without '&')
5702 enabled v:true if this menu item is enabled
5703 Refer to |:menu-enable|
5704 icon name of the icon file (for toolbar)
5705 |toolbar-icon|
5706 iconidx index of a built-in icon
5707 modes modes for which the menu is defined. In
5708 addition to the modes mentioned above, these
5709 characters will be used:
5710 " " Normal, Visual and Operator-pending
5711 name menu item name.
5712 noremenu v:true if the {rhs} of the menu item is not
5713 remappable else v:false.
5714 priority menu order priority |menu-priority|
5715 rhs right-hand-side of the menu item. The returned
5716 string has special characters translated like
5717 in the output of the ":menu" command listing.
5718 When the {rhs} of a menu item is empty, then
5719 "<Nop>" is returned.
5720 script v:true if script-local remapping of {rhs} is
5721 allowed else v:false. See |:menu-script|.
5722 shortcut shortcut key (character after '&' in
5723 the menu name) |menu-shortcut|
5724 silent v:true if the menu item is created
5725 with <silent> argument |:menu-silent|
5726 submenus |List| containing the names of
5727 all the submenus. Present only if the menu
5728 item has submenus.
5729
5730 Returns an empty dictionary if the menu item is not found.
5731
5732 Examples: >
5733 :echo menu_info('Edit.Cut')
5734 :echo menu_info('File.Save', 'n')
5735
5736 " Display the entire menu hierarchy in a buffer
5737 func ShowMenu(name, pfx)
5738 let m = menu_info(a:name)
5739 call append(line('$'), a:pfx .. m.display)
5740 for child in m->get('submenus', [])
5741 call ShowMenu(a:name .. '.' .. escape(child, '.'),
5742 \ a:pfx .. ' ')
5743 endfor
5744 endfunc
5745 new
5746 for topmenu in menu_info('').submenus
5747 call ShowMenu(topmenu, '')
5748 endfor
5749<
5750 Can also be used as a |method|: >
5751 GetMenuName()->menu_info('v')
5752
5753
5754< *min()*
5755min({expr}) Return the minimum value of all items in {expr}. Example: >
5756 echo min([apples, pears, oranges])
5757
5758< {expr} can be a |List| or a |Dictionary|. For a Dictionary,
5759 it returns the minimum of all values in the Dictionary.
5760 If {expr} is neither a List nor a Dictionary, or one of the
5761 items in {expr} cannot be used as a Number this results in
5762 an error. An empty |List| or |Dictionary| results in zero.
5763
5764 Can also be used as a |method|: >
5765 mylist->min()
5766
5767< *mkdir()* *E739*
5768mkdir({name} [, {path} [, {prot}]])
5769 Create directory {name}.
5770
5771 If {path} is "p" then intermediate directories are created as
5772 necessary. Otherwise it must be "".
5773
5774 If {prot} is given it is used to set the protection bits of
5775 the new directory. The default is 0o755 (rwxr-xr-x: r/w for
5776 the user, readable for others). Use 0o700 to make it
5777 unreadable for others. This is only used for the last part of
5778 {name}. Thus if you create /tmp/foo/bar then /tmp/foo will be
5779 created with 0o755.
5780 Example: >
5781 :call mkdir($HOME . "/tmp/foo/bar", "p", 0o700)
5782
5783< This function is not available in the |sandbox|.
5784
5785 There is no error if the directory already exists and the "p"
5786 flag is passed (since patch 8.0.1708). However, without the
5787 "p" option the call will fail.
5788
5789 The function result is a Number, which is TRUE if the call was
5790 successful or FALSE if the directory creation failed or partly
5791 failed.
5792
5793 Not available on all systems. To check use: >
5794 :if exists("*mkdir")
5795
5796< Can also be used as a |method|: >
5797 GetName()->mkdir()
5798<
5799 *mode()*
5800mode([expr]) Return a string that indicates the current mode.
5801 If [expr] is supplied and it evaluates to a non-zero Number or
5802 a non-empty String (|non-zero-arg|), then the full mode is
5803 returned, otherwise only the first letter is returned.
5804 Also see |state()|.
5805
5806 n Normal
5807 no Operator-pending
5808 nov Operator-pending (forced characterwise |o_v|)
5809 noV Operator-pending (forced linewise |o_V|)
5810 noCTRL-V Operator-pending (forced blockwise |o_CTRL-V|);
5811 CTRL-V is one character
5812 niI Normal using |i_CTRL-O| in |Insert-mode|
5813 niR Normal using |i_CTRL-O| in |Replace-mode|
5814 niV Normal using |i_CTRL-O| in |Virtual-Replace-mode|
5815 nt Terminal-Normal (insert goes to Terminal-Job mode)
5816 v Visual by character
5817 vs Visual by character using |v_CTRL-O| in Select mode
5818 V Visual by line
5819 Vs Visual by line using |v_CTRL-O| in Select mode
5820 CTRL-V Visual blockwise
5821 CTRL-Vs Visual blockwise using |v_CTRL-O| in Select mode
5822 s Select by character
5823 S Select by line
5824 CTRL-S Select blockwise
5825 i Insert
5826 ic Insert mode completion |compl-generic|
5827 ix Insert mode |i_CTRL-X| completion
5828 R Replace |R|
5829 Rc Replace mode completion |compl-generic|
5830 Rx Replace mode |i_CTRL-X| completion
5831 Rv Virtual Replace |gR|
5832 Rvc Virtual Replace mode completion |compl-generic|
5833 Rvx Virtual Replace mode |i_CTRL-X| completion
5834 c Command-line editing
5835 cv Vim Ex mode |gQ|
5836 ce Normal Ex mode |Q|
5837 r Hit-enter prompt
5838 rm The -- more -- prompt
5839 r? A |:confirm| query of some sort
5840 ! Shell or external command is executing
5841 t Terminal-Job mode: keys go to the job
5842
5843 This is useful in the 'statusline' option or when used
5844 with |remote_expr()| In most other places it always returns
5845 "c" or "n".
5846 Note that in the future more modes and more specific modes may
5847 be added. It's better not to compare the whole string but only
5848 the leading character(s).
5849 Also see |visualmode()|.
5850
5851 Can also be used as a |method|: >
5852 DoFull()->mode()
5853
5854mzeval({expr}) *mzeval()*
5855 Evaluate MzScheme expression {expr} and return its result
5856 converted to Vim data structures.
5857 Numbers and strings are returned as they are.
5858 Pairs (including lists and improper lists) and vectors are
5859 returned as Vim |Lists|.
5860 Hash tables are represented as Vim |Dictionary| type with keys
5861 converted to strings.
5862 All other types are converted to string with display function.
5863 Examples: >
5864 :mz (define l (list 1 2 3))
5865 :mz (define h (make-hash)) (hash-set! h "list" l)
5866 :echo mzeval("l")
5867 :echo mzeval("h")
5868<
5869 Note that in a `:def` function local variables are not visible
5870 to {expr}.
5871
5872 Can also be used as a |method|: >
5873 GetExpr()->mzeval()
5874<
5875 {only available when compiled with the |+mzscheme| feature}
5876
5877nextnonblank({lnum}) *nextnonblank()*
5878 Return the line number of the first line at or below {lnum}
5879 that is not blank. Example: >
5880 if getline(nextnonblank(1)) =~ "Java"
5881< When {lnum} is invalid or there is no non-blank line at or
5882 below it, zero is returned.
5883 {lnum} is used like with |getline()|.
5884 See also |prevnonblank()|.
5885
5886 Can also be used as a |method|: >
5887 GetLnum()->nextnonblank()
5888
5889nr2char({expr} [, {utf8}]) *nr2char()*
5890 Return a string with a single character, which has the number
5891 value {expr}. Examples: >
5892 nr2char(64) returns "@"
5893 nr2char(32) returns " "
5894< When {utf8} is omitted or zero, the current 'encoding' is used.
5895 Example for "utf-8": >
5896 nr2char(300) returns I with bow character
5897< When {utf8} is TRUE, always return UTF-8 characters.
5898 Note that a NUL character in the file is specified with
5899 nr2char(10), because NULs are represented with newline
5900 characters. nr2char(0) is a real NUL and terminates the
5901 string, thus results in an empty string.
5902 To turn a list of character numbers into a string: >
5903 let list = [65, 66, 67]
5904 let str = join(map(list, {_, val -> nr2char(val)}), '')
5905< Result: "ABC"
5906
5907 Can also be used as a |method|: >
5908 GetNumber()->nr2char()
5909
5910or({expr}, {expr}) *or()*
5911 Bitwise OR on the two arguments. The arguments are converted
5912 to a number. A List, Dict or Float argument causes an error.
5913 Example: >
5914 :let bits = or(bits, 0x80)
5915< Can also be used as a |method|: >
5916 :let bits = bits->or(0x80)
5917
5918
5919pathshorten({path} [, {len}]) *pathshorten()*
5920 Shorten directory names in the path {path} and return the
5921 result. The tail, the file name, is kept as-is. The other
5922 components in the path are reduced to {len} letters in length.
5923 If {len} is omitted or smaller than 1 then 1 is used (single
5924 letters). Leading '~' and '.' characters are kept. Examples: >
5925 :echo pathshorten('~/.vim/autoload/myfile.vim')
5926< ~/.v/a/myfile.vim ~
5927>
5928 :echo pathshorten('~/.vim/autoload/myfile.vim', 2)
5929< ~/.vi/au/myfile.vim ~
5930 It doesn't matter if the path exists or not.
5931
5932 Can also be used as a |method|: >
5933 GetDirectories()->pathshorten()
5934
5935perleval({expr}) *perleval()*
5936 Evaluate Perl expression {expr} in scalar context and return
5937 its result converted to Vim data structures. If value can't be
5938 converted, it is returned as a string Perl representation.
5939 Note: If you want an array or hash, {expr} must return a
5940 reference to it.
5941 Example: >
5942 :echo perleval('[1 .. 4]')
5943< [1, 2, 3, 4]
5944
5945 Note that in a `:def` function local variables are not visible
5946 to {expr}.
5947
5948 Can also be used as a |method|: >
5949 GetExpr()->perleval()
5950
5951< {only available when compiled with the |+perl| feature}
5952
5953
5954popup_ functions are documented here: |popup-functions|
5955
5956
5957pow({x}, {y}) *pow()*
5958 Return the power of {x} to the exponent {y} as a |Float|.
5959 {x} and {y} must evaluate to a |Float| or a |Number|.
5960 Examples: >
5961 :echo pow(3, 3)
5962< 27.0 >
5963 :echo pow(2, 16)
5964< 65536.0 >
5965 :echo pow(32, 0.20)
5966< 2.0
5967
5968 Can also be used as a |method|: >
5969 Compute()->pow(3)
5970<
5971 {only available when compiled with the |+float| feature}
5972
5973prevnonblank({lnum}) *prevnonblank()*
5974 Return the line number of the first line at or above {lnum}
5975 that is not blank. Example: >
5976 let ind = indent(prevnonblank(v:lnum - 1))
5977< When {lnum} is invalid or there is no non-blank line at or
5978 above it, zero is returned.
5979 {lnum} is used like with |getline()|.
5980 Also see |nextnonblank()|.
5981
5982 Can also be used as a |method|: >
5983 GetLnum()->prevnonblank()
5984
5985printf({fmt}, {expr1} ...) *printf()*
5986 Return a String with {fmt}, where "%" items are replaced by
5987 the formatted form of their respective arguments. Example: >
5988 printf("%4d: E%d %.30s", lnum, errno, msg)
5989< May result in:
5990 " 99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~
5991
5992 When used as a |method| the base is passed as the second
5993 argument: >
5994 Compute()->printf("result: %d")
5995
5996< Often used items are:
5997 %s string
5998 %6S string right-aligned in 6 display cells
5999 %6s string right-aligned in 6 bytes
6000 %.9s string truncated to 9 bytes
6001 %c single byte
6002 %d decimal number
6003 %5d decimal number padded with spaces to 5 characters
6004 %x hex number
6005 %04x hex number padded with zeros to at least 4 characters
6006 %X hex number using upper case letters
6007 %o octal number
6008 %08b binary number padded with zeros to at least 8 chars
6009 %f floating point number as 12.23, inf, -inf or nan
6010 %F floating point number as 12.23, INF, -INF or NAN
6011 %e floating point number as 1.23e3, inf, -inf or nan
6012 %E floating point number as 1.23E3, INF, -INF or NAN
6013 %g floating point number, as %f or %e depending on value
6014 %G floating point number, as %F or %E depending on value
6015 %% the % character itself
6016
6017 Conversion specifications start with '%' and end with the
6018 conversion type. All other characters are copied unchanged to
6019 the result.
6020
6021 The "%" starts a conversion specification. The following
6022 arguments appear in sequence:
6023
6024 % [flags] [field-width] [.precision] type
6025
6026 flags
6027 Zero or more of the following flags:
6028
6029 # The value should be converted to an "alternate
6030 form". For c, d, and s conversions, this option
6031 has no effect. For o conversions, the precision
6032 of the number is increased to force the first
6033 character of the output string to a zero (except
6034 if a zero value is printed with an explicit
6035 precision of zero).
6036 For b and B conversions, a non-zero result has
6037 the string "0b" (or "0B" for B conversions)
6038 prepended to it.
6039 For x and X conversions, a non-zero result has
6040 the string "0x" (or "0X" for X conversions)
6041 prepended to it.
6042
6043 0 (zero) Zero padding. For all conversions the converted
6044 value is padded on the left with zeros rather
6045 than blanks. If a precision is given with a
6046 numeric conversion (d, b, B, o, x, and X), the 0
6047 flag is ignored.
6048
6049 - A negative field width flag; the converted value
6050 is to be left adjusted on the field boundary.
6051 The converted value is padded on the right with
6052 blanks, rather than on the left with blanks or
6053 zeros. A - overrides a 0 if both are given.
6054
6055 ' ' (space) A blank should be left before a positive
6056 number produced by a signed conversion (d).
6057
6058 + A sign must always be placed before a number
6059 produced by a signed conversion. A + overrides
6060 a space if both are used.
6061
6062 field-width
6063 An optional decimal digit string specifying a minimum
6064 field width. If the converted value has fewer bytes
6065 than the field width, it will be padded with spaces on
6066 the left (or right, if the left-adjustment flag has
6067 been given) to fill out the field width. For the S
6068 conversion the count is in cells.
6069
6070 .precision
6071 An optional precision, in the form of a period '.'
6072 followed by an optional digit string. If the digit
6073 string is omitted, the precision is taken as zero.
6074 This gives the minimum number of digits to appear for
6075 d, o, x, and X conversions, the maximum number of
6076 bytes to be printed from a string for s conversions,
6077 or the maximum number of cells to be printed from a
6078 string for S conversions.
6079 For floating point it is the number of digits after
6080 the decimal point.
6081
6082 type
6083 A character that specifies the type of conversion to
6084 be applied, see below.
6085
6086 A field width or precision, or both, may be indicated by an
6087 asterisk '*' instead of a digit string. In this case, a
6088 Number argument supplies the field width or precision. A
6089 negative field width is treated as a left adjustment flag
6090 followed by a positive field width; a negative precision is
6091 treated as though it were missing. Example: >
6092 :echo printf("%d: %.*s", nr, width, line)
6093< This limits the length of the text used from "line" to
6094 "width" bytes.
6095
6096 The conversion specifiers and their meanings are:
6097
6098 *printf-d* *printf-b* *printf-B* *printf-o*
6099 *printf-x* *printf-X*
6100 dbBoxX The Number argument is converted to signed decimal
6101 (d), unsigned binary (b and B), unsigned octal (o), or
6102 unsigned hexadecimal (x and X) notation. The letters
6103 "abcdef" are used for x conversions; the letters
6104 "ABCDEF" are used for X conversions.
6105 The precision, if any, gives the minimum number of
6106 digits that must appear; if the converted value
6107 requires fewer digits, it is padded on the left with
6108 zeros.
6109 In no case does a non-existent or small field width
6110 cause truncation of a numeric field; if the result of
6111 a conversion is wider than the field width, the field
6112 is expanded to contain the conversion result.
6113 The 'h' modifier indicates the argument is 16 bits.
6114 The 'l' modifier indicates the argument is 32 bits.
6115 The 'L' modifier indicates the argument is 64 bits.
6116 Generally, these modifiers are not useful. They are
6117 ignored when type is known from the argument.
6118
6119 i alias for d
6120 D alias for ld
6121 U alias for lu
6122 O alias for lo
6123
6124 *printf-c*
6125 c The Number argument is converted to a byte, and the
6126 resulting character is written.
6127
6128 *printf-s*
6129 s The text of the String argument is used. If a
6130 precision is specified, no more bytes than the number
6131 specified are used.
6132 If the argument is not a String type, it is
6133 automatically converted to text with the same format
6134 as ":echo".
6135 *printf-S*
6136 S The text of the String argument is used. If a
6137 precision is specified, no more display cells than the
6138 number specified are used.
6139
6140 *printf-f* *E807*
6141 f F The Float argument is converted into a string of the
6142 form 123.456. The precision specifies the number of
6143 digits after the decimal point. When the precision is
6144 zero the decimal point is omitted. When the precision
6145 is not specified 6 is used. A really big number
6146 (out of range or dividing by zero) results in "inf"
6147 or "-inf" with %f (INF or -INF with %F).
6148 "0.0 / 0.0" results in "nan" with %f (NAN with %F).
6149 Example: >
6150 echo printf("%.2f", 12.115)
6151< 12.12
6152 Note that roundoff depends on the system libraries.
6153 Use |round()| when in doubt.
6154
6155 *printf-e* *printf-E*
6156 e E The Float argument is converted into a string of the
6157 form 1.234e+03 or 1.234E+03 when using 'E'. The
6158 precision specifies the number of digits after the
6159 decimal point, like with 'f'.
6160
6161 *printf-g* *printf-G*
6162 g G The Float argument is converted like with 'f' if the
6163 value is between 0.001 (inclusive) and 10000000.0
6164 (exclusive). Otherwise 'e' is used for 'g' and 'E'
6165 for 'G'. When no precision is specified superfluous
6166 zeroes and '+' signs are removed, except for the zero
6167 immediately after the decimal point. Thus 10000000.0
6168 results in 1.0e7.
6169
6170 *printf-%*
6171 % A '%' is written. No argument is converted. The
6172 complete conversion specification is "%%".
6173
6174 When a Number argument is expected a String argument is also
6175 accepted and automatically converted.
6176 When a Float or String argument is expected a Number argument
6177 is also accepted and automatically converted.
6178 Any other argument type results in an error message.
6179
6180 *E766* *E767*
6181 The number of {exprN} arguments must exactly match the number
6182 of "%" items. If there are not sufficient or too many
6183 arguments an error is given. Up to 18 arguments can be used.
6184
6185
6186prompt_getprompt({buf}) *prompt_getprompt()*
6187 Returns the effective prompt text for buffer {buf}. {buf} can
6188 be a buffer name or number. See |prompt-buffer|.
6189
6190 If the buffer doesn't exist or isn't a prompt buffer, an empty
6191 string is returned.
6192
6193 Can also be used as a |method|: >
6194 GetBuffer()->prompt_getprompt()
6195
6196< {only available when compiled with the |+channel| feature}
6197
6198
6199prompt_setcallback({buf}, {expr}) *prompt_setcallback()*
6200 Set prompt callback for buffer {buf} to {expr}. When {expr}
6201 is an empty string the callback is removed. This has only
6202 effect if {buf} has 'buftype' set to "prompt".
6203
6204 The callback is invoked when pressing Enter. The current
6205 buffer will always be the prompt buffer. A new line for a
6206 prompt is added before invoking the callback, thus the prompt
6207 for which the callback was invoked will be in the last but one
6208 line.
6209 If the callback wants to add text to the buffer, it must
6210 insert it above the last line, since that is where the current
6211 prompt is. This can also be done asynchronously.
6212 The callback is invoked with one argument, which is the text
6213 that was entered at the prompt. This can be an empty string
6214 if the user only typed Enter.
6215 Example: >
6216 call prompt_setcallback(bufnr(), function('s:TextEntered'))
6217 func s:TextEntered(text)
6218 if a:text == 'exit' || a:text == 'quit'
6219 stopinsert
6220 close
6221 else
6222 call append(line('$') - 1, 'Entered: "' . a:text . '"')
6223 " Reset 'modified' to allow the buffer to be closed.
6224 set nomodified
6225 endif
6226 endfunc
6227
6228< Can also be used as a |method|: >
6229 GetBuffer()->prompt_setcallback(callback)
6230
6231< {only available when compiled with the |+channel| feature}
6232
6233prompt_setinterrupt({buf}, {expr}) *prompt_setinterrupt()*
6234 Set a callback for buffer {buf} to {expr}. When {expr} is an
6235 empty string the callback is removed. This has only effect if
6236 {buf} has 'buftype' set to "prompt".
6237
6238 This callback will be invoked when pressing CTRL-C in Insert
6239 mode. Without setting a callback Vim will exit Insert mode,
6240 as in any buffer.
6241
6242 Can also be used as a |method|: >
6243 GetBuffer()->prompt_setinterrupt(callback)
6244
6245< {only available when compiled with the |+channel| feature}
6246
6247prompt_setprompt({buf}, {text}) *prompt_setprompt()*
6248 Set prompt for buffer {buf} to {text}. You most likely want
6249 {text} to end in a space.
6250 The result is only visible if {buf} has 'buftype' set to
6251 "prompt". Example: >
6252 call prompt_setprompt(bufnr(), 'command: ')
6253<
6254 Can also be used as a |method|: >
6255 GetBuffer()->prompt_setprompt('command: ')
6256
6257< {only available when compiled with the |+channel| feature}
6258
6259prop_ functions are documented here: |text-prop-functions|
6260
6261pum_getpos() *pum_getpos()*
6262 If the popup menu (see |ins-completion-menu|) is not visible,
6263 returns an empty |Dictionary|, otherwise, returns a
6264 |Dictionary| with the following keys:
6265 height nr of items visible
6266 width screen cells
6267 row top screen row (0 first row)
6268 col leftmost screen column (0 first col)
6269 size total nr of items
6270 scrollbar |TRUE| if scrollbar is visible
6271
6272 The values are the same as in |v:event| during
6273 |CompleteChanged|.
6274
6275pumvisible() *pumvisible()*
6276 Returns non-zero when the popup menu is visible, zero
6277 otherwise. See |ins-completion-menu|.
6278 This can be used to avoid some things that would remove the
6279 popup menu.
6280
6281py3eval({expr}) *py3eval()*
6282 Evaluate Python expression {expr} and return its result
6283 converted to Vim data structures.
6284 Numbers and strings are returned as they are (strings are
6285 copied though, Unicode strings are additionally converted to
6286 'encoding').
6287 Lists are represented as Vim |List| type.
6288 Dictionaries are represented as Vim |Dictionary| type with
6289 keys converted to strings.
6290 Note that in a `:def` function local variables are not visible
6291 to {expr}.
6292
6293 Can also be used as a |method|: >
6294 GetExpr()->py3eval()
6295
6296< {only available when compiled with the |+python3| feature}
6297
6298 *E858* *E859*
6299pyeval({expr}) *pyeval()*
6300 Evaluate Python expression {expr} and return its result
6301 converted to Vim data structures.
6302 Numbers and strings are returned as they are (strings are
6303 copied though).
6304 Lists are represented as Vim |List| type.
6305 Dictionaries are represented as Vim |Dictionary| type,
6306 non-string keys result in error.
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()->pyeval()
6312
6313< {only available when compiled with the |+python| feature}
6314
6315pyxeval({expr}) *pyxeval()*
6316 Evaluate Python expression {expr} and return its result
6317 converted to Vim data structures.
6318 Uses Python 2 or 3, see |python_x| and 'pyxversion'.
6319 See also: |pyeval()|, |py3eval()|
6320
6321 Can also be used as a |method|: >
6322 GetExpr()->pyxeval()
6323
6324< {only available when compiled with the |+python| or the
6325 |+python3| feature}
6326
6327rand([{expr}]) *rand()* *random*
6328 Return a pseudo-random Number generated with an xoshiro128**
6329 algorithm using seed {expr}. The returned number is 32 bits,
6330 also on 64 bits systems, for consistency.
6331 {expr} can be initialized by |srand()| and will be updated by
6332 rand(). If {expr} is omitted, an internal seed value is used
6333 and updated.
6334
6335 Examples: >
6336 :echo rand()
6337 :let seed = srand()
6338 :echo rand(seed)
6339 :echo rand(seed) % 16 " random number 0 - 15
6340<
6341
6342 *E726* *E727*
6343range({expr} [, {max} [, {stride}]]) *range()*
6344 Returns a |List| with Numbers:
6345 - If only {expr} is specified: [0, 1, ..., {expr} - 1]
6346 - If {max} is specified: [{expr}, {expr} + 1, ..., {max}]
6347 - If {stride} is specified: [{expr}, {expr} + {stride}, ...,
6348 {max}] (increasing {expr} with {stride} each time, not
6349 producing a value past {max}).
6350 When the maximum is one before the start the result is an
6351 empty list. When the maximum is more than one before the
6352 start this is an error.
6353 Examples: >
6354 range(4) " [0, 1, 2, 3]
6355 range(2, 4) " [2, 3, 4]
6356 range(2, 9, 3) " [2, 5, 8]
6357 range(2, -2, -1) " [2, 1, 0, -1, -2]
6358 range(0) " []
6359 range(2, 0) " error!
6360<
6361 Can also be used as a |method|: >
6362 GetExpr()->range()
6363<
6364
6365readblob({fname}) *readblob()*
6366 Read file {fname} in binary mode and return a |Blob|.
6367 When the file can't be opened an error message is given and
6368 the result is an empty |Blob|.
6369 Also see |readfile()| and |writefile()|.
6370
6371
6372readdir({directory} [, {expr} [, {dict}]]) *readdir()*
6373 Return a list with file and directory names in {directory}.
6374 You can also use |glob()| if you don't need to do complicated
6375 things, such as limiting the number of matches.
6376 The list will be sorted (case sensitive), see the {dict}
6377 argument below for changing the sort order.
6378
6379 When {expr} is omitted all entries are included.
6380 When {expr} is given, it is evaluated to check what to do:
6381 If {expr} results in -1 then no further entries will
6382 be handled.
6383 If {expr} results in 0 then this entry will not be
6384 added to the list.
6385 If {expr} results in 1 then this entry will be added
6386 to the list.
6387 The entries "." and ".." are always excluded.
6388 Each time {expr} is evaluated |v:val| is set to the entry name.
6389 When {expr} is a function the name is passed as the argument.
6390 For example, to get a list of files ending in ".txt": >
6391 readdir(dirname, {n -> n =~ '.txt$'})
6392< To skip hidden and backup files: >
6393 readdir(dirname, {n -> n !~ '^\.\|\~$'})
6394
6395< The optional {dict} argument allows for further custom
6396 values. Currently this is used to specify if and how sorting
6397 should be performed. The dict can have the following members:
6398
6399 sort How to sort the result returned from the system.
6400 Valid values are:
6401 "none" do not sort (fastest method)
6402 "case" sort case sensitive (byte value of
6403 each character, technically, using
6404 strcmp()) (default)
6405 "icase" sort case insensitive (technically
6406 using strcasecmp())
6407 "collate" sort using the collation order
6408 of the "POSIX" or "C" |locale|
6409 (technically using strcoll())
6410 Other values are silently ignored.
6411
6412 For example, to get a list of all files in the current
6413 directory without sorting the individual entries: >
6414 readdir('.', '1', #{sort: 'none'})
6415< If you want to get a directory tree: >
6416 function! s:tree(dir)
6417 return {a:dir : map(readdir(a:dir),
6418 \ {_, x -> isdirectory(x) ?
6419 \ {x : s:tree(a:dir . '/' . x)} : x})}
6420 endfunction
6421 echo s:tree(".")
6422<
6423 Can also be used as a |method|: >
6424 GetDirName()->readdir()
6425<
6426readdirex({directory} [, {expr} [, {dict}]]) *readdirex()*
6427 Extended version of |readdir()|.
6428 Return a list of Dictionaries with file and directory
6429 information in {directory}.
6430 This is useful if you want to get the attributes of file and
6431 directory at the same time as getting a list of a directory.
6432 This is much faster than calling |readdir()| then calling
6433 |getfperm()|, |getfsize()|, |getftime()| and |getftype()| for
6434 each file and directory especially on MS-Windows.
6435 The list will by default be sorted by name (case sensitive),
6436 the sorting can be changed by using the optional {dict}
6437 argument, see |readdir()|.
6438
6439 The Dictionary for file and directory information has the
6440 following items:
6441 group Group name of the entry. (Only on Unix)
6442 name Name of the entry.
6443 perm Permissions of the entry. See |getfperm()|.
6444 size Size of the entry. See |getfsize()|.
6445 time Timestamp of the entry. See |getftime()|.
6446 type Type of the entry.
6447 On Unix, almost same as |getftype()| except:
6448 Symlink to a dir "linkd"
6449 Other symlink "link"
6450 On MS-Windows:
6451 Normal file "file"
6452 Directory "dir"
6453 Junction "junction"
6454 Symlink to a dir "linkd"
6455 Other symlink "link"
6456 Other reparse point "reparse"
6457 user User name of the entry's owner. (Only on Unix)
6458 On Unix, if the entry is a symlink, the Dictionary includes
6459 the information of the target (except the "type" item).
6460 On MS-Windows, it includes the information of the symlink
6461 itself because of performance reasons.
6462
6463 When {expr} is omitted all entries are included.
6464 When {expr} is given, it is evaluated to check what to do:
6465 If {expr} results in -1 then no further entries will
6466 be handled.
6467 If {expr} results in 0 then this entry will not be
6468 added to the list.
6469 If {expr} results in 1 then this entry will be added
6470 to the list.
6471 The entries "." and ".." are always excluded.
6472 Each time {expr} is evaluated |v:val| is set to a |Dictionary|
6473 of the entry.
6474 When {expr} is a function the entry is passed as the argument.
6475 For example, to get a list of files ending in ".txt": >
6476 readdirex(dirname, {e -> e.name =~ '.txt$'})
6477<
6478 For example, to get a list of all files in the current
6479 directory without sorting the individual entries: >
6480 readdirex(dirname, '1', #{sort: 'none'})
6481
6482<
6483 Can also be used as a |method|: >
6484 GetDirName()->readdirex()
6485<
6486
6487 *readfile()*
6488readfile({fname} [, {type} [, {max}]])
6489 Read file {fname} and return a |List|, each line of the file
6490 as an item. Lines are broken at NL characters. Macintosh
6491 files separated with CR will result in a single long line
6492 (unless a NL appears somewhere).
6493 All NUL characters are replaced with a NL character.
6494 When {type} contains "b" binary mode is used:
6495 - When the last line ends in a NL an extra empty list item is
6496 added.
6497 - No CR characters are removed.
6498 Otherwise:
6499 - CR characters that appear before a NL are removed.
6500 - Whether the last line ends in a NL or not does not matter.
6501 - When 'encoding' is Unicode any UTF-8 byte order mark is
6502 removed from the text.
6503 When {max} is given this specifies the maximum number of lines
6504 to be read. Useful if you only want to check the first ten
6505 lines of a file: >
6506 :for line in readfile(fname, '', 10)
6507 : if line =~ 'Date' | echo line | endif
6508 :endfor
6509< When {max} is negative -{max} lines from the end of the file
6510 are returned, or as many as there are.
6511 When {max} is zero the result is an empty list.
6512 Note that without {max} the whole file is read into memory.
6513 Also note that there is no recognition of encoding. Read a
6514 file into a buffer if you need to.
6515 Deprecated (use |readblob()| instead): When {type} contains
6516 "B" a |Blob| is returned with the binary data of the file
6517 unmodified.
6518 When the file can't be opened an error message is given and
6519 the result is an empty list.
6520 Also see |writefile()|.
6521
6522 Can also be used as a |method|: >
6523 GetFileName()->readfile()
6524
6525reduce({object}, {func} [, {initial}]) *reduce()* *E998*
6526 {func} is called for every item in {object}, which can be a
6527 |String|, |List| or a |Blob|. {func} is called with two
6528 arguments: the result so far and current item. After
6529 processing all items the result is returned.
6530
6531 {initial} is the initial result. When omitted, the first item
6532 in {object} is used and {func} is first called for the second
6533 item. If {initial} is not given and {object} is empty no
6534 result can be computed, an E998 error is given.
6535
6536 Examples: >
6537 echo reduce([1, 3, 5], { acc, val -> acc + val })
6538 echo reduce(['x', 'y'], { acc, val -> acc .. val }, 'a')
6539 echo reduce(0z1122, { acc, val -> 2 * acc + val })
6540 echo reduce('xyz', { acc, val -> acc .. ',' .. val })
6541<
6542 Can also be used as a |method|: >
6543 echo mylist->reduce({ acc, val -> acc + val }, 0)
6544
6545
6546reg_executing() *reg_executing()*
6547 Returns the single letter name of the register being executed.
6548 Returns an empty string when no register is being executed.
6549 See |@|.
6550
6551reg_recording() *reg_recording()*
6552 Returns the single letter name of the register being recorded.
6553 Returns an empty string when not recording. See |q|.
6554
6555reltime([{start} [, {end}]]) *reltime()*
6556 Return an item that represents a time value. The item is a
6557 list with items that depend on the system. In Vim 9 script
6558 list<any> can be used.
6559 The item can be passed to |reltimestr()| to convert it to a
6560 string or |reltimefloat()| to convert to a Float.
6561
6562 Without an argument reltime() returns the current time.
6563 With one argument is returns the time passed since the time
6564 specified in the argument.
6565 With two arguments it returns the time passed between {start}
6566 and {end}.
6567
6568 The {start} and {end} arguments must be values returned by
6569 reltime(). If there is an error zero is returned in legacy
6570 script, in Vim9 script an error is given.
6571
6572 Can also be used as a |method|: >
6573 GetStart()->reltime()
6574<
6575 {only available when compiled with the |+reltime| feature}
6576
6577reltimefloat({time}) *reltimefloat()*
6578 Return a Float that represents the time value of {time}.
6579 Example: >
6580 let start = reltime()
6581 call MyFunction()
6582 let seconds = reltimefloat(reltime(start))
6583< See the note of reltimestr() about overhead.
6584 Also see |profiling|.
6585 If there is an error 0.0 is returned in legacy script, in Vim9
6586 script an error is given.
6587
6588 Can also be used as a |method|: >
6589 reltime(start)->reltimefloat()
6590
6591< {only available when compiled with the |+reltime| feature}
6592
6593reltimestr({time}) *reltimestr()*
6594 Return a String that represents the time value of {time}.
6595 This is the number of seconds, a dot and the number of
6596 microseconds. Example: >
6597 let start = reltime()
6598 call MyFunction()
6599 echo reltimestr(reltime(start))
6600< Note that overhead for the commands will be added to the time.
6601 The accuracy depends on the system.
6602 Leading spaces are used to make the string align nicely. You
6603 can use split() to remove it. >
6604 echo split(reltimestr(reltime(start)))[0]
6605< Also see |profiling|.
6606 If there is an error an empty string is returned in legacy
6607 script, in Vim9 script an error is given.
6608
6609 Can also be used as a |method|: >
6610 reltime(start)->reltimestr()
6611
6612< {only available when compiled with the |+reltime| feature}
6613
6614 *remote_expr()* *E449*
6615remote_expr({server}, {string} [, {idvar} [, {timeout}]])
6616 Send the {string} to {server}. The string is sent as an
6617 expression and the result is returned after evaluation.
6618 The result must be a String or a |List|. A |List| is turned
6619 into a String by joining the items with a line break in
6620 between (not at the end), like with join(expr, "\n").
6621 If {idvar} is present and not empty, it is taken as the name
6622 of a variable and a {serverid} for later use with
6623 |remote_read()| is stored there.
6624 If {timeout} is given the read times out after this many
6625 seconds. Otherwise a timeout of 600 seconds is used.
6626 See also |clientserver| |RemoteReply|.
6627 This function is not available in the |sandbox|.
6628 {only available when compiled with the |+clientserver| feature}
6629 Note: Any errors will cause a local error message to be issued
6630 and the result will be the empty string.
6631
6632 Variables will be evaluated in the global namespace,
6633 independent of a function currently being active. Except
6634 when in debug mode, then local function variables and
6635 arguments can be evaluated.
6636
6637 Examples: >
6638 :echo remote_expr("gvim", "2+2")
6639 :echo remote_expr("gvim1", "b:current_syntax")
6640<
6641 Can also be used as a |method|: >
6642 ServerName()->remote_expr(expr)
6643
6644remote_foreground({server}) *remote_foreground()*
6645 Move the Vim server with the name {server} to the foreground.
6646 The {server} argument is a string.
6647 This works like: >
6648 remote_expr({server}, "foreground()")
6649< Except that on Win32 systems the client does the work, to work
6650 around the problem that the OS doesn't always allow the server
6651 to bring itself to the foreground.
6652 Note: This does not restore the window if it was minimized,
6653 like foreground() does.
6654 This function is not available in the |sandbox|.
6655
6656 Can also be used as a |method|: >
6657 ServerName()->remote_foreground()
6658
6659< {only in the Win32, Athena, Motif and GTK GUI versions and the
6660 Win32 console version}
6661
6662
6663remote_peek({serverid} [, {retvar}]) *remote_peek()*
6664 Returns a positive number if there are available strings
6665 from {serverid}. Copies any reply string into the variable
6666 {retvar} if specified. {retvar} must be a string with the
6667 name of a variable.
6668 Returns zero if none are available.
6669 Returns -1 if something is wrong.
6670 See also |clientserver|.
6671 This function is not available in the |sandbox|.
6672 {only available when compiled with the |+clientserver| feature}
6673 Examples: >
6674 :let repl = ""
6675 :echo "PEEK: ".remote_peek(id, "repl").": ".repl
6676
6677< Can also be used as a |method|: >
6678 ServerId()->remote_peek()
6679
6680remote_read({serverid}, [{timeout}]) *remote_read()*
6681 Return the oldest available reply from {serverid} and consume
6682 it. Unless a {timeout} in seconds is given, it blocks until a
6683 reply is available.
6684 See also |clientserver|.
6685 This function is not available in the |sandbox|.
6686 {only available when compiled with the |+clientserver| feature}
6687 Example: >
6688 :echo remote_read(id)
6689
6690< Can also be used as a |method|: >
6691 ServerId()->remote_read()
6692<
6693 *remote_send()* *E241*
6694remote_send({server}, {string} [, {idvar}])
6695 Send the {string} to {server}. The string is sent as input
6696 keys and the function returns immediately. At the Vim server
6697 the keys are not mapped |:map|.
6698 If {idvar} is present, it is taken as the name of a variable
6699 and a {serverid} for later use with remote_read() is stored
6700 there.
6701 See also |clientserver| |RemoteReply|.
6702 This function is not available in the |sandbox|.
6703 {only available when compiled with the |+clientserver| feature}
6704
6705 Note: Any errors will be reported in the server and may mess
6706 up the display.
6707 Examples: >
6708 :echo remote_send("gvim", ":DropAndReply ".file, "serverid").
6709 \ remote_read(serverid)
6710
6711 :autocmd NONE RemoteReply *
6712 \ echo remote_read(expand("<amatch>"))
6713 :echo remote_send("gvim", ":sleep 10 | echo ".
6714 \ 'server2client(expand("<client>"), "HELLO")<CR>')
6715<
6716 Can also be used as a |method|: >
6717 ServerName()->remote_send(keys)
6718<
6719 *remote_startserver()* *E941* *E942*
6720remote_startserver({name})
6721 Become the server {name}. This fails if already running as a
6722 server, when |v:servername| is not empty.
6723
6724 Can also be used as a |method|: >
6725 ServerName()->remote_startserver()
6726
6727< {only available when compiled with the |+clientserver| feature}
6728
6729remove({list}, {idx} [, {end}]) *remove()*
6730 Without {end}: Remove the item at {idx} from |List| {list} and
6731 return the item.
6732 With {end}: Remove items from {idx} to {end} (inclusive) and
6733 return a |List| with these items. When {idx} points to the same
6734 item as {end} a list with one item is returned. When {end}
6735 points to an item before {idx} this is an error.
6736 See |list-index| for possible values of {idx} and {end}.
6737 Example: >
6738 :echo "last item: " . remove(mylist, -1)
6739 :call remove(mylist, 0, 9)
6740<
6741 Use |delete()| to remove a file.
6742
6743 Can also be used as a |method|: >
6744 mylist->remove(idx)
6745
6746remove({blob}, {idx} [, {end}])
6747 Without {end}: Remove the byte at {idx} from |Blob| {blob} and
6748 return the byte.
6749 With {end}: Remove bytes from {idx} to {end} (inclusive) and
6750 return a |Blob| with these bytes. When {idx} points to the same
6751 byte as {end} a |Blob| with one byte is returned. When {end}
6752 points to a byte before {idx} this is an error.
6753 Example: >
6754 :echo "last byte: " . remove(myblob, -1)
6755 :call remove(mylist, 0, 9)
6756
6757remove({dict}, {key})
6758 Remove the entry from {dict} with key {key} and return it.
6759 Example: >
6760 :echo "removed " . remove(dict, "one")
6761< If there is no {key} in {dict} this is an error.
6762
6763rename({from}, {to}) *rename()*
6764 Rename the file by the name {from} to the name {to}. This
6765 should also work to move files across file systems. The
6766 result is a Number, which is 0 if the file was renamed
6767 successfully, and non-zero when the renaming failed.
6768 NOTE: If {to} exists it is overwritten without warning.
6769 This function is not available in the |sandbox|.
6770
6771 Can also be used as a |method|: >
6772 GetOldName()->rename(newname)
6773
6774repeat({expr}, {count}) *repeat()*
6775 Repeat {expr} {count} times and return the concatenated
6776 result. Example: >
6777 :let separator = repeat('-', 80)
6778< When {count} is zero or negative the result is empty.
6779 When {expr} is a |List| the result is {expr} concatenated
6780 {count} times. Example: >
6781 :let longlist = repeat(['a', 'b'], 3)
6782< Results in ['a', 'b', 'a', 'b', 'a', 'b'].
6783
6784 Can also be used as a |method|: >
6785 mylist->repeat(count)
6786
6787resolve({filename}) *resolve()* *E655*
6788 On MS-Windows, when {filename} is a shortcut (a .lnk file),
6789 returns the path the shortcut points to in a simplified form.
6790 When {filename} is a symbolic link or junction point, return
6791 the full path to the target. If the target of junction is
6792 removed, return {filename}.
6793 On Unix, repeat resolving symbolic links in all path
6794 components of {filename} and return the simplified result.
6795 To cope with link cycles, resolving of symbolic links is
6796 stopped after 100 iterations.
6797 On other systems, return the simplified {filename}.
6798 The simplification step is done as by |simplify()|.
6799 resolve() keeps a leading path component specifying the
6800 current directory (provided the result is still a relative
6801 path name) and also keeps a trailing path separator.
6802
6803 Can also be used as a |method|: >
6804 GetName()->resolve()
6805
6806reverse({object}) *reverse()*
6807 Reverse the order of items in {object} in-place.
6808 {object} can be a |List| or a |Blob|.
6809 Returns {object}.
6810 If you want an object to remain unmodified make a copy first: >
6811 :let revlist = reverse(copy(mylist))
6812< Can also be used as a |method|: >
6813 mylist->reverse()
6814
6815round({expr}) *round()*
6816 Round off {expr} to the nearest integral value and return it
6817 as a |Float|. If {expr} lies halfway between two integral
6818 values, then use the larger one (away from zero).
6819 {expr} must evaluate to a |Float| or a |Number|.
6820 Examples: >
6821 echo round(0.456)
6822< 0.0 >
6823 echo round(4.5)
6824< 5.0 >
6825 echo round(-4.5)
6826< -5.0
6827
6828 Can also be used as a |method|: >
6829 Compute()->round()
6830<
6831 {only available when compiled with the |+float| feature}
6832
6833rubyeval({expr}) *rubyeval()*
6834 Evaluate Ruby expression {expr} and return its result
6835 converted to Vim data structures.
6836 Numbers, floats and strings are returned as they are (strings
6837 are copied though).
6838 Arrays are represented as Vim |List| type.
6839 Hashes are represented as Vim |Dictionary| type.
6840 Other objects are represented as strings resulted from their
6841 "Object#to_s" method.
6842 Note that in a `:def` function local variables are not visible
6843 to {expr}.
6844
6845 Can also be used as a |method|: >
6846 GetRubyExpr()->rubyeval()
6847
6848< {only available when compiled with the |+ruby| feature}
6849
6850screenattr({row}, {col}) *screenattr()*
6851 Like |screenchar()|, but return the attribute. This is a rather
6852 arbitrary number that can only be used to compare to the
6853 attribute at other positions.
6854
6855 Can also be used as a |method|: >
6856 GetRow()->screenattr(col)
6857
6858screenchar({row}, {col}) *screenchar()*
6859 The result is a Number, which is the character at position
6860 [row, col] on the screen. This works for every possible
6861 screen position, also status lines, window separators and the
6862 command line. The top left position is row one, column one
6863 The character excludes composing characters. For double-byte
6864 encodings it may only be the first byte.
6865 This is mainly to be used for testing.
6866 Returns -1 when row or col is out of range.
6867
6868 Can also be used as a |method|: >
6869 GetRow()->screenchar(col)
6870
6871screenchars({row}, {col}) *screenchars()*
6872 The result is a |List| of Numbers. The first number is the same
6873 as what |screenchar()| returns. Further numbers are
6874 composing characters on top of the base character.
6875 This is mainly to be used for testing.
6876 Returns an empty List when row or col is out of range.
6877
6878 Can also be used as a |method|: >
6879 GetRow()->screenchars(col)
6880
6881screencol() *screencol()*
6882 The result is a Number, which is the current screen column of
6883 the cursor. The leftmost column has number 1.
6884 This function is mainly used for testing.
6885
6886 Note: Always returns the current screen column, thus if used
6887 in a command (e.g. ":echo screencol()") it will return the
6888 column inside the command line, which is 1 when the command is
6889 executed. To get the cursor position in the file use one of
6890 the following mappings: >
6891 nnoremap <expr> GG ":echom ".screencol()."\n"
6892 nnoremap <silent> GG :echom screencol()<CR>
6893 nnoremap GG <Cmd>echom screencol()<CR>
6894<
6895screenpos({winid}, {lnum}, {col}) *screenpos()*
6896 The result is a Dict with the screen position of the text
6897 character in window {winid} at buffer line {lnum} and column
6898 {col}. {col} is a one-based byte index.
6899 The Dict has these members:
6900 row screen row
6901 col first screen column
6902 endcol last screen column
6903 curscol cursor screen column
6904 If the specified position is not visible, all values are zero.
6905 The "endcol" value differs from "col" when the character
6906 occupies more than one screen cell. E.g. for a Tab "col" can
6907 be 1 and "endcol" can be 8.
6908 The "curscol" value is where the cursor would be placed. For
6909 a Tab it would be the same as "endcol", while for a double
6910 width character it would be the same as "col".
6911 The |conceal| feature is ignored here, the column numbers are
6912 as if 'conceallevel' is zero. You can set the cursor to the
6913 right position and use |screencol()| to get the value with
6914 |conceal| taken into account.
6915
6916 Can also be used as a |method|: >
6917 GetWinid()->screenpos(lnum, col)
6918
6919screenrow() *screenrow()*
6920 The result is a Number, which is the current screen row of the
6921 cursor. The top line has number one.
6922 This function is mainly used for testing.
6923 Alternatively you can use |winline()|.
6924
6925 Note: Same restrictions as with |screencol()|.
6926
6927screenstring({row}, {col}) *screenstring()*
6928 The result is a String that contains the base character and
6929 any composing characters at position [row, col] on the screen.
6930 This is like |screenchars()| but returning a String with the
6931 characters.
6932 This is mainly to be used for testing.
6933 Returns an empty String when row or col is out of range.
6934
6935 Can also be used as a |method|: >
6936 GetRow()->screenstring(col)
6937<
6938 *search()*
6939search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
6940 Search for regexp pattern {pattern}. The search starts at the
6941 cursor position (you can use |cursor()| to set it).
6942
6943 When a match has been found its line number is returned.
6944 If there is no match a 0 is returned and the cursor doesn't
6945 move. No error message is given.
6946
6947 {flags} is a String, which can contain these character flags:
6948 'b' search Backward instead of forward
6949 'c' accept a match at the Cursor position
6950 'e' move to the End of the match
6951 'n' do Not move the cursor
6952 'p' return number of matching sub-Pattern (see below)
6953 's' Set the ' mark at the previous location of the cursor
6954 'w' Wrap around the end of the file
6955 'W' don't Wrap around the end of the file
6956 'z' start searching at the cursor column instead of zero
6957 If neither 'w' or 'W' is given, the 'wrapscan' option applies.
6958
6959 If the 's' flag is supplied, the ' mark is set, only if the
6960 cursor is moved. The 's' flag cannot be combined with the 'n'
6961 flag.
6962
6963 'ignorecase', 'smartcase' and 'magic' are used.
6964
6965 When the 'z' flag is not given, forward searching always
6966 starts in column zero and then matches before the cursor are
6967 skipped. When the 'c' flag is present in 'cpo' the next
6968 search starts after the match. Without the 'c' flag the next
6969 search starts one column further. This matters for
6970 overlapping matches.
6971 When searching backwards and the 'z' flag is given then the
6972 search starts in column zero, thus no match in the current
6973 line will be found (unless wrapping around the end of the
6974 file).
6975
6976 When the {stopline} argument is given then the search stops
6977 after searching this line. This is useful to restrict the
6978 search to a range of lines. Examples: >
6979 let match = search('(', 'b', line("w0"))
6980 let end = search('END', '', line("w$"))
6981< When {stopline} is used and it is not zero this also implies
6982 that the search does not wrap around the end of the file.
6983 A zero value is equal to not giving the argument.
6984
6985 When the {timeout} argument is given the search stops when
6986 more than this many milliseconds have passed. Thus when
6987 {timeout} is 500 the search stops after half a second.
6988 The value must not be negative. A zero value is like not
6989 giving the argument.
6990 {only available when compiled with the |+reltime| feature}
6991
6992 If the {skip} expression is given it is evaluated with the
6993 cursor positioned on the start of a match. If it evaluates to
6994 non-zero this match is skipped. This can be used, for
6995 example, to skip a match in a comment or a string.
6996 {skip} can be a string, which is evaluated as an expression, a
6997 function reference or a lambda.
6998 When {skip} is omitted or empty, every match is accepted.
6999 When evaluating {skip} causes an error the search is aborted
7000 and -1 returned.
7001 *search()-sub-match*
7002 With the 'p' flag the returned value is one more than the
7003 first sub-match in \(\). One if none of them matched but the
7004 whole pattern did match.
7005 To get the column number too use |searchpos()|.
7006
7007 The cursor will be positioned at the match, unless the 'n'
7008 flag is used.
7009
7010 Example (goes over all files in the argument list): >
7011 :let n = 1
7012 :while n <= argc() " loop over all files in arglist
7013 : exe "argument " . n
7014 : " start at the last char in the file and wrap for the
7015 : " first search to find match at start of file
7016 : normal G$
7017 : let flags = "w"
7018 : while search("foo", flags) > 0
7019 : s/foo/bar/g
7020 : let flags = "W"
7021 : endwhile
7022 : update " write the file if modified
7023 : let n = n + 1
7024 :endwhile
7025<
7026 Example for using some flags: >
7027 :echo search('\<if\|\(else\)\|\(endif\)', 'ncpe')
7028< This will search for the keywords "if", "else", and "endif"
7029 under or after the cursor. Because of the 'p' flag, it
7030 returns 1, 2, or 3 depending on which keyword is found, or 0
7031 if the search fails. With the cursor on the first word of the
7032 line:
7033 if (foo == 0) | let foo = foo + 1 | endif ~
7034 the function returns 1. Without the 'c' flag, the function
7035 finds the "endif" and returns 3. The same thing happens
7036 without the 'e' flag if the cursor is on the "f" of "if".
7037 The 'n' flag tells the function not to move the cursor.
7038
7039 Can also be used as a |method|: >
7040 GetPattern()->search()
7041
7042searchcount([{options}]) *searchcount()*
7043 Get or update the last search count, like what is displayed
7044 without the "S" flag in 'shortmess'. This works even if
7045 'shortmess' does contain the "S" flag.
7046
7047 This returns a |Dictionary|. The dictionary is empty if the
7048 previous pattern was not set and "pattern" was not specified.
7049
7050 key type meaning ~
7051 current |Number| current position of match;
7052 0 if the cursor position is
7053 before the first match
7054 exact_match |Boolean| 1 if "current" is matched on
7055 "pos", otherwise 0
7056 total |Number| total count of matches found
7057 incomplete |Number| 0: search was fully completed
7058 1: recomputing was timed out
7059 2: max count exceeded
7060
7061 For {options} see further down.
7062
7063 To get the last search count when |n| or |N| was pressed, call
7064 this function with `recompute: 0` . This sometimes returns
7065 wrong information because |n| and |N|'s maximum count is 99.
7066 If it exceeded 99 the result must be max count + 1 (100). If
7067 you want to get correct information, specify `recompute: 1`: >
7068
7069 " result == maxcount + 1 (100) when many matches
7070 let result = searchcount(#{recompute: 0})
7071
7072 " Below returns correct result (recompute defaults
7073 " to 1)
7074 let result = searchcount()
7075<
7076 The function is useful to add the count to |statusline|: >
7077 function! LastSearchCount() abort
7078 let result = searchcount(#{recompute: 0})
7079 if empty(result)
7080 return ''
7081 endif
7082 if result.incomplete ==# 1 " timed out
7083 return printf(' /%s [?/??]', @/)
7084 elseif result.incomplete ==# 2 " max count exceeded
7085 if result.total > result.maxcount &&
7086 \ result.current > result.maxcount
7087 return printf(' /%s [>%d/>%d]', @/,
7088 \ result.current, result.total)
7089 elseif result.total > result.maxcount
7090 return printf(' /%s [%d/>%d]', @/,
7091 \ result.current, result.total)
7092 endif
7093 endif
7094 return printf(' /%s [%d/%d]', @/,
7095 \ result.current, result.total)
7096 endfunction
7097 let &statusline .= '%{LastSearchCount()}'
7098
7099 " Or if you want to show the count only when
7100 " 'hlsearch' was on
7101 " let &statusline .=
7102 " \ '%{v:hlsearch ? LastSearchCount() : ""}'
7103<
7104 You can also update the search count, which can be useful in a
7105 |CursorMoved| or |CursorMovedI| autocommand: >
7106
7107 autocmd CursorMoved,CursorMovedI *
7108 \ let s:searchcount_timer = timer_start(
7109 \ 200, function('s:update_searchcount'))
7110 function! s:update_searchcount(timer) abort
7111 if a:timer ==# s:searchcount_timer
7112 call searchcount(#{
7113 \ recompute: 1, maxcount: 0, timeout: 100})
7114 redrawstatus
7115 endif
7116 endfunction
7117<
7118 This can also be used to count matched texts with specified
7119 pattern in the current buffer using "pattern": >
7120
7121 " Count '\<foo\>' in this buffer
7122 " (Note that it also updates search count)
7123 let result = searchcount(#{pattern: '\<foo\>'})
7124
7125 " To restore old search count by old pattern,
7126 " search again
7127 call searchcount()
7128<
7129 {options} must be a |Dictionary|. It can contain:
7130 key type meaning ~
7131 recompute |Boolean| if |TRUE|, recompute the count
7132 like |n| or |N| was executed.
7133 otherwise returns the last
7134 computed result (when |n| or
7135 |N| was used when "S" is not
7136 in 'shortmess', or this
7137 function was called).
7138 (default: |TRUE|)
7139 pattern |String| recompute if this was given
7140 and different with |@/|.
7141 this works as same as the
7142 below command is executed
7143 before calling this function >
7144 let @/ = pattern
7145< (default: |@/|)
7146 timeout |Number| 0 or negative number is no
7147 timeout. timeout milliseconds
7148 for recomputing the result
7149 (default: 0)
7150 maxcount |Number| 0 or negative number is no
7151 limit. max count of matched
7152 text while recomputing the
7153 result. if search exceeded
7154 total count, "total" value
7155 becomes `maxcount + 1`
7156 (default: 99)
7157 pos |List| `[lnum, col, off]` value
7158 when recomputing the result.
7159 this changes "current" result
7160 value. see |cursor()|,
7161 |getpos()|
7162 (default: cursor's position)
7163
7164 Can also be used as a |method|: >
7165 GetSearchOpts()->searchcount()
7166<
7167searchdecl({name} [, {global} [, {thisblock}]]) *searchdecl()*
7168 Search for the declaration of {name}.
7169
7170 With a non-zero {global} argument it works like |gD|, find
7171 first match in the file. Otherwise it works like |gd|, find
7172 first match in the function.
7173
7174 With a non-zero {thisblock} argument matches in a {} block
7175 that ends before the cursor position are ignored. Avoids
7176 finding variable declarations only valid in another scope.
7177
7178 Moves the cursor to the found match.
7179 Returns zero for success, non-zero for failure.
7180 Example: >
7181 if searchdecl('myvar') == 0
7182 echo getline('.')
7183 endif
7184<
7185 Can also be used as a |method|: >
7186 GetName()->searchdecl()
7187<
7188 *searchpair()*
7189searchpair({start}, {middle}, {end} [, {flags} [, {skip}
7190 [, {stopline} [, {timeout}]]]])
7191 Search for the match of a nested start-end pair. This can be
7192 used to find the "endif" that matches an "if", while other
7193 if/endif pairs in between are ignored.
7194 The search starts at the cursor. The default is to search
7195 forward, include 'b' in {flags} to search backward.
7196 If a match is found, the cursor is positioned at it and the
7197 line number is returned. If no match is found 0 or -1 is
7198 returned and the cursor doesn't move. No error message is
7199 given.
7200
7201 {start}, {middle} and {end} are patterns, see |pattern|. They
7202 must not contain \( \) pairs. Use of \%( \) is allowed. When
7203 {middle} is not empty, it is found when searching from either
7204 direction, but only when not in a nested start-end pair. A
7205 typical use is: >
7206 searchpair('\<if\>', '\<else\>', '\<endif\>')
7207< By leaving {middle} empty the "else" is skipped.
7208
7209 {flags} 'b', 'c', 'n', 's', 'w' and 'W' are used like with
7210 |search()|. Additionally:
7211 'r' Repeat until no more matches found; will find the
7212 outer pair. Implies the 'W' flag.
7213 'm' Return number of matches instead of line number with
7214 the match; will be > 1 when 'r' is used.
7215 Note: it's nearly always a good idea to use the 'W' flag, to
7216 avoid wrapping around the end of the file.
7217
7218 When a match for {start}, {middle} or {end} is found, the
7219 {skip} expression is evaluated with the cursor positioned on
7220 the start of the match. It should return non-zero if this
7221 match is to be skipped. E.g., because it is inside a comment
7222 or a string.
7223 When {skip} is omitted or empty, every match is accepted.
7224 When evaluating {skip} causes an error the search is aborted
7225 and -1 returned.
7226 {skip} can be a string, a lambda, a funcref or a partial.
7227 Anything else makes the function fail.
7228 In a `:def` function when the {skip} argument is a string
7229 constant it is compiled into instructions.
7230
7231 For {stopline} and {timeout} see |search()|.
7232
7233 The value of 'ignorecase' is used. 'magic' is ignored, the
7234 patterns are used like it's on.
7235
7236 The search starts exactly at the cursor. A match with
7237 {start}, {middle} or {end} at the next character, in the
7238 direction of searching, is the first one found. Example: >
7239 if 1
7240 if 2
7241 endif 2
7242 endif 1
7243< When starting at the "if 2", with the cursor on the "i", and
7244 searching forwards, the "endif 2" is found. When starting on
7245 the character just before the "if 2", the "endif 1" will be
7246 found. That's because the "if 2" will be found first, and
7247 then this is considered to be a nested if/endif from "if 2" to
7248 "endif 2".
7249 When searching backwards and {end} is more than one character,
7250 it may be useful to put "\zs" at the end of the pattern, so
7251 that when the cursor is inside a match with the end it finds
7252 the matching start.
7253
7254 Example, to find the "endif" command in a Vim script: >
7255
7256 :echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W',
7257 \ 'getline(".") =~ "^\\s*\""')
7258
7259< The cursor must be at or after the "if" for which a match is
7260 to be found. Note that single-quote strings are used to avoid
7261 having to double the backslashes. The skip expression only
7262 catches comments at the start of a line, not after a command.
7263 Also, a word "en" or "if" halfway a line is considered a
7264 match.
7265 Another example, to search for the matching "{" of a "}": >
7266
7267 :echo searchpair('{', '', '}', 'bW')
7268
7269< This works when the cursor is at or before the "}" for which a
7270 match is to be found. To reject matches that syntax
7271 highlighting recognized as strings: >
7272
7273 :echo searchpair('{', '', '}', 'bW',
7274 \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
7275<
7276 *searchpairpos()*
7277searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
7278 [, {stopline} [, {timeout}]]]])
7279 Same as |searchpair()|, but returns a |List| with the line and
7280 column position of the match. The first element of the |List|
7281 is the line number and the second element is the byte index of
7282 the column position of the match. If no match is found,
7283 returns [0, 0]. >
7284
7285 :let [lnum,col] = searchpairpos('{', '', '}', 'n')
7286<
7287 See |match-parens| for a bigger and more useful example.
7288
7289 *searchpos()*
7290searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
7291 Same as |search()|, but returns a |List| with the line and
7292 column position of the match. The first element of the |List|
7293 is the line number and the second element is the byte index of
7294 the column position of the match. If no match is found,
7295 returns [0, 0].
7296 Example: >
7297 :let [lnum, col] = searchpos('mypattern', 'n')
7298
7299< When the 'p' flag is given then there is an extra item with
7300 the sub-pattern match number |search()-sub-match|. Example: >
7301 :let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np')
7302< In this example "submatch" is 2 when a lowercase letter is
7303 found |/\l|, 3 when an uppercase letter is found |/\u|.
7304
7305 Can also be used as a |method|: >
7306 GetPattern()->searchpos()
7307
7308server2client({clientid}, {string}) *server2client()*
7309 Send a reply string to {clientid}. The most recent {clientid}
7310 that sent a string can be retrieved with expand("<client>").
7311 {only available when compiled with the |+clientserver| feature}
7312 Returns zero for success, -1 for failure.
7313 Note:
7314 This id has to be stored before the next command can be
7315 received. I.e. before returning from the received command and
7316 before calling any commands that waits for input.
7317 See also |clientserver|.
7318 Example: >
7319 :echo server2client(expand("<client>"), "HELLO")
7320
7321< Can also be used as a |method|: >
7322 GetClientId()->server2client(string)
7323<
7324serverlist() *serverlist()*
7325 Return a list of available server names, one per line.
7326 When there are no servers or the information is not available
7327 an empty string is returned. See also |clientserver|.
7328 {only available when compiled with the |+clientserver| feature}
7329 Example: >
7330 :echo serverlist()
7331<
7332setbufline({buf}, {lnum}, {text}) *setbufline()*
7333 Set line {lnum} to {text} in buffer {buf}. This works like
7334 |setline()| for the specified buffer.
7335
7336 This function works only for loaded buffers. First call
7337 |bufload()| if needed.
7338
7339 To insert lines use |appendbufline()|.
7340 Any text properties in {lnum} are cleared.
7341
7342 {text} can be a string to set one line, or a list of strings
7343 to set multiple lines. If the list extends below the last
7344 line then those lines are added.
7345
7346 For the use of {buf}, see |bufname()| above.
7347
7348 {lnum} is used like with |setline()|.
7349 Use "$" to refer to the last line in buffer {buf}.
7350 When {lnum} is just below the last line the {text} will be
7351 added below the last line.
7352
7353 When {buf} is not a valid buffer, the buffer is not loaded or
7354 {lnum} is not valid then 1 is returned. In |Vim9| script an
7355 error is given.
7356 On success 0 is returned.
7357
7358 Can also be used as a |method|, the base is passed as the
7359 third argument: >
7360 GetText()->setbufline(buf, lnum)
7361
7362setbufvar({buf}, {varname}, {val}) *setbufvar()*
7363 Set option or local variable {varname} in buffer {buf} to
7364 {val}.
7365 This also works for a global or local window option, but it
7366 doesn't work for a global or local window variable.
7367 For a local window option the global value is unchanged.
7368 For the use of {buf}, see |bufname()| above.
7369 The {varname} argument is a string.
7370 Note that the variable name without "b:" must be used.
7371 Examples: >
7372 :call setbufvar(1, "&mod", 1)
7373 :call setbufvar("todo", "myvar", "foobar")
7374< This function is not available in the |sandbox|.
7375
7376 Can also be used as a |method|, the base is passed as the
7377 third argument: >
7378 GetValue()->setbufvar(buf, varname)
7379
7380
7381setcellwidths({list}) *setcellwidths()*
7382 Specify overrides for cell widths of character ranges. This
7383 tells Vim how wide characters are, counted in screen cells.
7384 This overrides 'ambiwidth'. Example: >
7385 setcellwidths([[0xad, 0xad, 1],
7386 \ [0x2194, 0x2199, 2]])
7387
7388< *E1109* *E1110* *E1111* *E1112* *E1113*
7389 The {list} argument is a list of lists with each three
7390 numbers. These three numbers are [low, high, width]. "low"
7391 and "high" can be the same, in which case this refers to one
7392 character. Otherwise it is the range of characters from "low"
7393 to "high" (inclusive). "width" is either 1 or 2, indicating
7394 the character width in screen cells.
7395 An error is given if the argument is invalid, also when a
7396 range overlaps with another.
7397 Only characters with value 0x100 and higher can be used.
7398
7399 If the new value causes 'fillchars' or 'listchars' to become
7400 invalid it is rejected and an error is given.
7401
7402 To clear the overrides pass an empty list: >
7403 setcellwidths([]);
7404< You can use the script $VIMRUNTIME/tools/emoji_list.vim to see
7405 the effect for known emoji characters.
7406
7407setcharpos({expr}, {list}) *setcharpos()*
7408 Same as |setpos()| but uses the specified column number as the
7409 character index instead of the byte index in the line.
7410
7411 Example:
7412 With the text "여보세요" in line 8: >
7413 call setcharpos('.', [0, 8, 4, 0])
7414< positions the cursor on the fourth character '요'. >
7415 call setpos('.', [0, 8, 4, 0])
7416< positions the cursor on the second character '보'.
7417
7418 Can also be used as a |method|: >
7419 GetPosition()->setcharpos('.')
7420
7421setcharsearch({dict}) *setcharsearch()*
7422 Set the current character search information to {dict},
7423 which contains one or more of the following entries:
7424
7425 char character which will be used for a subsequent
7426 |,| or |;| command; an empty string clears the
7427 character search
7428 forward direction of character search; 1 for forward,
7429 0 for backward
7430 until type of character search; 1 for a |t| or |T|
7431 character search, 0 for an |f| or |F|
7432 character search
7433
7434 This can be useful to save/restore a user's character search
7435 from a script: >
7436 :let prevsearch = getcharsearch()
7437 :" Perform a command which clobbers user's search
7438 :call setcharsearch(prevsearch)
7439< Also see |getcharsearch()|.
7440
7441 Can also be used as a |method|: >
7442 SavedSearch()->setcharsearch()
7443
7444setcmdpos({pos}) *setcmdpos()*
7445 Set the cursor position in the command line to byte position
7446 {pos}. The first position is 1.
7447 Use |getcmdpos()| to obtain the current position.
7448 Only works while editing the command line, thus you must use
7449 |c_CTRL-\_e|, |c_CTRL-R_=| or |c_CTRL-R_CTRL-R| with '='. For
7450 |c_CTRL-\_e| and |c_CTRL-R_CTRL-R| with '=' the position is
7451 set after the command line is set to the expression. For
7452 |c_CTRL-R_=| it is set after evaluating the expression but
7453 before inserting the resulting text.
7454 When the number is too big the cursor is put at the end of the
7455 line. A number smaller than one has undefined results.
7456 Returns FALSE when successful, TRUE when not editing the
7457 command line.
7458
7459 Can also be used as a |method|: >
7460 GetPos()->setcmdpos()
7461
7462setcursorcharpos({lnum}, {col} [, {off}]) *setcursorcharpos()*
7463setcursorcharpos({list})
7464 Same as |cursor()| but uses the specified column number as the
7465 character index instead of the byte index in the line.
7466
7467 Example:
7468 With the text "여보세요" in line 4: >
7469 call setcursorcharpos(4, 3)
7470< positions the cursor on the third character '세'. >
7471 call cursor(4, 3)
7472< positions the cursor on the first character '여'.
7473
7474 Can also be used as a |method|: >
7475 GetCursorPos()->setcursorcharpos()
7476
7477
7478setenv({name}, {val}) *setenv()*
7479 Set environment variable {name} to {val}. Example: >
7480 call setenv('HOME', '/home/myhome')
7481
7482< When {val} is |v:null| the environment variable is deleted.
7483 See also |expr-env|.
7484
7485 Can also be used as a |method|, the base is passed as the
7486 second argument: >
7487 GetPath()->setenv('PATH')
7488
7489setfperm({fname}, {mode}) *setfperm()* *chmod*
7490 Set the file permissions for {fname} to {mode}.
7491 {mode} must be a string with 9 characters. It is of the form
7492 "rwxrwxrwx", where each group of "rwx" flags represent, in
7493 turn, the permissions of the owner of the file, the group the
7494 file belongs to, and other users. A '-' character means the
7495 permission is off, any other character means on. Multi-byte
7496 characters are not supported.
7497
7498 For example "rw-r-----" means read-write for the user,
7499 readable by the group, not accessible by others. "xx-x-----"
7500 would do the same thing.
7501
7502 Returns non-zero for success, zero for failure.
7503
7504 Can also be used as a |method|: >
7505 GetFilename()->setfperm(mode)
7506<
7507 To read permissions see |getfperm()|.
7508
7509
7510setline({lnum}, {text}) *setline()*
7511 Set line {lnum} of the current buffer to {text}. To insert
7512 lines use |append()|. To set lines in another buffer use
7513 |setbufline()|. Any text properties in {lnum} are cleared.
7514
7515 {lnum} is used like with |getline()|.
7516 When {lnum} is just below the last line the {text} will be
7517 added below the last line.
7518 {text} can be any type or a List of any type, each item is
7519 converted to a String.
7520
7521 If this succeeds, FALSE is returned. If this fails (most likely
7522 because {lnum} is invalid) TRUE is returned.
7523 In |Vim9| script an error is given if {lnum} is invalid.
7524
7525 Example: >
7526 :call setline(5, strftime("%c"))
7527
7528< When {text} is a |List| then line {lnum} and following lines
7529 will be set to the items in the list. Example: >
7530 :call setline(5, ['aaa', 'bbb', 'ccc'])
7531< This is equivalent to: >
7532 :for [n, l] in [[5, 'aaa'], [6, 'bbb'], [7, 'ccc']]
7533 : call setline(n, l)
7534 :endfor
7535
7536< Note: The '[ and '] marks are not set.
7537
7538 Can also be used as a |method|, the base is passed as the
7539 second argument: >
7540 GetText()->setline(lnum)
7541
7542setloclist({nr}, {list} [, {action} [, {what}]]) *setloclist()*
7543 Create or replace or add to the location list for window {nr}.
7544 {nr} can be the window number or the |window-ID|.
7545 When {nr} is zero the current window is used.
7546
7547 For a location list window, the displayed location list is
7548 modified. For an invalid window number {nr}, -1 is returned.
7549 Otherwise, same as |setqflist()|.
7550 Also see |location-list|.
7551
7552 For {action} see |setqflist-action|.
7553
7554 If the optional {what} dictionary argument is supplied, then
7555 only the items listed in {what} are set. Refer to |setqflist()|
7556 for the list of supported keys in {what}.
7557
7558 Can also be used as a |method|, the base is passed as the
7559 second argument: >
7560 GetLoclist()->setloclist(winnr)
7561
7562setmatches({list} [, {win}]) *setmatches()*
7563 Restores a list of matches saved by |getmatches()| for the
7564 current window. Returns 0 if successful, otherwise -1. All
7565 current matches are cleared before the list is restored. See
7566 example for |getmatches()|.
7567 If {win} is specified, use the window with this number or
7568 window ID instead of the current window.
7569
7570 Can also be used as a |method|: >
7571 GetMatches()->setmatches()
7572<
7573 *setpos()*
7574setpos({expr}, {list})
7575 Set the position for String {expr}. Possible values:
7576 . the cursor
7577 'x mark x
7578
7579 {list} must be a |List| with four or five numbers:
7580 [bufnum, lnum, col, off]
7581 [bufnum, lnum, col, off, curswant]
7582
7583 "bufnum" is the buffer number. Zero can be used for the
7584 current buffer. When setting an uppercase mark "bufnum" is
7585 used for the mark position. For other marks it specifies the
7586 buffer to set the mark in. You can use the |bufnr()| function
7587 to turn a file name into a buffer number.
7588 For setting the cursor and the ' mark "bufnum" is ignored,
7589 since these are associated with a window, not a buffer.
7590 Does not change the jumplist.
7591
7592 "lnum" and "col" are the position in the buffer. The first
7593 column is 1. Use a zero "lnum" to delete a mark. If "col" is
7594 smaller than 1 then 1 is used. To use the character count
7595 instead of the byte count, use |setcharpos()|.
7596
7597 The "off" number is only used when 'virtualedit' is set. Then
7598 it is the offset in screen columns from the start of the
7599 character. E.g., a position within a <Tab> or after the last
7600 character.
7601
7602 The "curswant" number is only used when setting the cursor
7603 position. It sets the preferred column for when moving the
7604 cursor vertically. When the "curswant" number is missing the
7605 preferred column is not set. When it is present and setting a
7606 mark position it is not used.
7607
7608 Note that for '< and '> changing the line number may result in
7609 the marks to be effectively be swapped, so that '< is always
7610 before '>.
7611
7612 Returns 0 when the position could be set, -1 otherwise.
7613 An error message is given if {expr} is invalid.
7614
7615 Also see |setcharpos()|, |getpos()| and |getcurpos()|.
7616
7617 This does not restore the preferred column for moving
7618 vertically; if you set the cursor position with this, |j| and
7619 |k| motions will jump to previous columns! Use |cursor()| to
7620 also set the preferred column. Also see the "curswant" key in
7621 |winrestview()|.
7622
7623 Can also be used as a |method|: >
7624 GetPosition()->setpos('.')
7625
7626setqflist({list} [, {action} [, {what}]]) *setqflist()*
7627 Create or replace or add to the quickfix list.
7628
7629 If the optional {what} dictionary argument is supplied, then
7630 only the items listed in {what} are set. The first {list}
7631 argument is ignored. See below for the supported items in
7632 {what}.
7633 *setqflist-what*
7634 When {what} is not present, the items in {list} are used. Each
7635 item must be a dictionary. Non-dictionary items in {list} are
7636 ignored. Each dictionary item can contain the following
7637 entries:
7638
7639 bufnr buffer number; must be the number of a valid
7640 buffer
7641 filename name of a file; only used when "bufnr" is not
7642 present or it is invalid.
7643 module name of a module; if given it will be used in
7644 quickfix error window instead of the filename.
7645 lnum line number in the file
7646 pattern search pattern used to locate the error
7647 col column number
7648 vcol when non-zero: "col" is visual column
7649 when zero: "col" is byte index
7650 nr error number
7651 text description of the error
7652 type single-character error type, 'E', 'W', etc.
7653 valid recognized error message
7654
7655 The "col", "vcol", "nr", "type" and "text" entries are
7656 optional. Either "lnum" or "pattern" entry can be used to
7657 locate a matching error line.
7658 If the "filename" and "bufnr" entries are not present or
7659 neither the "lnum" or "pattern" entries are present, then the
7660 item will not be handled as an error line.
7661 If both "pattern" and "lnum" are present then "pattern" will
7662 be used.
7663 If the "valid" entry is not supplied, then the valid flag is
7664 set when "bufnr" is a valid buffer or "filename" exists.
7665 If you supply an empty {list}, the quickfix list will be
7666 cleared.
7667 Note that the list is not exactly the same as what
7668 |getqflist()| returns.
7669
7670 {action} values: *setqflist-action* *E927*
7671 'a' The items from {list} are added to the existing
7672 quickfix list. If there is no existing list, then a
7673 new list is created.
7674
7675 'r' The items from the current quickfix list are replaced
7676 with the items from {list}. This can also be used to
7677 clear the list: >
7678 :call setqflist([], 'r')
7679<
7680 'f' All the quickfix lists in the quickfix stack are
7681 freed.
7682
7683 If {action} is not present or is set to ' ', then a new list
7684 is created. The new quickfix list is added after the current
7685 quickfix list in the stack and all the following lists are
7686 freed. To add a new quickfix list at the end of the stack,
7687 set "nr" in {what} to "$".
7688
7689 The following items can be specified in dictionary {what}:
7690 context quickfix list context. See |quickfix-context|
7691 efm errorformat to use when parsing text from
7692 "lines". If this is not present, then the
7693 'errorformat' option value is used.
7694 See |quickfix-parse|
7695 id quickfix list identifier |quickfix-ID|
7696 idx index of the current entry in the quickfix
7697 list specified by 'id' or 'nr'. If set to '$',
7698 then the last entry in the list is set as the
7699 current entry. See |quickfix-index|
7700 items list of quickfix entries. Same as the {list}
7701 argument.
7702 lines use 'errorformat' to parse a list of lines and
7703 add the resulting entries to the quickfix list
7704 {nr} or {id}. Only a |List| value is supported.
7705 See |quickfix-parse|
7706 nr list number in the quickfix stack; zero
7707 means the current quickfix list and "$" means
7708 the last quickfix list.
7709 quickfixtextfunc
7710 function to get the text to display in the
7711 quickfix window. The value can be the name of
7712 a function or a funcref or a lambda. Refer to
7713 |quickfix-window-function| for an explanation
7714 of how to write the function and an example.
7715 title quickfix list title text. See |quickfix-title|
7716 Unsupported keys in {what} are ignored.
7717 If the "nr" item is not present, then the current quickfix list
7718 is modified. When creating a new quickfix list, "nr" can be
7719 set to a value one greater than the quickfix stack size.
7720 When modifying a quickfix list, to guarantee that the correct
7721 list is modified, "id" should be used instead of "nr" to
7722 specify the list.
7723
7724 Examples (See also |setqflist-examples|): >
7725 :call setqflist([], 'r', {'title': 'My search'})
7726 :call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
7727 :call setqflist([], 'a', {'id':qfid, 'lines':["F1:10:L10"]})
7728<
7729 Returns zero for success, -1 for failure.
7730
7731 This function can be used to create a quickfix list
7732 independent of the 'errorformat' setting. Use a command like
7733 `:cc 1` to jump to the first position.
7734
7735 Can also be used as a |method|, the base is passed as the
7736 second argument: >
7737 GetErrorlist()->setqflist()
7738<
7739 *setreg()*
7740setreg({regname}, {value} [, {options}])
7741 Set the register {regname} to {value}.
7742 If {regname} is "" or "@", the unnamed register '"' is used.
7743 The {regname} argument is a string. In |Vim9-script|
7744 {regname} must be one character.
7745
7746 {value} may be any value returned by |getreg()| or
7747 |getreginfo()|, including a |List| or |Dict|.
7748 If {options} contains "a" or {regname} is upper case,
7749 then the value is appended.
7750
7751 {options} can also contain a register type specification:
7752 "c" or "v" |characterwise| mode
7753 "l" or "V" |linewise| mode
7754 "b" or "<CTRL-V>" |blockwise-visual| mode
7755 If a number immediately follows "b" or "<CTRL-V>" then this is
7756 used as the width of the selection - if it is not specified
7757 then the width of the block is set to the number of characters
7758 in the longest line (counting a <Tab> as 1 character).
7759
7760 If {options} contains no register settings, then the default
7761 is to use character mode unless {value} ends in a <NL> for
7762 string {value} and linewise mode for list {value}. Blockwise
7763 mode is never selected automatically.
7764 Returns zero for success, non-zero for failure.
7765
7766 *E883*
7767 Note: you may not use |List| containing more than one item to
7768 set search and expression registers. Lists containing no
7769 items act like empty strings.
7770
7771 Examples: >
7772 :call setreg(v:register, @*)
7773 :call setreg('*', @%, 'ac')
7774 :call setreg('a', "1\n2\n3", 'b5')
7775 :call setreg('"', { 'points_to': 'a'})
7776
7777< This example shows using the functions to save and restore a
7778 register: >
7779 :let var_a = getreginfo()
7780 :call setreg('a', var_a)
7781< or: >
7782 :let var_a = getreg('a', 1, 1)
7783 :let var_amode = getregtype('a')
7784 ....
7785 :call setreg('a', var_a, var_amode)
7786< Note: you may not reliably restore register value
7787 without using the third argument to |getreg()| as without it
7788 newlines are represented as newlines AND Nul bytes are
7789 represented as newlines as well, see |NL-used-for-Nul|.
7790
7791 You can also change the type of a register by appending
7792 nothing: >
7793 :call setreg('a', '', 'al')
7794
7795< Can also be used as a |method|, the base is passed as the
7796 second argument: >
7797 GetText()->setreg('a')
7798
7799settabvar({tabnr}, {varname}, {val}) *settabvar()*
7800 Set tab-local variable {varname} to {val} in tab page {tabnr}.
7801 |t:var|
7802 The {varname} argument is a string.
7803 Note that autocommands are blocked, side effects may not be
7804 triggered, e.g. when setting 'filetype'.
7805 Note that the variable name without "t:" must be used.
7806 Tabs are numbered starting with one.
7807 This function is not available in the |sandbox|.
7808
7809 Can also be used as a |method|, the base is passed as the
7810 third argument: >
7811 GetValue()->settabvar(tab, name)
7812
7813settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()*
7814 Set option or local variable {varname} in window {winnr} to
7815 {val}.
7816 Tabs are numbered starting with one. For the current tabpage
7817 use |setwinvar()|.
7818 {winnr} can be the window number or the |window-ID|.
7819 When {winnr} is zero the current window is used.
7820 Note that autocommands are blocked, side effects may not be
7821 triggered, e.g. when setting 'filetype' or 'syntax'.
7822 This also works for a global or local buffer option, but it
7823 doesn't work for a global or local buffer variable.
7824 For a local buffer option the global value is unchanged.
7825 Note that the variable name without "w:" must be used.
7826 Examples: >
7827 :call settabwinvar(1, 1, "&list", 0)
7828 :call settabwinvar(3, 2, "myvar", "foobar")
7829< This function is not available in the |sandbox|.
7830
7831 Can also be used as a |method|, the base is passed as the
7832 fourth argument: >
7833 GetValue()->settabwinvar(tab, winnr, name)
7834
7835settagstack({nr}, {dict} [, {action}]) *settagstack()*
7836 Modify the tag stack of the window {nr} using {dict}.
7837 {nr} can be the window number or the |window-ID|.
7838
7839 For a list of supported items in {dict}, refer to
7840 |gettagstack()|. "curidx" takes effect before changing the tag
7841 stack.
7842 *E962*
7843 How the tag stack is modified depends on the {action}
7844 argument:
7845 - If {action} is not present or is set to 'r', then the tag
7846 stack is replaced.
7847 - If {action} is set to 'a', then new entries from {dict} are
7848 pushed (added) onto the tag stack.
7849 - If {action} is set to 't', then all the entries from the
7850 current entry in the tag stack or "curidx" in {dict} are
7851 removed and then new entries are pushed to the stack.
7852
7853 The current index is set to one after the length of the tag
7854 stack after the modification.
7855
7856 Returns zero for success, -1 for failure.
7857
7858 Examples (for more examples see |tagstack-examples|):
7859 Empty the tag stack of window 3: >
7860 call settagstack(3, {'items' : []})
7861
7862< Save and restore the tag stack: >
7863 let stack = gettagstack(1003)
7864 " do something else
7865 call settagstack(1003, stack)
7866 unlet stack
7867<
7868 Can also be used as a |method|, the base is passed as the
7869 second argument: >
7870 GetStack()->settagstack(winnr)
7871
7872setwinvar({winnr}, {varname}, {val}) *setwinvar()*
7873 Like |settabwinvar()| for the current tab page.
7874 Examples: >
7875 :call setwinvar(1, "&list", 0)
7876 :call setwinvar(2, "myvar", "foobar")
7877
7878< Can also be used as a |method|, the base is passed as the
7879 third argument: >
7880 GetValue()->setwinvar(winnr, name)
7881
7882sha256({string}) *sha256()*
7883 Returns a String with 64 hex characters, which is the SHA256
7884 checksum of {string}.
7885
7886 Can also be used as a |method|: >
7887 GetText()->sha256()
7888
7889< {only available when compiled with the |+cryptv| feature}
7890
7891shellescape({string} [, {special}]) *shellescape()*
7892 Escape {string} for use as a shell command argument.
7893 When the 'shell' contains powershell (MS-Windows) or pwsh
7894 (MS-Windows, Linux, and MacOS) then it will enclose {string}
7895 in single quotes and will double up all internal single
7896 quotes.
7897 On MS-Windows, when 'shellslash' is not set, it will enclose
7898 {string} in double quotes and double all double quotes within
7899 {string}.
7900 Otherwise it will enclose {string} in single quotes and
7901 replace all "'" with "'\''".
7902
7903 When the {special} argument is present and it's a non-zero
7904 Number or a non-empty String (|non-zero-arg|), then special
7905 items such as "!", "%", "#" and "<cword>" will be preceded by
7906 a backslash. This backslash will be removed again by the |:!|
7907 command.
7908
7909 The "!" character will be escaped (again with a |non-zero-arg|
7910 {special}) when 'shell' contains "csh" in the tail. That is
7911 because for csh and tcsh "!" is used for history replacement
7912 even when inside single quotes.
7913
7914 With a |non-zero-arg| {special} the <NL> character is also
7915 escaped. When 'shell' containing "csh" in the tail it's
7916 escaped a second time.
7917
7918 The "\" character will be escaped when 'shell' contains "fish"
7919 in the tail. That is because for fish "\" is used as an escape
7920 character inside single quotes.
7921
7922 Example of use with a |:!| command: >
7923 :exe '!dir ' . shellescape(expand('<cfile>'), 1)
7924< This results in a directory listing for the file under the
7925 cursor. Example of use with |system()|: >
7926 :call system("chmod +w -- " . shellescape(expand("%")))
7927< See also |::S|.
7928
7929 Can also be used as a |method|: >
7930 GetCommand()->shellescape()
7931
7932shiftwidth([{col}]) *shiftwidth()*
7933 Returns the effective value of 'shiftwidth'. This is the
7934 'shiftwidth' value unless it is zero, in which case it is the
7935 'tabstop' value. This function was introduced with patch
7936 7.3.694 in 2012, everybody should have it by now (however it
7937 did not allow for the optional {col} argument until 8.1.542).
7938
7939 When there is one argument {col} this is used as column number
7940 for which to return the 'shiftwidth' value. This matters for the
7941 'vartabstop' feature. If the 'vartabstop' setting is enabled and
7942 no {col} argument is given, column 1 will be assumed.
7943
7944 Can also be used as a |method|: >
7945 GetColumn()->shiftwidth()
7946
7947sign_ functions are documented here: |sign-functions-details|
7948
7949
7950simplify({filename}) *simplify()*
7951 Simplify the file name as much as possible without changing
7952 the meaning. Shortcuts (on MS-Windows) or symbolic links (on
7953 Unix) are not resolved. If the first path component in
7954 {filename} designates the current directory, this will be
7955 valid for the result as well. A trailing path separator is
7956 not removed either. On Unix "//path" is unchanged, but
7957 "///path" is simplified to "/path" (this follows the Posix
7958 standard).
7959 Example: >
7960 simplify("./dir/.././/file/") == "./file/"
7961< Note: The combination "dir/.." is only removed if "dir" is
7962 a searchable directory or does not exist. On Unix, it is also
7963 removed when "dir" is a symbolic link within the same
7964 directory. In order to resolve all the involved symbolic
7965 links before simplifying the path name, use |resolve()|.
7966
7967 Can also be used as a |method|: >
7968 GetName()->simplify()
7969
7970sin({expr}) *sin()*
7971 Return the sine of {expr}, measured in radians, as a |Float|.
7972 {expr} must evaluate to a |Float| or a |Number|.
7973 Examples: >
7974 :echo sin(100)
7975< -0.506366 >
7976 :echo sin(-4.01)
7977< 0.763301
7978
7979 Can also be used as a |method|: >
7980 Compute()->sin()
7981<
7982 {only available when compiled with the |+float| feature}
7983
7984
7985sinh({expr}) *sinh()*
7986 Return the hyperbolic sine of {expr} as a |Float| in the range
7987 [-inf, inf].
7988 {expr} must evaluate to a |Float| or a |Number|.
7989 Examples: >
7990 :echo sinh(0.5)
7991< 0.521095 >
7992 :echo sinh(-0.9)
7993< -1.026517
7994
7995 Can also be used as a |method|: >
7996 Compute()->sinh()
7997<
7998 {only available when compiled with the |+float| feature}
7999
8000
8001slice({expr}, {start} [, {end}]) *slice()*
8002 Similar to using a |slice| "expr[start : end]", but "end" is
8003 used exclusive. And for a string the indexes are used as
8004 character indexes instead of byte indexes, like in
8005 |vim9script|. Also, composing characters are not counted.
8006 When {end} is omitted the slice continues to the last item.
8007 When {end} is -1 the last item is omitted.
8008
8009 Can also be used as a |method|: >
8010 GetList()->slice(offset)
8011
8012
8013sort({list} [, {func} [, {dict}]]) *sort()* *E702*
8014 Sort the items in {list} in-place. Returns {list}.
8015
8016 If you want a list to remain unmodified make a copy first: >
8017 :let sortedlist = sort(copy(mylist))
8018
8019< When {func} is omitted, is empty or zero, then sort() uses the
8020 string representation of each item to sort on. Numbers sort
8021 after Strings, |Lists| after Numbers. For sorting text in the
8022 current buffer use |:sort|.
8023
8024 When {func} is given and it is '1' or 'i' then case is
8025 ignored.
8026
8027 When {func} is given and it is 'l' then the current collation
8028 locale is used for ordering. Implementation details: strcoll()
8029 is used to compare strings. See |:language| check or set the
8030 collation locale. |v:collate| can also be used to check the
8031 current locale. Sorting using the locale typically ignores
8032 case. Example: >
8033 " ö is sorted similarly to o with English locale.
8034 :language collate en_US.UTF8
8035 :echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
8036< ['n', 'o', 'O', 'ö', 'p', 'z'] ~
8037>
8038 " ö is sorted after z with Swedish locale.
8039 :language collate sv_SE.UTF8
8040 :echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
8041< ['n', 'o', 'O', 'p', 'z', 'ö'] ~
8042 This does not work properly on Mac.
8043
8044 When {func} is given and it is 'n' then all items will be
8045 sorted numerical (Implementation detail: this uses the
8046 strtod() function to parse numbers, Strings, Lists, Dicts and
8047 Funcrefs will be considered as being 0).
8048
8049 When {func} is given and it is 'N' then all items will be
8050 sorted numerical. This is like 'n' but a string containing
8051 digits will be used as the number they represent.
8052
8053 When {func} is given and it is 'f' then all items will be
8054 sorted numerical. All values must be a Number or a Float.
8055
8056 When {func} is a |Funcref| or a function name, this function
8057 is called to compare items. The function is invoked with two
8058 items as argument and must return zero if they are equal, 1 or
8059 bigger if the first one sorts after the second one, -1 or
8060 smaller if the first one sorts before the second one.
8061
8062 {dict} is for functions with the "dict" attribute. It will be
8063 used to set the local variable "self". |Dictionary-function|
8064
8065 The sort is stable, items which compare equal (as number or as
8066 string) will keep their relative position. E.g., when sorting
8067 on numbers, text strings will sort next to each other, in the
8068 same order as they were originally.
8069
8070 Can also be used as a |method|: >
8071 mylist->sort()
8072
8073< Also see |uniq()|.
8074
8075 Example: >
8076 func MyCompare(i1, i2)
8077 return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
8078 endfunc
8079 eval mylist->sort("MyCompare")
8080< A shorter compare version for this specific simple case, which
8081 ignores overflow: >
8082 func MyCompare(i1, i2)
8083 return a:i1 - a:i2
8084 endfunc
8085< For a simple expression you can use a lambda: >
8086 eval mylist->sort({i1, i2 -> i1 - i2})
8087<
8088sound_clear() *sound_clear()*
8089 Stop playing all sounds.
8090
8091 On some Linux systems you may need the libcanberra-pulse
8092 package, otherwise sound may not stop.
8093
8094 {only available when compiled with the |+sound| feature}
8095
8096 *sound_playevent()*
8097sound_playevent({name} [, {callback}])
8098 Play a sound identified by {name}. Which event names are
8099 supported depends on the system. Often the XDG sound names
8100 are used. On Ubuntu they may be found in
8101 /usr/share/sounds/freedesktop/stereo. Example: >
8102 call sound_playevent('bell')
8103< On MS-Windows, {name} can be SystemAsterisk, SystemDefault,
8104 SystemExclamation, SystemExit, SystemHand, SystemQuestion,
8105 SystemStart, SystemWelcome, etc.
8106
8107 When {callback} is specified it is invoked when the sound is
8108 finished. The first argument is the sound ID, the second
8109 argument is the status:
8110 0 sound was played to the end
8111 1 sound was interrupted
8112 2 error occurred after sound started
8113 Example: >
8114 func Callback(id, status)
8115 echomsg "sound " .. a:id .. " finished with " .. a:status
8116 endfunc
8117 call sound_playevent('bell', 'Callback')
8118
8119< MS-Windows: {callback} doesn't work for this function.
8120
8121 Returns the sound ID, which can be passed to `sound_stop()`.
8122 Returns zero if the sound could not be played.
8123
8124 Can also be used as a |method|: >
8125 GetSoundName()->sound_playevent()
8126
8127< {only available when compiled with the |+sound| feature}
8128
8129 *sound_playfile()*
8130sound_playfile({path} [, {callback}])
8131 Like `sound_playevent()` but play sound file {path}. {path}
8132 must be a full path. On Ubuntu you may find files to play
8133 with this command: >
8134 :!find /usr/share/sounds -type f | grep -v index.theme
8135
8136< Can also be used as a |method|: >
8137 GetSoundPath()->sound_playfile()
8138
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00008139< There is no error *E538* , but can listen to 538.nl.
8140 {only available when compiled with the |+sound| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008141
8142
8143sound_stop({id}) *sound_stop()*
8144 Stop playing sound {id}. {id} must be previously returned by
8145 `sound_playevent()` or `sound_playfile()`.
8146
8147 On some Linux systems you may need the libcanberra-pulse
8148 package, otherwise sound may not stop.
8149
8150 On MS-Windows, this does not work for event sound started by
8151 `sound_playevent()`. To stop event sounds, use `sound_clear()`.
8152
8153 Can also be used as a |method|: >
8154 soundid->sound_stop()
8155
8156< {only available when compiled with the |+sound| feature}
8157
8158 *soundfold()*
8159soundfold({word})
8160 Return the sound-folded equivalent of {word}. Uses the first
8161 language in 'spelllang' for the current window that supports
8162 soundfolding. 'spell' must be set. When no sound folding is
8163 possible the {word} is returned unmodified.
8164 This can be used for making spelling suggestions. Note that
8165 the method can be quite slow.
8166
8167 Can also be used as a |method|: >
8168 GetWord()->soundfold()
8169<
8170 *spellbadword()*
8171spellbadword([{sentence}])
8172 Without argument: The result is the badly spelled word under
8173 or after the cursor. The cursor is moved to the start of the
8174 bad word. When no bad word is found in the cursor line the
8175 result is an empty string and the cursor doesn't move.
8176
8177 With argument: The result is the first word in {sentence} that
8178 is badly spelled. If there are no spelling mistakes the
8179 result is an empty string.
8180
8181 The return value is a list with two items:
8182 - The badly spelled word or an empty string.
8183 - The type of the spelling error:
8184 "bad" spelling mistake
8185 "rare" rare word
8186 "local" word only valid in another region
8187 "caps" word should start with Capital
8188 Example: >
8189 echo spellbadword("the quik brown fox")
8190< ['quik', 'bad'] ~
8191
8192 The spelling information for the current window and the value
8193 of 'spelllang' are used.
8194
8195 Can also be used as a |method|: >
8196 GetText()->spellbadword()
8197<
8198 *spellsuggest()*
8199spellsuggest({word} [, {max} [, {capital}]])
8200 Return a |List| with spelling suggestions to replace {word}.
8201 When {max} is given up to this number of suggestions are
8202 returned. Otherwise up to 25 suggestions are returned.
8203
8204 When the {capital} argument is given and it's non-zero only
8205 suggestions with a leading capital will be given. Use this
8206 after a match with 'spellcapcheck'.
8207
8208 {word} can be a badly spelled word followed by other text.
8209 This allows for joining two words that were split. The
8210 suggestions also include the following text, thus you can
8211 replace a line.
8212
8213 {word} may also be a good word. Similar words will then be
8214 returned. {word} itself is not included in the suggestions,
8215 although it may appear capitalized.
8216
8217 The spelling information for the current window is used. The
8218 values of 'spelllang' and 'spellsuggest' are used.
8219
8220 Can also be used as a |method|: >
8221 GetWord()->spellsuggest()
8222
8223split({string} [, {pattern} [, {keepempty}]]) *split()*
8224 Make a |List| out of {string}. When {pattern} is omitted or
8225 empty each white-separated sequence of characters becomes an
8226 item.
8227 Otherwise the string is split where {pattern} matches,
8228 removing the matched characters. 'ignorecase' is not used
8229 here, add \c to ignore case. |/\c|
8230 When the first or last item is empty it is omitted, unless the
8231 {keepempty} argument is given and it's non-zero.
8232 Other empty items are kept when {pattern} matches at least one
8233 character or when {keepempty} is non-zero.
8234 Example: >
8235 :let words = split(getline('.'), '\W\+')
8236< To split a string in individual characters: >
8237 :for c in split(mystring, '\zs')
8238< If you want to keep the separator you can also use '\zs' at
8239 the end of the pattern: >
8240 :echo split('abc:def:ghi', ':\zs')
8241< ['abc:', 'def:', 'ghi'] ~
8242 Splitting a table where the first element can be empty: >
8243 :let items = split(line, ':', 1)
8244< The opposite function is |join()|.
8245
8246 Can also be used as a |method|: >
8247 GetString()->split()
8248
8249sqrt({expr}) *sqrt()*
8250 Return the non-negative square root of Float {expr} as a
8251 |Float|.
8252 {expr} must evaluate to a |Float| or a |Number|. When {expr}
8253 is negative the result is NaN (Not a Number).
8254 Examples: >
8255 :echo sqrt(100)
8256< 10.0 >
8257 :echo sqrt(-4.01)
8258< nan
8259 "nan" may be different, it depends on system libraries.
8260
8261 Can also be used as a |method|: >
8262 Compute()->sqrt()
8263<
8264 {only available when compiled with the |+float| feature}
8265
8266
8267srand([{expr}]) *srand()*
8268 Initialize seed used by |rand()|:
8269 - If {expr} is not given, seed values are initialized by
8270 reading from /dev/urandom, if possible, or using time(NULL)
8271 a.k.a. epoch time otherwise; this only has second accuracy.
8272 - If {expr} is given it must be a Number. It is used to
8273 initialize the seed values. This is useful for testing or
8274 when a predictable sequence is intended.
8275
8276 Examples: >
8277 :let seed = srand()
8278 :let seed = srand(userinput)
8279 :echo rand(seed)
8280
8281state([{what}]) *state()*
8282 Return a string which contains characters indicating the
8283 current state. Mostly useful in callbacks that want to do
8284 work that may not always be safe. Roughly this works like:
8285 - callback uses state() to check if work is safe to do.
8286 Yes: then do it right away.
8287 No: add to work queue and add a |SafeState| and/or
8288 |SafeStateAgain| autocommand (|SafeState| triggers at
8289 toplevel, |SafeStateAgain| triggers after handling
8290 messages and callbacks).
8291 - When SafeState or SafeStateAgain is triggered and executes
8292 your autocommand, check with `state()` if the work can be
8293 done now, and if yes remove it from the queue and execute.
8294 Remove the autocommand if the queue is now empty.
8295 Also see |mode()|.
8296
8297 When {what} is given only characters in this string will be
8298 added. E.g, this checks if the screen has scrolled: >
8299 if state('s') == ''
8300 " screen has not scrolled
8301<
8302 These characters indicate the state, generally indicating that
8303 something is busy:
8304 m halfway a mapping, :normal command, feedkeys() or
8305 stuffed command
8306 o operator pending, e.g. after |d|
8307 a Insert mode autocomplete active
8308 x executing an autocommand
8309 w blocked on waiting, e.g. ch_evalexpr(), ch_read() and
8310 ch_readraw() when reading json
8311 S not triggering SafeState or SafeStateAgain, e.g. after
8312 |f| or a count
8313 c callback invoked, including timer (repeats for
8314 recursiveness up to "ccc")
8315 s screen has scrolled for messages
8316
8317str2float({string} [, {quoted}]) *str2float()*
8318 Convert String {string} to a Float. This mostly works the
8319 same as when using a floating point number in an expression,
8320 see |floating-point-format|. But it's a bit more permissive.
8321 E.g., "1e40" is accepted, while in an expression you need to
8322 write "1.0e40". The hexadecimal form "0x123" is also
8323 accepted, but not others, like binary or octal.
8324 When {quoted} is present and non-zero then embedded single
8325 quotes before the dot are ignored, thus "1'000.0" is a
8326 thousand.
8327 Text after the number is silently ignored.
8328 The decimal point is always '.', no matter what the locale is
8329 set to. A comma ends the number: "12,345.67" is converted to
8330 12.0. You can strip out thousands separators with
8331 |substitute()|: >
8332 let f = str2float(substitute(text, ',', '', 'g'))
8333<
8334 Can also be used as a |method|: >
8335 let f = text->substitute(',', '', 'g')->str2float()
8336<
8337 {only available when compiled with the |+float| feature}
8338
8339str2list({string} [, {utf8}]) *str2list()*
8340 Return a list containing the number values which represent
8341 each character in String {string}. Examples: >
8342 str2list(" ") returns [32]
8343 str2list("ABC") returns [65, 66, 67]
8344< |list2str()| does the opposite.
8345
8346 When {utf8} is omitted or zero, the current 'encoding' is used.
8347 When {utf8} is TRUE, always treat the String as UTF-8
8348 characters. With UTF-8 composing characters are handled
8349 properly: >
8350 str2list("á") returns [97, 769]
8351
8352< Can also be used as a |method|: >
8353 GetString()->str2list()
8354
8355
8356str2nr({string} [, {base} [, {quoted}]]) *str2nr()*
8357 Convert string {string} to a number.
8358 {base} is the conversion base, it can be 2, 8, 10 or 16.
8359 When {quoted} is present and non-zero then embedded single
8360 quotes are ignored, thus "1'000'000" is a million.
8361
8362 When {base} is omitted base 10 is used. This also means that
8363 a leading zero doesn't cause octal conversion to be used, as
8364 with the default String to Number conversion. Example: >
8365 let nr = str2nr('0123')
8366<
8367 When {base} is 16 a leading "0x" or "0X" is ignored. With a
8368 different base the result will be zero. Similarly, when
8369 {base} is 8 a leading "0", "0o" or "0O" is ignored, and when
8370 {base} is 2 a leading "0b" or "0B" is ignored.
8371 Text after the number is silently ignored.
8372
8373 Can also be used as a |method|: >
8374 GetText()->str2nr()
8375
8376
8377strcharlen({string}) *strcharlen()*
8378 The result is a Number, which is the number of characters
8379 in String {string}. Composing characters are ignored.
8380 |strchars()| can count the number of characters, counting
8381 composing characters separately.
8382
8383 Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
8384
8385 Can also be used as a |method|: >
8386 GetText()->strcharlen()
8387
8388
8389strcharpart({src}, {start} [, {len} [, {skipcc}]]) *strcharpart()*
8390 Like |strpart()| but using character index and length instead
8391 of byte index and length.
8392 When {skipcc} is omitted or zero, composing characters are
8393 counted separately.
8394 When {skipcc} set to 1, Composing characters are ignored,
8395 similar to |slice()|.
8396 When a character index is used where a character does not
8397 exist it is omitted and counted as one character. For
8398 example: >
8399 strcharpart('abc', -1, 2)
8400< results in 'a'.
8401
8402 Can also be used as a |method|: >
8403 GetText()->strcharpart(5)
8404
8405
8406strchars({string} [, {skipcc}]) *strchars()*
8407 The result is a Number, which is the number of characters
8408 in String {string}.
8409 When {skipcc} is omitted or zero, composing characters are
8410 counted separately.
8411 When {skipcc} set to 1, Composing characters are ignored.
8412 |strcharlen()| always does this.
8413
8414 Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
8415
8416 {skipcc} is only available after 7.4.755. For backward
8417 compatibility, you can define a wrapper function: >
8418 if has("patch-7.4.755")
8419 function s:strchars(str, skipcc)
8420 return strchars(a:str, a:skipcc)
8421 endfunction
8422 else
8423 function s:strchars(str, skipcc)
8424 if a:skipcc
8425 return strlen(substitute(a:str, ".", "x", "g"))
8426 else
8427 return strchars(a:str)
8428 endif
8429 endfunction
8430 endif
8431<
8432 Can also be used as a |method|: >
8433 GetText()->strchars()
8434
8435strdisplaywidth({string} [, {col}]) *strdisplaywidth()*
8436 The result is a Number, which is the number of display cells
8437 String {string} occupies on the screen when it starts at {col}
8438 (first column is zero). When {col} is omitted zero is used.
8439 Otherwise it is the screen column where to start. This
8440 matters for Tab characters.
8441 The option settings of the current window are used. This
8442 matters for anything that's displayed differently, such as
8443 'tabstop' and 'display'.
8444 When {string} contains characters with East Asian Width Class
8445 Ambiguous, this function's return value depends on 'ambiwidth'.
8446 Also see |strlen()|, |strwidth()| and |strchars()|.
8447
8448 Can also be used as a |method|: >
8449 GetText()->strdisplaywidth()
8450
8451strftime({format} [, {time}]) *strftime()*
8452 The result is a String, which is a formatted date and time, as
8453 specified by the {format} string. The given {time} is used,
8454 or the current time if no time is given. The accepted
8455 {format} depends on your system, thus this is not portable!
8456 See the manual page of the C function strftime() for the
8457 format. The maximum length of the result is 80 characters.
8458 See also |localtime()|, |getftime()| and |strptime()|.
8459 The language can be changed with the |:language| command.
8460 Examples: >
8461 :echo strftime("%c") Sun Apr 27 11:49:23 1997
8462 :echo strftime("%Y %b %d %X") 1997 Apr 27 11:53:25
8463 :echo strftime("%y%m%d %T") 970427 11:53:55
8464 :echo strftime("%H:%M") 11:55
8465 :echo strftime("%c", getftime("file.c"))
8466 Show mod time of file.c.
8467< Not available on all systems. To check use: >
8468 :if exists("*strftime")
8469
8470< Can also be used as a |method|: >
8471 GetFormat()->strftime()
8472
8473strgetchar({str}, {index}) *strgetchar()*
8474 Get character {index} from {str}. This uses a character
8475 index, not a byte index. Composing characters are considered
8476 separate characters here.
8477 Also see |strcharpart()| and |strchars()|.
8478
8479 Can also be used as a |method|: >
8480 GetText()->strgetchar(5)
8481
8482stridx({haystack}, {needle} [, {start}]) *stridx()*
8483 The result is a Number, which gives the byte index in
8484 {haystack} of the first occurrence of the String {needle}.
8485 If {start} is specified, the search starts at index {start}.
8486 This can be used to find a second match: >
8487 :let colon1 = stridx(line, ":")
8488 :let colon2 = stridx(line, ":", colon1 + 1)
8489< The search is done case-sensitive.
8490 For pattern searches use |match()|.
8491 -1 is returned if the {needle} does not occur in {haystack}.
8492 See also |strridx()|.
8493 Examples: >
8494 :echo stridx("An Example", "Example") 3
8495 :echo stridx("Starting point", "Start") 0
8496 :echo stridx("Starting point", "start") -1
8497< *strstr()* *strchr()*
8498 stridx() works similar to the C function strstr(). When used
8499 with a single character it works similar to strchr().
8500
8501 Can also be used as a |method|: >
8502 GetHaystack()->stridx(needle)
8503<
8504 *string()*
8505string({expr}) Return {expr} converted to a String. If {expr} is a Number,
8506 Float, String, Blob or a composition of them, then the result
8507 can be parsed back with |eval()|.
8508 {expr} type result ~
8509 String 'string' (single quotes are doubled)
8510 Number 123
8511 Float 123.123456 or 1.123456e8
8512 Funcref function('name')
8513 Blob 0z00112233.44556677.8899
8514 List [item, item]
8515 Dictionary {key: value, key: value}
8516
8517 When a |List| or |Dictionary| has a recursive reference it is
8518 replaced by "[...]" or "{...}". Using eval() on the result
8519 will then fail.
8520
8521 Can also be used as a |method|: >
8522 mylist->string()
8523
8524< Also see |strtrans()|.
8525
8526
8527strlen({string}) *strlen()*
8528 The result is a Number, which is the length of the String
8529 {string} in bytes.
8530 If the argument is a Number it is first converted to a String.
8531 For other types an error is given.
8532 If you want to count the number of multibyte characters use
8533 |strchars()|.
8534 Also see |len()|, |strdisplaywidth()| and |strwidth()|.
8535
8536 Can also be used as a |method|: >
8537 GetString()->strlen()
8538
8539strpart({src}, {start} [, {len} [, {chars}]]) *strpart()*
8540 The result is a String, which is part of {src}, starting from
8541 byte {start}, with the byte length {len}.
8542 When {chars} is present and TRUE then {len} is the number of
8543 characters positions (composing characters are not counted
8544 separately, thus "1" means one base character and any
8545 following composing characters).
8546 To count {start} as characters instead of bytes use
8547 |strcharpart()|.
8548
8549 When bytes are selected which do not exist, this doesn't
8550 result in an error, the bytes are simply omitted.
8551 If {len} is missing, the copy continues from {start} till the
8552 end of the {src}. >
8553 strpart("abcdefg", 3, 2) == "de"
8554 strpart("abcdefg", -2, 4) == "ab"
8555 strpart("abcdefg", 5, 4) == "fg"
8556 strpart("abcdefg", 3) == "defg"
8557
8558< Note: To get the first character, {start} must be 0. For
8559 example, to get the character under the cursor: >
8560 strpart(getline("."), col(".") - 1, 1, v:true)
8561<
8562 Can also be used as a |method|: >
8563 GetText()->strpart(5)
8564
8565strptime({format}, {timestring}) *strptime()*
8566 The result is a Number, which is a unix timestamp representing
8567 the date and time in {timestring}, which is expected to match
8568 the format specified in {format}.
8569
8570 The accepted {format} depends on your system, thus this is not
8571 portable! See the manual page of the C function strptime()
8572 for the format. Especially avoid "%c". The value of $TZ also
8573 matters.
8574
8575 If the {timestring} cannot be parsed with {format} zero is
8576 returned. If you do not know the format of {timestring} you
8577 can try different {format} values until you get a non-zero
8578 result.
8579
8580 See also |strftime()|.
8581 Examples: >
8582 :echo strptime("%Y %b %d %X", "1997 Apr 27 11:49:23")
8583< 862156163 >
8584 :echo strftime("%c", strptime("%y%m%d %T", "970427 11:53:55"))
8585< Sun Apr 27 11:53:55 1997 >
8586 :echo strftime("%c", strptime("%Y%m%d%H%M%S", "19970427115355") + 3600)
8587< Sun Apr 27 12:53:55 1997
8588
8589 Can also be used as a |method|: >
8590 GetFormat()->strptime(timestring)
8591<
8592 Not available on all systems. To check use: >
8593 :if exists("*strptime")
8594
8595strridx({haystack}, {needle} [, {start}]) *strridx()*
8596 The result is a Number, which gives the byte index in
8597 {haystack} of the last occurrence of the String {needle}.
8598 When {start} is specified, matches beyond this index are
8599 ignored. This can be used to find a match before a previous
8600 match: >
8601 :let lastcomma = strridx(line, ",")
8602 :let comma2 = strridx(line, ",", lastcomma - 1)
8603< The search is done case-sensitive.
8604 For pattern searches use |match()|.
8605 -1 is returned if the {needle} does not occur in {haystack}.
8606 If the {needle} is empty the length of {haystack} is returned.
8607 See also |stridx()|. Examples: >
8608 :echo strridx("an angry armadillo", "an") 3
8609< *strrchr()*
8610 When used with a single character it works similar to the C
8611 function strrchr().
8612
8613 Can also be used as a |method|: >
8614 GetHaystack()->strridx(needle)
8615
8616strtrans({string}) *strtrans()*
8617 The result is a String, which is {string} with all unprintable
8618 characters translated into printable characters |'isprint'|.
8619 Like they are shown in a window. Example: >
8620 echo strtrans(@a)
8621< This displays a newline in register a as "^@" instead of
8622 starting a new line.
8623
8624 Can also be used as a |method|: >
8625 GetString()->strtrans()
8626
8627strwidth({string}) *strwidth()*
8628 The result is a Number, which is the number of display cells
8629 String {string} occupies. A Tab character is counted as one
8630 cell, alternatively use |strdisplaywidth()|.
8631 When {string} contains characters with East Asian Width Class
8632 Ambiguous, this function's return value depends on 'ambiwidth'.
8633 Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
8634
8635 Can also be used as a |method|: >
8636 GetString()->strwidth()
8637
8638submatch({nr} [, {list}]) *submatch()* *E935*
8639 Only for an expression in a |:substitute| command or
8640 substitute() function.
8641 Returns the {nr}'th submatch of the matched text. When {nr}
8642 is 0 the whole matched text is returned.
8643 Note that a NL in the string can stand for a line break of a
8644 multi-line match or a NUL character in the text.
8645 Also see |sub-replace-expression|.
8646
8647 If {list} is present and non-zero then submatch() returns
8648 a list of strings, similar to |getline()| with two arguments.
8649 NL characters in the text represent NUL characters in the
8650 text.
8651 Only returns more than one item for |:substitute|, inside
8652 |substitute()| this list will always contain one or zero
8653 items, since there are no real line breaks.
8654
8655 When substitute() is used recursively only the submatches in
8656 the current (deepest) call can be obtained.
8657
8658 Examples: >
8659 :s/\d\+/\=submatch(0) + 1/
8660 :echo substitute(text, '\d\+', '\=submatch(0) + 1', '')
8661< This finds the first number in the line and adds one to it.
8662 A line break is included as a newline character.
8663
8664 Can also be used as a |method|: >
8665 GetNr()->submatch()
8666
8667substitute({string}, {pat}, {sub}, {flags}) *substitute()*
8668 The result is a String, which is a copy of {string}, in which
8669 the first match of {pat} is replaced with {sub}.
8670 When {flags} is "g", all matches of {pat} in {string} are
8671 replaced. Otherwise {flags} should be "".
8672
8673 This works like the ":substitute" command (without any flags).
8674 But the matching with {pat} is always done like the 'magic'
8675 option is set and 'cpoptions' is empty (to make scripts
8676 portable). 'ignorecase' is still relevant, use |/\c| or |/\C|
8677 if you want to ignore or match case and ignore 'ignorecase'.
8678 'smartcase' is not used. See |string-match| for how {pat} is
8679 used.
8680
8681 A "~" in {sub} is not replaced with the previous {sub}.
8682 Note that some codes in {sub} have a special meaning
8683 |sub-replace-special|. For example, to replace something with
8684 "\n" (two characters), use "\\\\n" or '\\n'.
8685
8686 When {pat} does not match in {string}, {string} is returned
8687 unmodified.
8688
8689 Example: >
8690 :let &path = substitute(&path, ",\\=[^,]*$", "", "")
8691< This removes the last component of the 'path' option. >
8692 :echo substitute("testing", ".*", "\\U\\0", "")
8693< results in "TESTING".
8694
8695 When {sub} starts with "\=", the remainder is interpreted as
8696 an expression. See |sub-replace-expression|. Example: >
8697 :echo substitute(s, '%\(\x\x\)',
8698 \ '\=nr2char("0x" . submatch(1))', 'g')
8699
8700< When {sub} is a Funcref that function is called, with one
8701 optional argument. Example: >
8702 :echo substitute(s, '%\(\x\x\)', SubNr, 'g')
8703< The optional argument is a list which contains the whole
8704 matched string and up to nine submatches, like what
8705 |submatch()| returns. Example: >
8706 :echo substitute(s, '%\(\x\x\)', {m -> '0x' . m[1]}, 'g')
8707
8708< Can also be used as a |method|: >
8709 GetString()->substitute(pat, sub, flags)
8710
8711swapinfo({fname}) *swapinfo()*
8712 The result is a dictionary, which holds information about the
8713 swapfile {fname}. The available fields are:
8714 version Vim version
8715 user user name
8716 host host name
8717 fname original file name
8718 pid PID of the Vim process that created the swap
8719 file
8720 mtime last modification time in seconds
8721 inode Optional: INODE number of the file
8722 dirty 1 if file was modified, 0 if not
8723 Note that "user" and "host" are truncated to at most 39 bytes.
8724 In case of failure an "error" item is added with the reason:
8725 Cannot open file: file not found or in accessible
8726 Cannot read file: cannot read first block
8727 Not a swap file: does not contain correct block ID
8728 Magic number mismatch: Info in first block is invalid
8729
8730 Can also be used as a |method|: >
8731 GetFilename()->swapinfo()
8732
8733swapname({buf}) *swapname()*
8734 The result is the swap file path of the buffer {expr}.
8735 For the use of {buf}, see |bufname()| above.
8736 If buffer {buf} is the current buffer, the result is equal to
8737 |:swapname| (unless there is no swap file).
8738 If buffer {buf} has no swap file, returns an empty string.
8739
8740 Can also be used as a |method|: >
8741 GetBufname()->swapname()
8742
8743synID({lnum}, {col}, {trans}) *synID()*
8744 The result is a Number, which is the syntax ID at the position
8745 {lnum} and {col} in the current window.
8746 The syntax ID can be used with |synIDattr()| and
8747 |synIDtrans()| to obtain syntax information about text.
8748
8749 {col} is 1 for the leftmost column, {lnum} is 1 for the first
8750 line. 'synmaxcol' applies, in a longer line zero is returned.
8751 Note that when the position is after the last character,
8752 that's where the cursor can be in Insert mode, synID() returns
8753 zero. {lnum} is used like with |getline()|.
8754
8755 When {trans} is |TRUE|, transparent items are reduced to the
8756 item that they reveal. This is useful when wanting to know
8757 the effective color. When {trans} is |FALSE|, the transparent
8758 item is returned. This is useful when wanting to know which
8759 syntax item is effective (e.g. inside parens).
8760 Warning: This function can be very slow. Best speed is
8761 obtained by going through the file in forward direction.
8762
8763 Example (echoes the name of the syntax item under the cursor): >
8764 :echo synIDattr(synID(line("."), col("."), 1), "name")
8765<
8766
8767synIDattr({synID}, {what} [, {mode}]) *synIDattr()*
8768 The result is a String, which is the {what} attribute of
8769 syntax ID {synID}. This can be used to obtain information
8770 about a syntax item.
8771 {mode} can be "gui", "cterm" or "term", to get the attributes
8772 for that mode. When {mode} is omitted, or an invalid value is
8773 used, the attributes for the currently active highlighting are
8774 used (GUI, cterm or term).
8775 Use synIDtrans() to follow linked highlight groups.
8776 {what} result
8777 "name" the name of the syntax item
8778 "fg" foreground color (GUI: color name used to set
8779 the color, cterm: color number as a string,
8780 term: empty string)
8781 "bg" background color (as with "fg")
8782 "font" font name (only available in the GUI)
8783 |highlight-font|
8784 "sp" special color for the GUI (as with "fg")
8785 |highlight-guisp|
8786 "ul" underline color for cterm: number as a string
8787 "fg#" like "fg", but for the GUI and the GUI is
8788 running the name in "#RRGGBB" form
8789 "bg#" like "fg#" for "bg"
8790 "sp#" like "fg#" for "sp"
8791 "bold" "1" if bold
8792 "italic" "1" if italic
8793 "reverse" "1" if reverse
8794 "inverse" "1" if inverse (= reverse)
8795 "standout" "1" if standout
8796 "underline" "1" if underlined
8797 "undercurl" "1" if undercurled
8798 "strike" "1" if strikethrough
8799
8800 Example (echoes the color of the syntax item under the
8801 cursor): >
8802 :echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg")
8803<
8804 Can also be used as a |method|: >
8805 :echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
8806
8807
8808synIDtrans({synID}) *synIDtrans()*
8809 The result is a Number, which is the translated syntax ID of
8810 {synID}. This is the syntax group ID of what is being used to
8811 highlight the character. Highlight links given with
8812 ":highlight link" are followed.
8813
8814 Can also be used as a |method|: >
8815 :echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
8816
8817synconcealed({lnum}, {col}) *synconcealed()*
8818 The result is a |List| with currently three items:
8819 1. The first item in the list is 0 if the character at the
8820 position {lnum} and {col} is not part of a concealable
8821 region, 1 if it is. {lnum} is used like with |getline()|.
8822 2. The second item in the list is a string. If the first item
8823 is 1, the second item contains the text which will be
8824 displayed in place of the concealed text, depending on the
8825 current setting of 'conceallevel' and 'listchars'.
8826 3. The third and final item in the list is a number
8827 representing the specific syntax region matched in the
8828 line. When the character is not concealed the value is
8829 zero. This allows detection of the beginning of a new
8830 concealable region if there are two consecutive regions
8831 with the same replacement character. For an example, if
8832 the text is "123456" and both "23" and "45" are concealed
8833 and replaced by the character "X", then:
8834 call returns ~
8835 synconcealed(lnum, 1) [0, '', 0]
8836 synconcealed(lnum, 2) [1, 'X', 1]
8837 synconcealed(lnum, 3) [1, 'X', 1]
8838 synconcealed(lnum, 4) [1, 'X', 2]
8839 synconcealed(lnum, 5) [1, 'X', 2]
8840 synconcealed(lnum, 6) [0, '', 0]
8841
8842
8843synstack({lnum}, {col}) *synstack()*
8844 Return a |List|, which is the stack of syntax items at the
8845 position {lnum} and {col} in the current window. {lnum} is
8846 used like with |getline()|. Each item in the List is an ID
8847 like what |synID()| returns.
8848 The first item in the List is the outer region, following are
8849 items contained in that one. The last one is what |synID()|
8850 returns, unless not the whole item is highlighted or it is a
8851 transparent item.
8852 This function is useful for debugging a syntax file.
8853 Example that shows the syntax stack under the cursor: >
8854 for id in synstack(line("."), col("."))
8855 echo synIDattr(id, "name")
8856 endfor
8857< When the position specified with {lnum} and {col} is invalid
8858 nothing is returned. The position just after the last
8859 character in a line and the first column in an empty line are
8860 valid positions.
8861
8862system({expr} [, {input}]) *system()* *E677*
8863 Get the output of the shell command {expr} as a |String|. See
8864 |systemlist()| to get the output as a |List|.
8865
8866 When {input} is given and is a |String| this string is written
8867 to a file and passed as stdin to the command. The string is
8868 written as-is, you need to take care of using the correct line
8869 separators yourself.
8870 If {input} is given and is a |List| it is written to the file
8871 in a way |writefile()| does with {binary} set to "b" (i.e.
8872 with a newline between each list item with newlines inside
8873 list items converted to NULs).
8874 When {input} is given and is a number that is a valid id for
8875 an existing buffer then the content of the buffer is written
8876 to the file line by line, each line terminated by a NL and
8877 NULs characters where the text has a NL.
8878
8879 Pipes are not used, the 'shelltemp' option is not used.
8880
8881 When prepended by |:silent| the terminal will not be set to
8882 cooked mode. This is meant to be used for commands that do
8883 not need the user to type. It avoids stray characters showing
8884 up on the screen which require |CTRL-L| to remove. >
8885 :silent let f = system('ls *.vim')
8886<
8887 Note: Use |shellescape()| or |::S| with |expand()| or
8888 |fnamemodify()| to escape special characters in a command
8889 argument. Newlines in {expr} may cause the command to fail.
8890 The characters in 'shellquote' and 'shellxquote' may also
8891 cause trouble.
8892 This is not to be used for interactive commands.
8893
8894 The result is a String. Example: >
8895 :let files = system("ls " . shellescape(expand('%:h')))
8896 :let files = system('ls ' . expand('%:h:S'))
8897
8898< To make the result more system-independent, the shell output
8899 is filtered to replace <CR> with <NL> for Macintosh, and
8900 <CR><NL> with <NL> for DOS-like systems.
8901 To avoid the string being truncated at a NUL, all NUL
8902 characters are replaced with SOH (0x01).
8903
8904 The command executed is constructed using several options:
8905 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote'
8906 ({tmp} is an automatically generated file name).
8907 For Unix, braces are put around {expr} to allow for
8908 concatenated commands.
8909
8910 The command will be executed in "cooked" mode, so that a
8911 CTRL-C will interrupt the command (on Unix at least).
8912
8913 The resulting error code can be found in |v:shell_error|.
8914 This function will fail in |restricted-mode|.
8915
8916 Note that any wrong value in the options mentioned above may
8917 make the function fail. It has also been reported to fail
8918 when using a security agent application.
8919 Unlike ":!cmd" there is no automatic check for changed files.
8920 Use |:checktime| to force a check.
8921
8922 Can also be used as a |method|: >
8923 :echo GetCmd()->system()
8924
8925
8926systemlist({expr} [, {input}]) *systemlist()*
8927 Same as |system()|, but returns a |List| with lines (parts of
8928 output separated by NL) with NULs transformed into NLs. Output
8929 is the same as |readfile()| will output with {binary} argument
8930 set to "b", except that there is no extra empty item when the
8931 result ends in a NL.
8932 Note that on MS-Windows you may get trailing CR characters.
8933
8934 To see the difference between "echo hello" and "echo -n hello"
8935 use |system()| and |split()|: >
8936 echo system('echo hello')->split('\n', 1)
8937<
8938 Returns an empty string on error.
8939
8940 Can also be used as a |method|: >
8941 :echo GetCmd()->systemlist()
8942
8943
8944tabpagebuflist([{arg}]) *tabpagebuflist()*
8945 The result is a |List|, where each item is the number of the
8946 buffer associated with each window in the current tab page.
8947 {arg} specifies the number of the tab page to be used. When
8948 omitted the current tab page is used.
8949 When {arg} is invalid the number zero is returned.
8950 To get a list of all buffers in all tabs use this: >
8951 let buflist = []
8952 for i in range(tabpagenr('$'))
8953 call extend(buflist, tabpagebuflist(i + 1))
8954 endfor
8955< Note that a buffer may appear in more than one window.
8956
8957 Can also be used as a |method|: >
8958 GetTabpage()->tabpagebuflist()
8959
8960tabpagenr([{arg}]) *tabpagenr()*
8961 The result is a Number, which is the number of the current
8962 tab page. The first tab page has number 1.
8963
8964 The optional argument {arg} supports the following values:
8965 $ the number of the last tab page (the tab page
8966 count).
8967 # the number of the last accessed tab page
8968 (where |g<Tab>| goes to). if there is no
8969 previous tab page 0 is returned.
8970 The number can be used with the |:tab| command.
8971
8972
8973tabpagewinnr({tabarg} [, {arg}]) *tabpagewinnr()*
8974 Like |winnr()| but for tab page {tabarg}.
8975 {tabarg} specifies the number of tab page to be used.
8976 {arg} is used like with |winnr()|:
8977 - When omitted the current window number is returned. This is
8978 the window which will be used when going to this tab page.
8979 - When "$" the number of windows is returned.
8980 - When "#" the previous window nr is returned.
8981 Useful examples: >
8982 tabpagewinnr(1) " current window of tab page 1
8983 tabpagewinnr(4, '$') " number of windows in tab page 4
8984< When {tabarg} is invalid zero is returned.
8985
8986 Can also be used as a |method|: >
8987 GetTabpage()->tabpagewinnr()
8988<
8989 *tagfiles()*
8990tagfiles() Returns a |List| with the file names used to search for tags
8991 for the current buffer. This is the 'tags' option expanded.
8992
8993
8994taglist({expr} [, {filename}]) *taglist()*
8995 Returns a |List| of tags matching the regular expression {expr}.
8996
8997 If {filename} is passed it is used to prioritize the results
8998 in the same way that |:tselect| does. See |tag-priority|.
8999 {filename} should be the full path of the file.
9000
9001 Each list item is a dictionary with at least the following
9002 entries:
9003 name Name of the tag.
9004 filename Name of the file where the tag is
9005 defined. It is either relative to the
9006 current directory or a full path.
9007 cmd Ex command used to locate the tag in
9008 the file.
9009 kind Type of the tag. The value for this
9010 entry depends on the language specific
9011 kind values. Only available when
9012 using a tags file generated by
9013 Exuberant ctags or hdrtag.
9014 static A file specific tag. Refer to
9015 |static-tag| for more information.
9016 More entries may be present, depending on the content of the
9017 tags file: access, implementation, inherits and signature.
9018 Refer to the ctags documentation for information about these
9019 fields. For C code the fields "struct", "class" and "enum"
9020 may appear, they give the name of the entity the tag is
9021 contained in.
9022
9023 The ex-command "cmd" can be either an ex search pattern, a
9024 line number or a line number followed by a byte number.
9025
9026 If there are no matching tags, then an empty list is returned.
9027
9028 To get an exact tag match, the anchors '^' and '$' should be
9029 used in {expr}. This also make the function work faster.
9030 Refer to |tag-regexp| for more information about the tag
9031 search regular expression pattern.
9032
9033 Refer to |'tags'| for information about how the tags file is
9034 located by Vim. Refer to |tags-file-format| for the format of
9035 the tags file generated by the different ctags tools.
9036
9037 Can also be used as a |method|: >
9038 GetTagpattern()->taglist()
9039
9040tan({expr}) *tan()*
9041 Return the tangent of {expr}, measured in radians, as a |Float|
9042 in the range [-inf, inf].
9043 {expr} must evaluate to a |Float| or a |Number|.
9044 Examples: >
9045 :echo tan(10)
9046< 0.648361 >
9047 :echo tan(-4.01)
9048< -1.181502
9049
9050 Can also be used as a |method|: >
9051 Compute()->tan()
9052<
9053 {only available when compiled with the |+float| feature}
9054
9055
9056tanh({expr}) *tanh()*
9057 Return the hyperbolic tangent of {expr} as a |Float| in the
9058 range [-1, 1].
9059 {expr} must evaluate to a |Float| or a |Number|.
9060 Examples: >
9061 :echo tanh(0.5)
9062< 0.462117 >
9063 :echo tanh(-1)
9064< -0.761594
9065
9066 Can also be used as a |method|: >
9067 Compute()->tanh()
9068<
9069 {only available when compiled with the |+float| feature}
9070
9071
9072tempname() *tempname()* *temp-file-name*
9073 The result is a String, which is the name of a file that
9074 doesn't exist. It can be used for a temporary file. The name
9075 is different for at least 26 consecutive calls. Example: >
9076 :let tmpfile = tempname()
9077 :exe "redir > " . tmpfile
9078< For Unix, the file will be in a private directory |tempfile|.
9079 For MS-Windows forward slashes are used when the 'shellslash'
9080 option is set, or when 'shellcmdflag' starts with '-' and
9081 'shell' does not contain powershell or pwsh.
9082
9083
9084term_ functions are documented here: |terminal-function-details|
9085
9086
9087terminalprops() *terminalprops()*
9088 Returns a |Dictionary| with properties of the terminal that Vim
9089 detected from the response to |t_RV| request. See
9090 |v:termresponse| for the response itself. If |v:termresponse|
9091 is empty most values here will be 'u' for unknown.
9092 cursor_style whether sending |t_RS| works **
9093 cursor_blink_mode whether sending |t_RC| works **
9094 underline_rgb whether |t_8u| works **
9095 mouse mouse type supported
9096
9097 ** value 'u' for unknown, 'y' for yes, 'n' for no
9098
9099 If the |+termresponse| feature is missing then the result is
9100 an empty dictionary.
9101
9102 If "cursor_style" is 'y' then |t_RS| will be sent to request the
9103 current cursor style.
9104 If "cursor_blink_mode" is 'y' then |t_RC| will be sent to
9105 request the cursor blink status.
9106 "cursor_style" and "cursor_blink_mode" are also set if |t_u7|
9107 is not empty, Vim will detect the working of sending |t_RS|
9108 and |t_RC| on startup.
9109
9110 When "underline_rgb" is not 'y', then |t_8u| will be made empty.
9111 This avoids sending it to xterm, which would clear the colors.
9112
9113 For "mouse" the value 'u' is unknown
9114
9115 Also see:
9116 - 'ambiwidth' - detected by using |t_u7|.
9117 - |v:termstyleresp| and |v:termblinkresp| for the response to
9118 |t_RS| and |t_RC|.
9119
9120
9121test_ functions are documented here: |test-functions-details|
9122
9123
9124 *timer_info()*
9125timer_info([{id}])
9126 Return a list with information about timers.
9127 When {id} is given only information about this timer is
9128 returned. When timer {id} does not exist an empty list is
9129 returned.
9130 When {id} is omitted information about all timers is returned.
9131
9132 For each timer the information is stored in a |Dictionary| with
9133 these items:
9134 "id" the timer ID
9135 "time" time the timer was started with
9136 "remaining" time until the timer fires
9137 "repeat" number of times the timer will still fire;
9138 -1 means forever
9139 "callback" the callback
9140 "paused" 1 if the timer is paused, 0 otherwise
9141
9142 Can also be used as a |method|: >
9143 GetTimer()->timer_info()
9144
9145< {only available when compiled with the |+timers| feature}
9146
9147timer_pause({timer}, {paused}) *timer_pause()*
9148 Pause or unpause a timer. A paused timer does not invoke its
9149 callback when its time expires. Unpausing a timer may cause
9150 the callback to be invoked almost immediately if enough time
9151 has passed.
9152
9153 Pausing a timer is useful to avoid the callback to be called
9154 for a short time.
9155
9156 If {paused} evaluates to a non-zero Number or a non-empty
9157 String, then the timer is paused, otherwise it is unpaused.
9158 See |non-zero-arg|.
9159
9160 Can also be used as a |method|: >
9161 GetTimer()->timer_pause(1)
9162
9163< {only available when compiled with the |+timers| feature}
9164
9165 *timer_start()* *timer* *timers*
9166timer_start({time}, {callback} [, {options}])
9167 Create a timer and return the timer ID.
9168
9169 {time} is the waiting time in milliseconds. This is the
9170 minimum time before invoking the callback. When the system is
9171 busy or Vim is not waiting for input the time will be longer.
9172
9173 {callback} is the function to call. It can be the name of a
9174 function or a |Funcref|. It is called with one argument, which
9175 is the timer ID. The callback is only invoked when Vim is
9176 waiting for input.
9177 If you want to show a message look at |popup_notification()|
9178 to avoid interfering with what the user is doing.
9179
9180 {options} is a dictionary. Supported entries:
9181 "repeat" Number of times to repeat calling the
9182 callback. -1 means forever. When not present
9183 the callback will be called once.
9184 If the timer causes an error three times in a
9185 row the repeat is cancelled. This avoids that
9186 Vim becomes unusable because of all the error
9187 messages.
9188
9189 Example: >
9190 func MyHandler(timer)
9191 echo 'Handler called'
9192 endfunc
9193 let timer = timer_start(500, 'MyHandler',
9194 \ {'repeat': 3})
9195< This will invoke MyHandler() three times at 500 msec
9196 intervals.
9197
9198 Can also be used as a |method|: >
9199 GetMsec()->timer_start(callback)
9200
9201< Not available in the |sandbox|.
9202 {only available when compiled with the |+timers| feature}
9203
9204timer_stop({timer}) *timer_stop()*
9205 Stop a timer. The timer callback will no longer be invoked.
9206 {timer} is an ID returned by timer_start(), thus it must be a
9207 Number. If {timer} does not exist there is no error.
9208
9209 Can also be used as a |method|: >
9210 GetTimer()->timer_stop()
9211
9212< {only available when compiled with the |+timers| feature}
9213
9214timer_stopall() *timer_stopall()*
9215 Stop all timers. The timer callbacks will no longer be
9216 invoked. Useful if a timer is misbehaving. If there are no
9217 timers there is no error.
9218
9219 {only available when compiled with the |+timers| feature}
9220
9221tolower({expr}) *tolower()*
9222 The result is a copy of the String given, with all uppercase
9223 characters turned into lowercase (just like applying |gu| to
9224 the string).
9225
9226 Can also be used as a |method|: >
9227 GetText()->tolower()
9228
9229toupper({expr}) *toupper()*
9230 The result is a copy of the String given, with all lowercase
9231 characters turned into uppercase (just like applying |gU| to
9232 the string).
9233
9234 Can also be used as a |method|: >
9235 GetText()->toupper()
9236
9237tr({src}, {fromstr}, {tostr}) *tr()*
9238 The result is a copy of the {src} string with all characters
9239 which appear in {fromstr} replaced by the character in that
9240 position in the {tostr} string. Thus the first character in
9241 {fromstr} is translated into the first character in {tostr}
9242 and so on. Exactly like the unix "tr" command.
9243 This code also deals with multibyte characters properly.
9244
9245 Examples: >
9246 echo tr("hello there", "ht", "HT")
9247< returns "Hello THere" >
9248 echo tr("<blob>", "<>", "{}")
9249< returns "{blob}"
9250
9251 Can also be used as a |method|: >
9252 GetText()->tr(from, to)
9253
9254trim({text} [, {mask} [, {dir}]]) *trim()*
9255 Return {text} as a String where any character in {mask} is
9256 removed from the beginning and/or end of {text}.
9257
9258 If {mask} is not given, {mask} is all characters up to 0x20,
9259 which includes Tab, space, NL and CR, plus the non-breaking
9260 space character 0xa0.
9261
9262 The optional {dir} argument specifies where to remove the
9263 characters:
9264 0 remove from the beginning and end of {text}
9265 1 remove only at the beginning of {text}
9266 2 remove only at the end of {text}
9267 When omitted both ends are trimmed.
9268
9269 This function deals with multibyte characters properly.
9270
9271 Examples: >
9272 echo trim(" some text ")
9273< returns "some text" >
9274 echo trim(" \r\t\t\r RESERVE \t\n\x0B\xA0") . "_TAIL"
9275< returns "RESERVE_TAIL" >
9276 echo trim("rm<Xrm<>X>rrm", "rm<>")
9277< returns "Xrm<>X" (characters in the middle are not removed) >
9278 echo trim(" vim ", " ", 2)
9279< returns " vim"
9280
9281 Can also be used as a |method|: >
9282 GetText()->trim()
9283
9284trunc({expr}) *trunc()*
9285 Return the largest integral value with magnitude less than or
9286 equal to {expr} as a |Float| (truncate towards zero).
9287 {expr} must evaluate to a |Float| or a |Number|.
9288 Examples: >
9289 echo trunc(1.456)
9290< 1.0 >
9291 echo trunc(-5.456)
9292< -5.0 >
9293 echo trunc(4.0)
9294< 4.0
9295
9296 Can also be used as a |method|: >
9297 Compute()->trunc()
9298<
9299 {only available when compiled with the |+float| feature}
9300
9301 *type()*
9302type({expr}) The result is a Number representing the type of {expr}.
9303 Instead of using the number directly, it is better to use the
9304 v:t_ variable that has the value:
9305 Number: 0 |v:t_number|
9306 String: 1 |v:t_string|
9307 Funcref: 2 |v:t_func|
9308 List: 3 |v:t_list|
9309 Dictionary: 4 |v:t_dict|
9310 Float: 5 |v:t_float|
9311 Boolean: 6 |v:t_bool| (v:false and v:true)
9312 None: 7 |v:t_none| (v:null and v:none)
9313 Job: 8 |v:t_job|
9314 Channel: 9 |v:t_channel|
9315 Blob: 10 |v:t_blob|
9316 For backward compatibility, this method can be used: >
9317 :if type(myvar) == type(0)
9318 :if type(myvar) == type("")
9319 :if type(myvar) == type(function("tr"))
9320 :if type(myvar) == type([])
9321 :if type(myvar) == type({})
9322 :if type(myvar) == type(0.0)
9323 :if type(myvar) == type(v:false)
9324 :if type(myvar) == type(v:none)
9325< To check if the v:t_ variables exist use this: >
9326 :if exists('v:t_number')
9327
9328< Can also be used as a |method|: >
9329 mylist->type()
9330
9331
9332typename({expr}) *typename()*
9333 Return a string representation of the type of {expr}.
9334 Example: >
9335 echo typename([1, 2, 3])
9336 list<number>
9337
9338
9339undofile({name}) *undofile()*
9340 Return the name of the undo file that would be used for a file
9341 with name {name} when writing. This uses the 'undodir'
9342 option, finding directories that exist. It does not check if
9343 the undo file exists.
9344 {name} is always expanded to the full path, since that is what
9345 is used internally.
9346 If {name} is empty undofile() returns an empty string, since a
9347 buffer without a file name will not write an undo file.
9348 Useful in combination with |:wundo| and |:rundo|.
9349 When compiled without the |+persistent_undo| option this always
9350 returns an empty string.
9351
9352 Can also be used as a |method|: >
9353 GetFilename()->undofile()
9354
9355undotree() *undotree()*
9356 Return the current state of the undo tree in a dictionary with
9357 the following items:
9358 "seq_last" The highest undo sequence number used.
9359 "seq_cur" The sequence number of the current position in
9360 the undo tree. This differs from "seq_last"
9361 when some changes were undone.
9362 "time_cur" Time last used for |:earlier| and related
9363 commands. Use |strftime()| to convert to
9364 something readable.
9365 "save_last" Number of the last file write. Zero when no
9366 write yet.
9367 "save_cur" Number of the current position in the undo
9368 tree.
9369 "synced" Non-zero when the last undo block was synced.
9370 This happens when waiting from input from the
9371 user. See |undo-blocks|.
9372 "entries" A list of dictionaries with information about
9373 undo blocks.
9374
9375 The first item in the "entries" list is the oldest undo item.
9376 Each List item is a |Dictionary| with these items:
9377 "seq" Undo sequence number. Same as what appears in
9378 |:undolist|.
9379 "time" Timestamp when the change happened. Use
9380 |strftime()| to convert to something readable.
9381 "newhead" Only appears in the item that is the last one
9382 that was added. This marks the last change
9383 and where further changes will be added.
9384 "curhead" Only appears in the item that is the last one
9385 that was undone. This marks the current
9386 position in the undo tree, the block that will
9387 be used by a redo command. When nothing was
9388 undone after the last change this item will
9389 not appear anywhere.
9390 "save" Only appears on the last block before a file
9391 write. The number is the write count. The
9392 first write has number 1, the last one the
9393 "save_last" mentioned above.
9394 "alt" Alternate entry. This is again a List of undo
9395 blocks. Each item may again have an "alt"
9396 item.
9397
9398uniq({list} [, {func} [, {dict}]]) *uniq()* *E882*
9399 Remove second and succeeding copies of repeated adjacent
9400 {list} items in-place. Returns {list}. If you want a list
9401 to remain unmodified make a copy first: >
9402 :let newlist = uniq(copy(mylist))
9403< The default compare function uses the string representation of
9404 each item. For the use of {func} and {dict} see |sort()|.
9405
9406 Can also be used as a |method|: >
9407 mylist->uniq()
9408
9409values({dict}) *values()*
9410 Return a |List| with all the values of {dict}. The |List| is
9411 in arbitrary order. Also see |items()| and |keys()|.
9412
9413 Can also be used as a |method|: >
9414 mydict->values()
9415
9416virtcol({expr}) *virtcol()*
9417 The result is a Number, which is the screen column of the file
9418 position given with {expr}. That is, the last screen position
9419 occupied by the character at that position, when the screen
9420 would be of unlimited width. When there is a <Tab> at the
9421 position, the returned Number will be the column at the end of
9422 the <Tab>. For example, for a <Tab> in column 1, with 'ts'
9423 set to 8, it returns 8. |conceal| is ignored.
9424 For the byte position use |col()|.
9425 For the use of {expr} see |col()|.
9426 When 'virtualedit' is used {expr} can be [lnum, col, off], where
9427 "off" is the offset in screen columns from the start of the
9428 character. E.g., a position within a <Tab> or after the last
9429 character. When "off" is omitted zero is used.
9430 When Virtual editing is active in the current mode, a position
9431 beyond the end of the line can be returned. |'virtualedit'|
9432 The accepted positions are:
9433 . the cursor position
9434 $ the end of the cursor line (the result is the
9435 number of displayed characters in the cursor line
9436 plus one)
9437 'x position of mark x (if the mark is not set, 0 is
9438 returned)
9439 v In Visual mode: the start of the Visual area (the
9440 cursor is the end). When not in Visual mode
9441 returns the cursor position. Differs from |'<| in
9442 that it's updated right away.
9443 Note that only marks in the current file can be used.
9444 Examples: >
9445 virtcol(".") with text "foo^Lbar", with cursor on the "^L", returns 5
9446 virtcol("$") with text "foo^Lbar", returns 9
9447 virtcol("'t") with text " there", with 't at 'h', returns 6
9448< The first column is 1. 0 is returned for an error.
9449 A more advanced example that echoes the maximum length of
9450 all lines: >
9451 echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
9452
9453< Can also be used as a |method|: >
9454 GetPos()->virtcol()
9455
9456
9457visualmode([{expr}]) *visualmode()*
9458 The result is a String, which describes the last Visual mode
9459 used in the current buffer. Initially it returns an empty
9460 string, but once Visual mode has been used, it returns "v",
9461 "V", or "<CTRL-V>" (a single CTRL-V character) for
9462 character-wise, line-wise, or block-wise Visual mode
9463 respectively.
9464 Example: >
9465 :exe "normal " . visualmode()
9466< This enters the same Visual mode as before. It is also useful
9467 in scripts if you wish to act differently depending on the
9468 Visual mode that was used.
9469 If Visual mode is active, use |mode()| to get the Visual mode
9470 (e.g., in a |:vmap|).
9471 If {expr} is supplied and it evaluates to a non-zero Number or
9472 a non-empty String, then the Visual mode will be cleared and
9473 the old value is returned. See |non-zero-arg|.
9474
9475wildmenumode() *wildmenumode()*
9476 Returns |TRUE| when the wildmenu is active and |FALSE|
9477 otherwise. See 'wildmenu' and 'wildmode'.
9478 This can be used in mappings to handle the 'wildcharm' option
9479 gracefully. (Makes only sense with |mapmode-c| mappings).
9480
9481 For example to make <c-j> work like <down> in wildmode, use: >
9482 :cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"
9483<
9484 (Note, this needs the 'wildcharm' option set appropriately).
9485
9486win_execute({id}, {command} [, {silent}]) *win_execute()*
9487 Like `execute()` but in the context of window {id}.
9488 The window will temporarily be made the current window,
9489 without triggering autocommands or changing directory. When
9490 executing {command} autocommands will be triggered, this may
9491 have unexpected side effects. Use |:noautocmd| if needed.
9492 Example: >
9493 call win_execute(winid, 'set syntax=python')
9494< Doing the same with `setwinvar()` would not trigger
9495 autocommands and not actually show syntax highlighting.
9496
9497 *E994*
9498 Not all commands are allowed in popup windows.
9499 When window {id} does not exist then no error is given and
9500 an empty string is returned.
9501
9502 Can also be used as a |method|, the base is passed as the
9503 second argument: >
9504 GetCommand()->win_execute(winid)
9505
9506win_findbuf({bufnr}) *win_findbuf()*
9507 Returns a |List| with |window-ID|s for windows that contain
9508 buffer {bufnr}. When there is none the list is empty.
9509
9510 Can also be used as a |method|: >
9511 GetBufnr()->win_findbuf()
9512
9513win_getid([{win} [, {tab}]]) *win_getid()*
9514 Get the |window-ID| for the specified window.
9515 When {win} is missing use the current window.
9516 With {win} this is the window number. The top window has
9517 number 1.
9518 Without {tab} use the current tab, otherwise the tab with
9519 number {tab}. The first tab has number one.
9520 Return zero if the window cannot be found.
9521
9522 Can also be used as a |method|: >
9523 GetWinnr()->win_getid()
9524
9525
9526win_gettype([{nr}]) *win_gettype()*
9527 Return the type of the window:
9528 "autocmd" autocommand window. Temporary window
9529 used to execute autocommands.
9530 "command" command-line window |cmdwin|
9531 (empty) normal window
9532 "loclist" |location-list-window|
9533 "popup" popup window |popup|
9534 "preview" preview window |preview-window|
9535 "quickfix" |quickfix-window|
9536 "unknown" window {nr} not found
9537
9538 When {nr} is omitted return the type of the current window.
9539 When {nr} is given return the type of this window by number or
9540 |window-ID|.
9541
9542 Also see the 'buftype' option. When running a terminal in a
9543 popup window then 'buftype' is "terminal" and win_gettype()
9544 returns "popup".
9545
9546 Can also be used as a |method|: >
9547 GetWinid()->win_gettype()
9548<
9549win_gotoid({expr}) *win_gotoid()*
9550 Go to window with ID {expr}. This may also change the current
9551 tabpage.
9552 Return TRUE if successful, FALSE if the window cannot be found.
9553
9554 Can also be used as a |method|: >
9555 GetWinid()->win_gotoid()
9556
9557win_id2tabwin({expr}) *win_id2tabwin()*
9558 Return a list with the tab number and window number of window
9559 with ID {expr}: [tabnr, winnr].
9560 Return [0, 0] if the window cannot be found.
9561
9562 Can also be used as a |method|: >
9563 GetWinid()->win_id2tabwin()
9564
9565win_id2win({expr}) *win_id2win()*
9566 Return the window number of window with ID {expr}.
9567 Return 0 if the window cannot be found in the current tabpage.
9568
9569 Can also be used as a |method|: >
9570 GetWinid()->win_id2win()
9571
Daniel Steinbergee630312022-01-10 13:36:34 +00009572win_move_separator({nr}, {offset}) *win_move_separator()*
9573 Move window {nr}'s vertical separator (i.e., the right border)
9574 by {offset} columns, as if being dragged by the mouse. {nr}
9575 can be a window number or |window-ID|. A positive {offset}
9576 moves right and a negative {offset} moves left. Moving a
9577 window's vertical separator will change the width of the
9578 window and the width of other windows adjacent to the vertical
9579 separator. The magnitude of movement may be smaller than
9580 specified (e.g., as a consequence of maintaining
9581 'winminwidth'). Returns TRUE if the window can be found and
9582 FALSE otherwise.
9583
9584 Can also be used as a |method|: >
9585 GetWinnr()->win_move_separator(offset)
9586
9587win_move_statusline({nr}, {offset}) *win_move_statusline()*
9588 Move window {nr}'s status line (i.e., the bottom border) by
9589 {offset} rows, as if being dragged by the mouse. {nr} can be a
9590 window number or |window-ID|. A positive {offset} moves down
9591 and a negative {offset} moves up. Moving a window's status
9592 line will change the height of the window and the height of
9593 other windows adjacent to the status line. The magnitude of
9594 movement may be smaller than specified (e.g., as a consequence
9595 of maintaining 'winminheight'). Returns TRUE if the window can
9596 be found and FALSE otherwise.
9597
9598 Can also be used as a |method|: >
9599 GetWinnr()->win_move_statusline(offset)
9600
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009601win_screenpos({nr}) *win_screenpos()*
9602 Return the screen position of window {nr} as a list with two
9603 numbers: [row, col]. The first window always has position
9604 [1, 1], unless there is a tabline, then it is [2, 1].
9605 {nr} can be the window number or the |window-ID|. Use zero
9606 for the current window.
9607 Returns [0, 0] if the window cannot be found in the current
9608 tabpage.
9609
9610 Can also be used as a |method|: >
9611 GetWinid()->win_screenpos()
9612<
9613win_splitmove({nr}, {target} [, {options}]) *win_splitmove()*
9614 Move the window {nr} to a new split of the window {target}.
9615 This is similar to moving to {target}, creating a new window
9616 using |:split| but having the same contents as window {nr}, and
9617 then closing {nr}.
9618
9619 Both {nr} and {target} can be window numbers or |window-ID|s.
9620 Both must be in the current tab page.
9621
9622 Returns zero for success, non-zero for failure.
9623
9624 {options} is a |Dictionary| with the following optional entries:
9625 "vertical" When TRUE, the split is created vertically,
9626 like with |:vsplit|.
9627 "rightbelow" When TRUE, the split is made below or to the
9628 right (if vertical). When FALSE, it is done
9629 above or to the left (if vertical). When not
9630 present, the values of 'splitbelow' and
9631 'splitright' are used.
9632
9633 Can also be used as a |method|: >
9634 GetWinid()->win_splitmove(target)
9635<
9636
9637 *winbufnr()*
9638winbufnr({nr}) The result is a Number, which is the number of the buffer
9639 associated with window {nr}. {nr} can be the window number or
9640 the |window-ID|.
9641 When {nr} is zero, the number of the buffer in the current
9642 window is returned.
9643 When window {nr} doesn't exist, -1 is returned.
9644 Example: >
9645 :echo "The file in the current window is " . bufname(winbufnr(0))
9646<
9647 Can also be used as a |method|: >
9648 FindWindow()->winbufnr()->bufname()
9649<
9650 *wincol()*
9651wincol() The result is a Number, which is the virtual column of the
9652 cursor in the window. This is counting screen cells from the
9653 left side of the window. The leftmost column is one.
9654
9655 *windowsversion()*
9656windowsversion()
9657 The result is a String. For MS-Windows it indicates the OS
9658 version. E.g, Windows 10 is "10.0", Windows 8 is "6.2",
9659 Windows XP is "5.1". For non-MS-Windows systems the result is
9660 an empty string.
9661
9662winheight({nr}) *winheight()*
9663 The result is a Number, which is the height of window {nr}.
9664 {nr} can be the window number or the |window-ID|.
9665 When {nr} is zero, the height of the current window is
9666 returned. When window {nr} doesn't exist, -1 is returned.
9667 An existing window always has a height of zero or more.
9668 This excludes any window toolbar line.
9669 Examples: >
9670 :echo "The current window has " . winheight(0) . " lines."
9671
9672< Can also be used as a |method|: >
9673 GetWinid()->winheight()
9674<
9675winlayout([{tabnr}]) *winlayout()*
9676 The result is a nested List containing the layout of windows
9677 in a tabpage.
9678
9679 Without {tabnr} use the current tabpage, otherwise the tabpage
9680 with number {tabnr}. If the tabpage {tabnr} is not found,
9681 returns an empty list.
9682
9683 For a leaf window, it returns:
9684 ['leaf', {winid}]
9685 For horizontally split windows, which form a column, it
9686 returns:
9687 ['col', [{nested list of windows}]]
9688 For vertically split windows, which form a row, it returns:
9689 ['row', [{nested list of windows}]]
9690
9691 Example: >
9692 " Only one window in the tab page
9693 :echo winlayout()
9694 ['leaf', 1000]
9695 " Two horizontally split windows
9696 :echo winlayout()
9697 ['col', [['leaf', 1000], ['leaf', 1001]]]
9698 " The second tab page, with three horizontally split
9699 " windows, with two vertically split windows in the
9700 " middle window
9701 :echo winlayout(2)
9702 ['col', [['leaf', 1002], ['row', [['leaf', 1003],
9703 ['leaf', 1001]]], ['leaf', 1000]]]
9704<
9705 Can also be used as a |method|: >
9706 GetTabnr()->winlayout()
9707<
9708 *winline()*
9709winline() The result is a Number, which is the screen line of the cursor
9710 in the window. This is counting screen lines from the top of
9711 the window. The first line is one.
9712 If the cursor was moved the view on the file will be updated
9713 first, this may cause a scroll.
9714
9715 *winnr()*
9716winnr([{arg}]) The result is a Number, which is the number of the current
9717 window. The top window has number 1.
9718 Returns zero for a popup window.
9719
9720 The optional argument {arg} supports the following values:
9721 $ the number of the last window (the window
9722 count).
9723 # the number of the last accessed window (where
9724 |CTRL-W_p| goes to). If there is no previous
9725 window or it is in another tab page 0 is
9726 returned.
9727 {N}j the number of the Nth window below the
9728 current window (where |CTRL-W_j| goes to).
9729 {N}k the number of the Nth window above the current
9730 window (where |CTRL-W_k| goes to).
9731 {N}h the number of the Nth window left of the
9732 current window (where |CTRL-W_h| goes to).
9733 {N}l the number of the Nth window right of the
9734 current window (where |CTRL-W_l| goes to).
9735 The number can be used with |CTRL-W_w| and ":wincmd w"
9736 |:wincmd|.
9737 Also see |tabpagewinnr()| and |win_getid()|.
9738 Examples: >
9739 let window_count = winnr('$')
9740 let prev_window = winnr('#')
9741 let wnum = winnr('3k')
9742
9743< Can also be used as a |method|: >
9744 GetWinval()->winnr()
9745<
9746 *winrestcmd()*
9747winrestcmd() Returns a sequence of |:resize| commands that should restore
9748 the current window sizes. Only works properly when no windows
9749 are opened or closed and the current window and tab page is
9750 unchanged.
9751 Example: >
9752 :let cmd = winrestcmd()
9753 :call MessWithWindowSizes()
9754 :exe cmd
9755<
9756 *winrestview()*
9757winrestview({dict})
9758 Uses the |Dictionary| returned by |winsaveview()| to restore
9759 the view of the current window.
9760 Note: The {dict} does not have to contain all values, that are
9761 returned by |winsaveview()|. If values are missing, those
9762 settings won't be restored. So you can use: >
9763 :call winrestview({'curswant': 4})
9764<
9765 This will only set the curswant value (the column the cursor
9766 wants to move on vertical movements) of the cursor to column 5
9767 (yes, that is 5), while all other settings will remain the
9768 same. This is useful, if you set the cursor position manually.
9769
9770 If you have changed the values the result is unpredictable.
9771 If the window size changed the result won't be the same.
9772
9773 Can also be used as a |method|: >
9774 GetView()->winrestview()
9775<
9776 *winsaveview()*
9777winsaveview() Returns a |Dictionary| that contains information to restore
9778 the view of the current window. Use |winrestview()| to
9779 restore the view.
9780 This is useful if you have a mapping that jumps around in the
9781 buffer and you want to go back to the original view.
9782 This does not save fold information. Use the 'foldenable'
9783 option to temporarily switch off folding, so that folds are
9784 not opened when moving around. This may have side effects.
9785 The return value includes:
9786 lnum cursor line number
9787 col cursor column (Note: the first column
naohiro ono56200ee2022-01-01 14:59:44 +00009788 zero, as opposed to what |getcurpos()|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009789 returns)
9790 coladd cursor column offset for 'virtualedit'
naohiro ono56200ee2022-01-01 14:59:44 +00009791 curswant column for vertical movement (Note:
9792 the first column is zero, as opposed
9793 to what |getcurpos()| returns). After
9794 |$| command it will be a very large
9795 number equal to |v:maxcol|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009796 topline first line in the window
9797 topfill filler lines, only in diff mode
9798 leftcol first column displayed; only used when
9799 'wrap' is off
9800 skipcol columns skipped
9801 Note that no option values are saved.
9802
9803
9804winwidth({nr}) *winwidth()*
9805 The result is a Number, which is the width of window {nr}.
9806 {nr} can be the window number or the |window-ID|.
9807 When {nr} is zero, the width of the current window is
9808 returned. When window {nr} doesn't exist, -1 is returned.
9809 An existing window always has a width of zero or more.
9810 Examples: >
9811 :echo "The current window has " . winwidth(0) . " columns."
9812 :if winwidth(0) <= 50
9813 : 50 wincmd |
9814 :endif
9815< For getting the terminal or screen size, see the 'columns'
9816 option.
9817
9818 Can also be used as a |method|: >
9819 GetWinid()->winwidth()
9820
9821
9822wordcount() *wordcount()*
9823 The result is a dictionary of byte/chars/word statistics for
9824 the current buffer. This is the same info as provided by
9825 |g_CTRL-G|
9826 The return value includes:
9827 bytes Number of bytes in the buffer
9828 chars Number of chars in the buffer
9829 words Number of words in the buffer
9830 cursor_bytes Number of bytes before cursor position
9831 (not in Visual mode)
9832 cursor_chars Number of chars before cursor position
9833 (not in Visual mode)
9834 cursor_words Number of words before cursor position
9835 (not in Visual mode)
9836 visual_bytes Number of bytes visually selected
9837 (only in Visual mode)
9838 visual_chars Number of chars visually selected
9839 (only in Visual mode)
9840 visual_words Number of words visually selected
9841 (only in Visual mode)
9842
9843
9844 *writefile()*
9845writefile({object}, {fname} [, {flags}])
9846 When {object} is a |List| write it to file {fname}. Each list
9847 item is separated with a NL. Each list item must be a String
9848 or Number.
9849 When {flags} contains "b" then binary mode is used: There will
9850 not be a NL after the last list item. An empty item at the
9851 end does cause the last line in the file to end in a NL.
9852
9853 When {object} is a |Blob| write the bytes to file {fname}
9854 unmodified.
9855
9856 When {flags} contains "a" then append mode is used, lines are
9857 appended to the file: >
9858 :call writefile(["foo"], "event.log", "a")
9859 :call writefile(["bar"], "event.log", "a")
9860<
9861 When {flags} contains "s" then fsync() is called after writing
9862 the file. This flushes the file to disk, if possible. This
9863 takes more time but avoids losing the file if the system
9864 crashes.
9865 When {flags} does not contain "S" or "s" then fsync() is
9866 called if the 'fsync' option is set.
9867 When {flags} contains "S" then fsync() is not called, even
9868 when 'fsync' is set.
9869
9870 All NL characters are replaced with a NUL character.
9871 Inserting CR characters needs to be done before passing {list}
9872 to writefile().
9873 An existing file is overwritten, if possible.
9874 When the write fails -1 is returned, otherwise 0. There is an
9875 error message if the file can't be created or when writing
9876 fails.
9877 Also see |readfile()|.
9878 To copy a file byte for byte: >
9879 :let fl = readfile("foo", "b")
9880 :call writefile(fl, "foocopy", "b")
9881
9882< Can also be used as a |method|: >
9883 GetText()->writefile("thefile")
9884
9885
9886xor({expr}, {expr}) *xor()*
9887 Bitwise XOR on the two arguments. The arguments are converted
9888 to a number. A List, Dict or Float argument causes an error.
9889 Example: >
9890 :let bits = xor(bits, 0x80)
9891<
9892 Can also be used as a |method|: >
9893 :let bits = bits->xor(0x80)
9894<
9895
9896==============================================================================
98973. Feature list *feature-list*
9898
9899There are three types of features:
99001. Features that are only supported when they have been enabled when Vim
9901 was compiled |+feature-list|. Example: >
9902 :if has("cindent")
9903< *gui_running*
99042. Features that are only supported when certain conditions have been met.
9905 Example: >
9906 :if has("gui_running")
9907< *has-patch*
99083. Beyond a certain version or at a certain version and including a specific
9909 patch. The "patch-7.4.248" feature means that the Vim version is 7.5 or
9910 later, or it is version 7.4 and patch 248 was included. Example: >
9911 :if has("patch-7.4.248")
9912< Note that it's possible for patch 248 to be omitted even though 249 is
9913 included. Only happens when cherry-picking patches.
9914 Note that this form only works for patch 7.4.237 and later, before that
9915 you need to check for the patch and the v:version. Example (checking
9916 version 6.2.148 or later): >
9917 :if v:version > 602 || (v:version == 602 && has("patch148"))
9918
9919Hint: To find out if Vim supports backslashes in a file name (MS-Windows),
9920use: `if exists('+shellslash')`
9921
9922
9923acl Compiled with |ACL| support.
9924all_builtin_terms Compiled with all builtin terminals enabled.
9925amiga Amiga version of Vim.
9926arabic Compiled with Arabic support |Arabic|.
9927arp Compiled with ARP support (Amiga).
9928autocmd Compiled with autocommand support. (always true)
9929autochdir Compiled with support for 'autochdir'
9930autoservername Automatically enable |clientserver|
9931balloon_eval Compiled with |balloon-eval| support.
9932balloon_multiline GUI supports multiline balloons.
9933beos BeOS version of Vim.
9934browse Compiled with |:browse| support, and browse() will
9935 work.
9936browsefilter Compiled with support for |browsefilter|.
9937bsd Compiled on an OS in the BSD family (excluding macOS).
9938builtin_terms Compiled with some builtin terminals.
9939byte_offset Compiled with support for 'o' in 'statusline'
9940channel Compiled with support for |channel| and |job|
9941cindent Compiled with 'cindent' support.
9942clientserver Compiled with remote invocation support |clientserver|.
9943clipboard Compiled with 'clipboard' support.
9944clipboard_working Compiled with 'clipboard' support and it can be used.
9945cmdline_compl Compiled with |cmdline-completion| support.
9946cmdline_hist Compiled with |cmdline-history| support.
9947cmdline_info Compiled with 'showcmd' and 'ruler' support.
9948comments Compiled with |'comments'| support.
9949compatible Compiled to be very Vi compatible.
9950conpty Platform where |ConPTY| can be used.
9951cryptv Compiled with encryption support |encryption|.
9952cscope Compiled with |cscope| support.
9953cursorbind Compiled with |'cursorbind'| (always true)
9954debug Compiled with "DEBUG" defined.
9955dialog_con Compiled with console dialog support.
9956dialog_gui Compiled with GUI dialog support.
9957diff Compiled with |vimdiff| and 'diff' support.
9958digraphs Compiled with support for digraphs.
9959directx Compiled with support for DirectX and 'renderoptions'.
9960dnd Compiled with support for the "~ register |quote_~|.
9961drop_file Compiled with |drop_file| support.
9962ebcdic Compiled on a machine with ebcdic character set.
9963emacs_tags Compiled with support for Emacs tags.
9964eval Compiled with expression evaluation support. Always
9965 true, of course!
9966ex_extra |+ex_extra| (always true)
9967extra_search Compiled with support for |'incsearch'| and
9968 |'hlsearch'|
9969farsi Support for Farsi was removed |farsi|.
9970file_in_path Compiled with support for |gf| and |<cfile>|
9971filterpipe When 'shelltemp' is off pipes are used for shell
9972 read/write/filter commands
9973find_in_path Compiled with support for include file searches
9974 |+find_in_path|.
9975float Compiled with support for |Float|.
9976fname_case Case in file names matters (for Amiga and MS-Windows
9977 this is not present).
9978folding Compiled with |folding| support.
9979footer Compiled with GUI footer support. |gui-footer|
9980fork Compiled to use fork()/exec() instead of system().
9981gettext Compiled with message translation |multi-lang|
9982gui Compiled with GUI enabled.
9983gui_athena Compiled with Athena GUI.
9984gui_gnome Compiled with Gnome support (gui_gtk is also defined).
9985gui_gtk Compiled with GTK+ GUI (any version).
9986gui_gtk2 Compiled with GTK+ 2 GUI (gui_gtk is also defined).
9987gui_gtk3 Compiled with GTK+ 3 GUI (gui_gtk is also defined).
9988gui_haiku Compiled with Haiku GUI.
9989gui_mac Compiled with Macintosh GUI.
9990gui_motif Compiled with Motif GUI.
9991gui_photon Compiled with Photon GUI.
9992gui_running Vim is running in the GUI, or it will start soon.
9993gui_win32 Compiled with MS-Windows Win32 GUI.
9994gui_win32s idem, and Win32s system being used (Windows 3.1)
9995haiku Haiku version of Vim.
9996hangul_input Compiled with Hangul input support. |hangul|
9997hpux HP-UX version of Vim.
9998iconv Can use iconv() for conversion.
9999insert_expand Compiled with support for CTRL-X expansion commands in
10000 Insert mode. (always true)
10001job Compiled with support for |channel| and |job|
10002ipv6 Compiled with support for IPv6 networking in |channel|.
10003jumplist Compiled with |jumplist| support.
10004keymap Compiled with 'keymap' support.
10005lambda Compiled with |lambda| support.
10006langmap Compiled with 'langmap' support.
10007libcall Compiled with |libcall()| support.
10008linebreak Compiled with 'linebreak', 'breakat', 'showbreak' and
10009 'breakindent' support.
10010linux Linux version of Vim.
10011lispindent Compiled with support for lisp indenting.
10012listcmds Compiled with commands for the buffer list |:files|
10013 and the argument list |arglist|.
10014localmap Compiled with local mappings and abbr. |:map-local|
10015lua Compiled with Lua interface |Lua|.
10016mac Any Macintosh version of Vim cf. osx
10017macunix Synonym for osxdarwin
10018menu Compiled with support for |:menu|.
10019mksession Compiled with support for |:mksession|.
10020modify_fname Compiled with file name modifiers. |filename-modifiers|
10021 (always true)
10022mouse Compiled with support for mouse.
10023mouse_dec Compiled with support for Dec terminal mouse.
10024mouse_gpm Compiled with support for gpm (Linux console mouse)
10025mouse_gpm_enabled GPM mouse is working
10026mouse_netterm Compiled with support for netterm mouse.
10027mouse_pterm Compiled with support for qnx pterm mouse.
10028mouse_sysmouse Compiled with support for sysmouse (*BSD console mouse)
10029mouse_sgr Compiled with support for sgr mouse.
10030mouse_urxvt Compiled with support for urxvt mouse.
10031mouse_xterm Compiled with support for xterm mouse.
10032mouseshape Compiled with support for 'mouseshape'.
10033multi_byte Compiled with support for 'encoding' (always true)
10034multi_byte_encoding 'encoding' is set to a multibyte encoding.
10035multi_byte_ime Compiled with support for IME input method.
10036multi_lang Compiled with support for multiple languages.
10037mzscheme Compiled with MzScheme interface |mzscheme|.
10038nanotime Compiled with sub-second time stamp checks.
10039netbeans_enabled Compiled with support for |netbeans| and connected.
10040netbeans_intg Compiled with support for |netbeans|.
10041num64 Compiled with 64-bit |Number| support.
10042ole Compiled with OLE automation support for Win32.
10043osx Compiled for macOS cf. mac
10044osxdarwin Compiled for macOS, with |mac-darwin-feature|
10045packages Compiled with |packages| support.
10046path_extra Compiled with up/downwards search in 'path' and 'tags'
10047perl Compiled with Perl interface.
10048persistent_undo Compiled with support for persistent undo history.
10049postscript Compiled with PostScript file printing.
10050printer Compiled with |:hardcopy| support.
10051profile Compiled with |:profile| support.
10052python Python 2.x interface available. |has-python|
10053python_compiled Compiled with Python 2.x interface. |has-python|
10054python_dynamic Python 2.x interface is dynamically loaded. |has-python|
10055python3 Python 3.x interface available. |has-python|
10056python3_compiled Compiled with Python 3.x interface. |has-python|
10057python3_dynamic Python 3.x interface is dynamically loaded. |has-python|
10058pythonx Python 2.x and/or 3.x interface available. |python_x|
10059qnx QNX version of Vim.
10060quickfix Compiled with |quickfix| support.
10061reltime Compiled with |reltime()| support.
10062rightleft Compiled with 'rightleft' support.
10063ruby Compiled with Ruby interface |ruby|.
10064scrollbind Compiled with 'scrollbind' support. (always true)
10065showcmd Compiled with 'showcmd' support.
10066signs Compiled with |:sign| support.
10067smartindent Compiled with 'smartindent' support.
10068sodium Compiled with libsodium for better crypt support
10069sound Compiled with sound support, e.g. `sound_playevent()`
10070spell Compiled with spell checking support |spell|.
10071startuptime Compiled with |--startuptime| support.
10072statusline Compiled with support for 'statusline', 'rulerformat'
10073 and special formats of 'titlestring' and 'iconstring'.
10074sun SunOS version of Vim.
10075sun_workshop Support for Sun |workshop| has been removed.
10076syntax Compiled with syntax highlighting support |syntax|.
10077syntax_items There are active syntax highlighting items for the
10078 current buffer.
10079system Compiled to use system() instead of fork()/exec().
10080tag_binary Compiled with binary searching in tags files
10081 |tag-binary-search|.
10082tag_old_static Support for old static tags was removed, see
10083 |tag-old-static|.
10084tcl Compiled with Tcl interface.
10085termguicolors Compiled with true color in terminal support.
10086terminal Compiled with |terminal| support.
10087terminfo Compiled with terminfo instead of termcap.
10088termresponse Compiled with support for |t_RV| and |v:termresponse|.
10089textobjects Compiled with support for |text-objects|.
10090textprop Compiled with support for |text-properties|.
10091tgetent Compiled with tgetent support, able to use a termcap
10092 or terminfo file.
10093timers Compiled with |timer_start()| support.
10094title Compiled with window title support |'title'|.
10095toolbar Compiled with support for |gui-toolbar|.
10096ttyin input is a terminal (tty)
10097ttyout output is a terminal (tty)
10098unix Unix version of Vim. *+unix*
10099unnamedplus Compiled with support for "unnamedplus" in 'clipboard'
10100user_commands User-defined commands. (always true)
10101vartabs Compiled with variable tabstop support |'vartabstop'|.
10102vcon Win32: Virtual console support is working, can use
10103 'termguicolors'. Also see |+vtp|.
10104vertsplit Compiled with vertically split windows |:vsplit|.
10105 (always true)
10106vim_starting True while initial source'ing takes place. |startup|
10107 *vim_starting*
Bram Moolenaara6feb162022-01-02 12:06:33 +000010108vim9script Compiled with |Vim9| script support
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010109viminfo Compiled with viminfo support.
10110vimscript-1 Compiled Vim script version 1 support
10111vimscript-2 Compiled Vim script version 2 support
10112vimscript-3 Compiled Vim script version 3 support
10113virtualedit Compiled with 'virtualedit' option. (always true)
10114visual Compiled with Visual mode. (always true)
10115visualextra Compiled with extra Visual mode commands. (always
10116 true) |blockwise-operators|.
10117vms VMS version of Vim.
10118vreplace Compiled with |gR| and |gr| commands. (always true)
10119vtp Compiled for vcon support |+vtp| (check vcon to find
10120 out if it works in the current console).
10121wildignore Compiled with 'wildignore' option.
10122wildmenu Compiled with 'wildmenu' option.
10123win16 old version for MS-Windows 3.1 (always false)
10124win32 Win32 version of Vim (MS-Windows 95 and later, 32 or
10125 64 bits)
10126win32unix Win32 version of Vim, using Unix files (Cygwin)
10127win64 Win64 version of Vim (MS-Windows 64 bit).
10128win95 Win32 version for MS-Windows 95/98/ME (always false)
10129winaltkeys Compiled with 'winaltkeys' option.
10130windows Compiled with support for more than one window.
10131 (always true)
10132writebackup Compiled with 'writebackup' default on.
10133xfontset Compiled with X fontset support |xfontset|.
10134xim Compiled with X input method support |xim|.
10135xpm Compiled with pixmap support.
10136xpm_w32 Compiled with pixmap support for Win32. (Only for
10137 backward compatibility. Use "xpm" instead.)
10138xsmp Compiled with X session management support.
10139xsmp_interact Compiled with interactive X session management support.
10140xterm_clipboard Compiled with support for xterm clipboard.
10141xterm_save Compiled with support for saving and restoring the
10142 xterm screen.
10143x11 Compiled with X11 support.
10144
10145
10146==============================================================================
101474. Matching a pattern in a String *string-match*
10148
10149This is common between several functions. A regexp pattern as explained at
10150|pattern| is normally used to find a match in the buffer lines. When a
10151pattern is used to find a match in a String, almost everything works in the
10152same way. The difference is that a String is handled like it is one line.
10153When it contains a "\n" character, this is not seen as a line break for the
10154pattern. It can be matched with a "\n" in the pattern, or with ".". Example:
10155>
10156 :let a = "aaaa\nxxxx"
10157 :echo matchstr(a, "..\n..")
10158 aa
10159 xx
10160 :echo matchstr(a, "a.x")
10161 a
10162 x
10163
10164Don't forget that "^" will only match at the first character of the String and
10165"$" at the last character of the string. They don't match after or before a
10166"\n".
10167
10168 vim:tw=78:ts=8:noet:ft=help:norl: