blob: ea3ce61e91eea5bb37f1cf230af6971d1316508e [file] [log] [blame]
Bram Moolenaarf1dcd142022-12-31 15:30:45 +00001*builtin.txt* For Vim version 9.0. Last change: 2022 Dec 23
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002
3
4 VIM REFERENCE MANUAL by Bram Moolenaar
5
6
7Builtin functions *builtin-functions*
8
Bram Moolenaarf269eab2022-10-03 18:04:35 +01009Note: Expression evaluation can be disabled at compile time, the builtin
10functions are not available then. See |+eval| and |no-eval-feature|.
11
12For functions grouped by what they are used for see |function-list|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000013
141. Overview |builtin-function-list|
152. Details |builtin-function-details|
163. Feature list |feature-list|
174. Matching a pattern in a String |string-match|
18
19==============================================================================
201. Overview *builtin-function-list*
21
22Use CTRL-] on the function name to jump to the full explanation.
23
24USAGE RESULT DESCRIPTION ~
25
26abs({expr}) Float or Number absolute value of {expr}
27acos({expr}) Float arc cosine of {expr}
28add({object}, {item}) List/Blob append {item} to {object}
29and({expr}, {expr}) Number bitwise AND
30append({lnum}, {text}) Number append {text} below line {lnum}
31appendbufline({expr}, {lnum}, {text})
32 Number append {text} below line {lnum}
33 in buffer {expr}
34argc([{winid}]) Number number of files in the argument list
35argidx() Number current index in the argument list
36arglistid([{winnr} [, {tabnr}]]) Number argument list id
37argv({nr} [, {winid}]) String {nr} entry of the argument list
38argv([-1, {winid}]) List the argument list
39asin({expr}) Float arc sine of {expr}
40assert_beeps({cmd}) Number assert {cmd} causes a beep
41assert_equal({exp}, {act} [, {msg}])
42 Number assert {exp} is equal to {act}
43assert_equalfile({fname-one}, {fname-two} [, {msg}])
44 Number assert file contents are equal
45assert_exception({error} [, {msg}])
46 Number assert {error} is in v:exception
47assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
48 Number assert {cmd} fails
49assert_false({actual} [, {msg}])
50 Number assert {actual} is false
51assert_inrange({lower}, {upper}, {actual} [, {msg}])
52 Number assert {actual} is inside the range
53assert_match({pat}, {text} [, {msg}])
54 Number assert {pat} matches {text}
55assert_nobeep({cmd}) Number assert {cmd} does not cause a beep
56assert_notequal({exp}, {act} [, {msg}])
57 Number assert {exp} is not equal {act}
58assert_notmatch({pat}, {text} [, {msg}])
59 Number assert {pat} not matches {text}
60assert_report({msg}) Number report a test failure
61assert_true({actual} [, {msg}]) Number assert {actual} is true
62atan({expr}) Float arc tangent of {expr}
63atan2({expr1}, {expr2}) Float arc tangent of {expr1} / {expr2}
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +010064autocmd_add({acmds}) Bool add a list of autocmds and groups
65autocmd_delete({acmds}) Bool delete a list of autocmds and groups
66autocmd_get([{opts}]) List return a list of autocmds
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000067balloon_gettext() String current text in the balloon
68balloon_show({expr}) none show {expr} inside the balloon
69balloon_split({msg}) List split {msg} as used for a balloon
70blob2list({blob}) List convert {blob} into a list of numbers
71browse({save}, {title}, {initdir}, {default})
72 String put up a file requester
73browsedir({title}, {initdir}) String put up a directory requester
74bufadd({name}) Number add a buffer to the buffer list
75bufexists({buf}) Number |TRUE| if buffer {buf} exists
76buflisted({buf}) Number |TRUE| if buffer {buf} is listed
77bufload({buf}) Number load buffer {buf} if not loaded yet
78bufloaded({buf}) Number |TRUE| if buffer {buf} is loaded
79bufname([{buf}]) String Name of the buffer {buf}
80bufnr([{buf} [, {create}]]) Number Number of the buffer {buf}
81bufwinid({buf}) Number window ID of buffer {buf}
82bufwinnr({buf}) Number window number of buffer {buf}
83byte2line({byte}) Number line number at byte count {byte}
84byteidx({expr}, {nr}) Number byte index of {nr}'th char in {expr}
85byteidxcomp({expr}, {nr}) Number byte index of {nr}'th char in {expr}
86call({func}, {arglist} [, {dict}])
87 any call {func} with arguments {arglist}
88ceil({expr}) Float round {expr} up
89ch_canread({handle}) Number check if there is something to read
90ch_close({handle}) none close {handle}
91ch_close_in({handle}) none close in part of {handle}
92ch_evalexpr({handle}, {expr} [, {options}])
93 any evaluate {expr} on JSON {handle}
94ch_evalraw({handle}, {string} [, {options}])
95 any evaluate {string} on raw {handle}
96ch_getbufnr({handle}, {what}) Number get buffer number for {handle}/{what}
97ch_getjob({channel}) Job get the Job of {channel}
98ch_info({handle}) String info about channel {handle}
99ch_log({msg} [, {handle}]) none write {msg} in the channel log file
100ch_logfile({fname} [, {mode}]) none start logging channel activity
101ch_open({address} [, {options}])
102 Channel open a channel to {address}
103ch_read({handle} [, {options}]) String read from {handle}
104ch_readblob({handle} [, {options}])
105 Blob read Blob from {handle}
106ch_readraw({handle} [, {options}])
107 String read raw from {handle}
108ch_sendexpr({handle}, {expr} [, {options}])
109 any send {expr} over JSON {handle}
110ch_sendraw({handle}, {expr} [, {options}])
111 any send {expr} over raw {handle}
112ch_setoptions({handle}, {options})
113 none set options for {handle}
114ch_status({handle} [, {options}])
115 String status of channel {handle}
116changenr() Number current change number
117char2nr({expr} [, {utf8}]) Number ASCII/UTF-8 value of first char in {expr}
118charclass({string}) Number character class of {string}
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +0000119charcol({expr} [, {winid}]) Number column number of cursor or mark
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000120charidx({string}, {idx} [, {countcc}])
121 Number char index of byte {idx} in {string}
122chdir({dir}) String change current working directory
123cindent({lnum}) Number C indent for line {lnum}
124clearmatches([{win}]) none clear all matches
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +0000125col({expr} [, {winid}]) Number column byte index of cursor or mark
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000126complete({startcol}, {matches}) none set Insert mode completion
127complete_add({expr}) Number add completion match
128complete_check() Number check for key typed during completion
129complete_info([{what}]) Dict get current completion information
130confirm({msg} [, {choices} [, {default} [, {type}]]])
131 Number number of choice picked by user
132copy({expr}) any make a shallow copy of {expr}
133cos({expr}) Float cosine of {expr}
134cosh({expr}) Float hyperbolic cosine of {expr}
135count({comp}, {expr} [, {ic} [, {start}]])
136 Number count how many {expr} are in {comp}
137cscope_connection([{num}, {dbpath} [, {prepend}]])
138 Number checks existence of cscope connection
139cursor({lnum}, {col} [, {off}])
140 Number move cursor to {lnum}, {col}, {off}
141cursor({list}) Number move cursor to position in {list}
142debugbreak({pid}) Number interrupt process being debugged
143deepcopy({expr} [, {noref}]) any make a full copy of {expr}
144delete({fname} [, {flags}]) Number delete the file or directory {fname}
145deletebufline({buf}, {first} [, {last}])
146 Number delete lines from buffer {buf}
147did_filetype() Number |TRUE| if FileType autocmd event used
148diff_filler({lnum}) Number diff filler lines about {lnum}
149diff_hlID({lnum}, {col}) Number diff highlighting at {lnum}/{col}
150digraph_get({chars}) String get the |digraph| of {chars}
151digraph_getlist([{listall}]) List get all |digraph|s
152digraph_set({chars}, {digraph}) Boolean register |digraph|
153digraph_setlist({digraphlist}) Boolean register multiple |digraph|s
154echoraw({expr}) none output {expr} as-is
155empty({expr}) Number |TRUE| if {expr} is empty
156environ() Dict return environment variables
157escape({string}, {chars}) String escape {chars} in {string} with '\'
158eval({string}) any evaluate {string} into its value
159eventhandler() Number |TRUE| if inside an event handler
160executable({expr}) Number 1 if executable {expr} exists
161execute({command}) String execute {command} and get the output
162exepath({expr}) String full path of the command {expr}
163exists({expr}) Number |TRUE| if {expr} exists
164exists_compiled({expr}) Number |TRUE| if {expr} exists at compile time
165exp({expr}) Float exponential of {expr}
166expand({expr} [, {nosuf} [, {list}]])
167 any expand special keywords in {expr}
Yegappan Lakshmanan2b74b682022-04-03 21:30:32 +0100168expandcmd({string} [, {options}])
169 String expand {string} like with `:edit`
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000170extend({expr1}, {expr2} [, {expr3}])
171 List/Dict insert items of {expr2} into {expr1}
172extendnew({expr1}, {expr2} [, {expr3}])
173 List/Dict like |extend()| but creates a new
174 List or Dictionary
175feedkeys({string} [, {mode}]) Number add key sequence to typeahead buffer
176filereadable({file}) Number |TRUE| if {file} is a readable file
177filewritable({file}) Number |TRUE| if {file} is a writable file
178filter({expr1}, {expr2}) List/Dict/Blob/String
179 remove items from {expr1} where
180 {expr2} is 0
181finddir({name} [, {path} [, {count}]])
182 String find directory {name} in {path}
183findfile({name} [, {path} [, {count}]])
184 String find file {name} in {path}
185flatten({list} [, {maxdepth}]) List flatten {list} up to {maxdepth} levels
186flattennew({list} [, {maxdepth}])
187 List flatten a copy of {list}
188float2nr({expr}) Number convert Float {expr} to a Number
189floor({expr}) Float round {expr} down
190fmod({expr1}, {expr2}) Float remainder of {expr1} / {expr2}
191fnameescape({fname}) String escape special characters in {fname}
192fnamemodify({fname}, {mods}) String modify file name
193foldclosed({lnum}) Number first line of fold at {lnum} if closed
194foldclosedend({lnum}) Number last line of fold at {lnum} if closed
195foldlevel({lnum}) Number fold level at {lnum}
196foldtext() String line displayed for closed fold
197foldtextresult({lnum}) String text for closed fold at {lnum}
198foreground() Number bring the Vim window to the foreground
Bram Moolenaaraa534142022-09-15 21:46:02 +0100199fullcommand({name} [, {vim9}]) String get full command from {name}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000200funcref({name} [, {arglist}] [, {dict}])
201 Funcref reference to function {name}
202function({name} [, {arglist}] [, {dict}])
203 Funcref named reference to function {name}
204garbagecollect([{atexit}]) none free memory, breaking cyclic references
205get({list}, {idx} [, {def}]) any get item {idx} from {list} or {def}
206get({dict}, {key} [, {def}]) any get item {key} from {dict} or {def}
207get({func}, {what}) any get property of funcref/partial {func}
208getbufinfo([{buf}]) List information about buffers
209getbufline({buf}, {lnum} [, {end}])
210 List lines {lnum} to {end} of buffer {buf}
Bram Moolenaarce30ccc2022-11-21 19:57:04 +0000211getbufoneline({buf}, {lnum}) String line {lnum} of buffer {buf}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000212getbufvar({buf}, {varname} [, {def}])
213 any variable {varname} in buffer {buf}
214getchangelist([{buf}]) List list of change list items
215getchar([expr]) Number or String
216 get one character from the user
217getcharmod() Number modifiers for the last typed character
218getcharpos({expr}) List position of cursor, mark, etc.
219getcharsearch() Dict last character search
220getcharstr([expr]) String get one character from the user
Shougo Matsushita79d599b2022-05-07 12:48:29 +0100221getcmdcompltype() String return the type of the current
222 command-line completion
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000223getcmdline() String return the current command-line
224getcmdpos() Number return cursor position in command-line
Shougo Matsushita79d599b2022-05-07 12:48:29 +0100225getcmdscreenpos() Number return cursor screen position in
226 command-line
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000227getcmdtype() String return current command-line type
228getcmdwintype() String return current command-line window type
229getcompletion({pat}, {type} [, {filtered}])
230 List list of cmdline completion matches
231getcurpos([{winnr}]) List position of the cursor
232getcursorcharpos([{winnr}]) List character position of the cursor
233getcwd([{winnr} [, {tabnr}]]) String get the current working directory
234getenv({name}) String return environment variable
235getfontname([{name}]) String name of font being used
236getfperm({fname}) String file permissions of file {fname}
237getfsize({fname}) Number size in bytes of file {fname}
238getftime({fname}) Number last modification time of file
239getftype({fname}) String description of type of file {fname}
240getimstatus() Number |TRUE| if the IME status is active
241getjumplist([{winnr} [, {tabnr}]])
242 List list of jump list items
243getline({lnum}) String line {lnum} of current buffer
244getline({lnum}, {end}) List lines {lnum} to {end} of current buffer
245getloclist({nr}) List list of location list items
246getloclist({nr}, {what}) Dict get specific location list properties
247getmarklist([{buf}]) List list of global/local marks
248getmatches([{win}]) List list of current matches
249getmousepos() Dict last known mouse position
Bram Moolenaar24dc19c2022-11-14 19:49:15 +0000250getmouseshape() String current mouse shape name
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000251getpid() Number process ID of Vim
252getpos({expr}) List position of cursor, mark, etc.
253getqflist() List list of quickfix items
254getqflist({what}) Dict get specific quickfix list properties
255getreg([{regname} [, 1 [, {list}]]])
256 String or List contents of a register
257getreginfo([{regname}]) Dict information about a register
258getregtype([{regname}]) String type of a register
Yegappan Lakshmanan520f6ef2022-08-25 17:40:40 +0100259getscriptinfo([{opts}]) List list of sourced scripts
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000260gettabinfo([{expr}]) List list of tab pages
261gettabvar({nr}, {varname} [, {def}])
262 any variable {varname} in tab {nr} or {def}
263gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
264 any {name} in {winnr} in tab page {tabnr}
265gettagstack([{nr}]) Dict get the tag stack of window {nr}
266gettext({text}) String lookup translation of {text}
267getwininfo([{winid}]) List list of info about each window
268getwinpos([{timeout}]) List X and Y coord in pixels of the Vim window
269getwinposx() Number X coord in pixels of the Vim window
270getwinposy() Number Y coord in pixels of the Vim window
271getwinvar({nr}, {varname} [, {def}])
272 any variable {varname} in window {nr}
273glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])
274 any expand file wildcards in {expr}
275glob2regpat({expr}) String convert a glob pat into a search pat
276globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
277 String do glob({expr}) for all dirs in {path}
278has({feature} [, {check}]) Number |TRUE| if feature {feature} supported
279has_key({dict}, {key}) Number |TRUE| if {dict} has entry {key}
280haslocaldir([{winnr} [, {tabnr}]])
281 Number |TRUE| if the window executed |:lcd|
282 or |:tcd|
283hasmapto({what} [, {mode} [, {abbr}]])
284 Number |TRUE| if mapping to {what} exists
285histadd({history}, {item}) Number add an item to a history
286histdel({history} [, {item}]) Number remove an item from a history
287histget({history} [, {index}]) String get the item {index} from a history
288histnr({history}) Number highest index of a history
289hlID({name}) Number syntax ID of highlight group {name}
290hlexists({name}) Number |TRUE| if highlight group {name} exists
291hlget([{name} [, {resolve}]]) List get highlight group attributes
292hlset({list}) Number set highlight group attributes
293hostname() String name of the machine Vim is running on
294iconv({expr}, {from}, {to}) String convert encoding of {expr}
295indent({lnum}) Number indent of line {lnum}
296index({object}, {expr} [, {start} [, {ic}]])
297 Number index in {object} where {expr} appears
Yegappan Lakshmananb2186552022-08-13 13:09:20 +0100298indexof({object}, {expr} [, {opts}]])
299 Number index in {object} where {expr} is true
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000300input({prompt} [, {text} [, {completion}]])
301 String get input from the user
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100302inputdialog({prompt} [, {text} [, {cancelreturn}]])
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000303 String like input() but in a GUI dialog
304inputlist({textlist}) Number let the user pick from a choice list
305inputrestore() Number restore typeahead
306inputsave() Number save and clear typeahead
307inputsecret({prompt} [, {text}]) String like input() but hiding the text
308insert({object}, {item} [, {idx}]) List insert {item} in {object} [before {idx}]
309interrupt() none interrupt script execution
310invert({expr}) Number bitwise invert
LemonBoydca1d402022-04-28 15:26:33 +0100311isabsolutepath({path}) Number |TRUE| if {path} is an absolute path
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000312isdirectory({directory}) Number |TRUE| if {directory} is a directory
313isinf({expr}) Number determine if {expr} is infinity value
314 (positive or negative)
315islocked({expr}) Number |TRUE| if {expr} is locked
316isnan({expr}) Number |TRUE| if {expr} is NaN
317items({dict}) List key-value pairs in {dict}
318job_getchannel({job}) Channel get the channel handle for {job}
319job_info([{job}]) Dict get information about {job}
320job_setoptions({job}, {options}) none set options for {job}
321job_start({command} [, {options}])
322 Job start a job
323job_status({job}) String get the status of {job}
324job_stop({job} [, {how}]) Number stop {job}
325join({list} [, {sep}]) String join {list} items into one String
326js_decode({string}) any decode JS style JSON
327js_encode({expr}) String encode JS style JSON
328json_decode({string}) any decode JSON
329json_encode({expr}) String encode JSON
330keys({dict}) List keys in {dict}
zeertzjqcdc83932022-09-12 13:38:41 +0100331keytrans({string}) String translate internal keycodes to a form
332 that can be used by |:map|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000333len({expr}) Number the length of {expr}
334libcall({lib}, {func}, {arg}) String call {func} in library {lib} with {arg}
335libcallnr({lib}, {func}, {arg}) Number idem, but return a Number
336line({expr} [, {winid}]) Number line nr of cursor, last line or mark
337line2byte({lnum}) Number byte count of line {lnum}
338lispindent({lnum}) Number Lisp indent for line {lnum}
339list2blob({list}) Blob turn {list} of numbers into a Blob
340list2str({list} [, {utf8}]) String turn {list} of numbers into a String
341listener_add({callback} [, {buf}])
342 Number add a callback to listen to changes
343listener_flush([{buf}]) none invoke listener callbacks
344listener_remove({id}) none remove a listener callback
345localtime() Number current time
346log({expr}) Float natural logarithm (base e) of {expr}
347log10({expr}) Float logarithm of Float {expr} to base 10
348luaeval({expr} [, {expr}]) any evaluate |Lua| expression
349map({expr1}, {expr2}) List/Dict/Blob/String
350 change each item in {expr1} to {expr2}
351maparg({name} [, {mode} [, {abbr} [, {dict}]]])
352 String or Dict
353 rhs of mapping {name} in mode {mode}
354mapcheck({name} [, {mode} [, {abbr}]])
355 String check for mappings matching {name}
Ernie Rael09661202022-04-25 14:40:44 +0100356maplist([{abbr}]) List list of all mappings, a dict for each
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000357mapnew({expr1}, {expr2}) List/Dict/Blob/String
358 like |map()| but creates a new List or
359 Dictionary
360mapset({mode}, {abbr}, {dict}) none restore mapping from |maparg()| result
361match({expr}, {pat} [, {start} [, {count}]])
362 Number position where {pat} matches in {expr}
363matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
364 Number highlight {pattern} with {group}
365matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
366 Number highlight positions with {group}
367matcharg({nr}) List arguments of |:match|
368matchdelete({id} [, {win}]) Number delete match identified by {id}
369matchend({expr}, {pat} [, {start} [, {count}]])
370 Number position where {pat} ends in {expr}
371matchfuzzy({list}, {str} [, {dict}])
372 List fuzzy match {str} in {list}
373matchfuzzypos({list}, {str} [, {dict}])
374 List fuzzy match {str} in {list}
375matchlist({expr}, {pat} [, {start} [, {count}]])
376 List match and submatches of {pat} in {expr}
377matchstr({expr}, {pat} [, {start} [, {count}]])
378 String {count}'th match of {pat} in {expr}
379matchstrpos({expr}, {pat} [, {start} [, {count}]])
380 List {count}'th match of {pat} in {expr}
381max({expr}) Number maximum value of items in {expr}
382menu_info({name} [, {mode}]) Dict get menu item information
383min({expr}) Number minimum value of items in {expr}
384mkdir({name} [, {path} [, {prot}]])
385 Number create directory {name}
386mode([expr]) String current editing mode
387mzeval({expr}) any evaluate |MzScheme| expression
388nextnonblank({lnum}) Number line nr of non-blank line >= {lnum}
389nr2char({expr} [, {utf8}]) String single char with ASCII/UTF-8 value {expr}
390or({expr}, {expr}) Number bitwise OR
391pathshorten({expr} [, {len}]) String shorten directory names in a path
392perleval({expr}) any evaluate |Perl| expression
393popup_atcursor({what}, {options}) Number create popup window near the cursor
394popup_beval({what}, {options}) Number create popup window for 'ballooneval'
395popup_clear() none close all popup windows
396popup_close({id} [, {result}]) none close popup window {id}
397popup_create({what}, {options}) Number create a popup window
398popup_dialog({what}, {options}) Number create a popup window used as a dialog
399popup_filter_menu({id}, {key}) Number filter for a menu popup window
400popup_filter_yesno({id}, {key}) Number filter for a dialog popup window
Bram Moolenaarbdc09a12022-10-07 14:31:45 +0100401popup_findecho() Number get window ID of popup for `:echowin`
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000402popup_findinfo() Number get window ID of info popup window
403popup_findpreview() Number get window ID of preview popup window
404popup_getoptions({id}) Dict get options of popup window {id}
405popup_getpos({id}) Dict get position of popup window {id}
406popup_hide({id}) none hide popup menu {id}
407popup_list() List get a list of window IDs of all popups
408popup_locate({row}, {col}) Number get window ID of popup at position
409popup_menu({what}, {options}) Number create a popup window used as a menu
410popup_move({id}, {options}) none set position of popup window {id}
411popup_notification({what}, {options})
412 Number create a notification popup window
413popup_setoptions({id}, {options})
414 none set options for popup window {id}
415popup_settext({id}, {text}) none set the text of popup window {id}
416popup_show({id}) none unhide popup window {id}
417pow({x}, {y}) Float {x} to the power of {y}
418prevnonblank({lnum}) Number line nr of non-blank line <= {lnum}
419printf({fmt}, {expr1}...) String format text
420prompt_getprompt({buf}) String get prompt text
421prompt_setcallback({buf}, {expr}) none set prompt callback function
422prompt_setinterrupt({buf}, {text}) none set prompt interrupt function
423prompt_setprompt({buf}, {text}) none set prompt text
424prop_add({lnum}, {col}, {props}) none add one text property
425prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
426 none add multiple text properties
427prop_clear({lnum} [, {lnum-end} [, {props}]])
428 none remove all text properties
429prop_find({props} [, {direction}])
430 Dict search for a text property
431prop_list({lnum} [, {props}]) List text properties in {lnum}
432prop_remove({props} [, {lnum} [, {lnum-end}]])
433 Number remove a text property
434prop_type_add({name}, {props}) none define a new property type
435prop_type_change({name}, {props})
436 none change an existing property type
437prop_type_delete({name} [, {props}])
438 none delete a property type
439prop_type_get({name} [, {props}])
440 Dict get property type values
441prop_type_list([{props}]) List get list of property types
442pum_getpos() Dict position and size of pum if visible
443pumvisible() Number whether popup menu is visible
444py3eval({expr}) any evaluate |python3| expression
445pyeval({expr}) any evaluate |Python| expression
446pyxeval({expr}) any evaluate |python_x| expression
447rand([{expr}]) Number get pseudo-random number
448range({expr} [, {max} [, {stride}]])
449 List items from {expr} to {max}
K.Takata11df3ae2022-10-19 14:02:40 +0100450readblob({fname} [, {offset} [, {size}]])
451 Blob read a |Blob| from {fname}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000452readdir({dir} [, {expr} [, {dict}]])
453 List file names in {dir} selected by {expr}
454readdirex({dir} [, {expr} [, {dict}]])
455 List file info in {dir} selected by {expr}
456readfile({fname} [, {type} [, {max}]])
457 List get list of lines from file {fname}
458reduce({object}, {func} [, {initial}])
459 any reduce {object} using {func}
460reg_executing() String get the executing register name
461reg_recording() String get the recording register name
462reltime([{start} [, {end}]]) List get time value
463reltimefloat({time}) Float turn the time value into a Float
464reltimestr({time}) String turn time value into a String
465remote_expr({server}, {string} [, {idvar} [, {timeout}]])
466 String send expression
467remote_foreground({server}) Number bring Vim server to the foreground
468remote_peek({serverid} [, {retvar}])
469 Number check for reply string
470remote_read({serverid} [, {timeout}])
471 String read reply string
472remote_send({server}, {string} [, {idvar}])
473 String send key sequence
474remote_startserver({name}) none become server {name}
475remove({list}, {idx} [, {end}]) any/List
476 remove items {idx}-{end} from {list}
477remove({blob}, {idx} [, {end}]) Number/Blob
478 remove bytes {idx}-{end} from {blob}
479remove({dict}, {key}) any remove entry {key} from {dict}
480rename({from}, {to}) Number rename (move) file from {from} to {to}
Bakudankun375141e2022-09-09 18:46:47 +0100481repeat({expr}, {count}) List/Blob/String
482 repeat {expr} {count} times
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000483resolve({filename}) String get filename a shortcut points to
484reverse({list}) List reverse {list} in-place
485round({expr}) Float round off {expr}
486rubyeval({expr}) any evaluate |Ruby| expression
487screenattr({row}, {col}) Number attribute at screen position
488screenchar({row}, {col}) Number character at screen position
489screenchars({row}, {col}) List List of characters at screen position
490screencol() Number current cursor column
491screenpos({winid}, {lnum}, {col}) Dict screen row and col of a text character
492screenrow() Number current cursor row
493screenstring({row}, {col}) String characters at screen position
494search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
495 Number search for {pattern}
496searchcount([{options}]) Dict get or update search stats
497searchdecl({name} [, {global} [, {thisblock}]])
498 Number search for variable declaration
499searchpair({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
500 Number search for other end of start/end pair
501searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
502 List search for other end of start/end pair
503searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
504 List search for {pattern}
505server2client({clientid}, {string})
506 Number send reply string
507serverlist() String get a list of available servers
508setbufline({expr}, {lnum}, {text})
509 Number set line {lnum} to {text} in buffer
510 {expr}
511setbufvar({buf}, {varname}, {val})
512 none set {varname} in buffer {buf} to {val}
513setcellwidths({list}) none set character cell width overrides
514setcharpos({expr}, {list}) Number set the {expr} position to {list}
515setcharsearch({dict}) Dict set character search from {dict}
Shougo Matsushita07ea5f12022-08-27 12:22:25 +0100516setcmdline({str} [, {pos}]) Number set command-line
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000517setcmdpos({pos}) Number set cursor position in command-line
518setcursorcharpos({list}) Number move cursor to position in {list}
519setenv({name}, {val}) none set environment variable
520setfperm({fname}, {mode}) Number set {fname} file permissions to {mode}
521setline({lnum}, {line}) Number set line {lnum} to {line}
522setloclist({nr}, {list} [, {action}])
523 Number modify location list using {list}
524setloclist({nr}, {list}, {action}, {what})
525 Number modify specific location list props
526setmatches({list} [, {win}]) Number restore a list of matches
527setpos({expr}, {list}) Number set the {expr} position to {list}
528setqflist({list} [, {action}]) Number modify quickfix list using {list}
529setqflist({list}, {action}, {what})
530 Number modify specific quickfix list props
531setreg({n}, {v} [, {opt}]) Number set register to value and type
532settabvar({nr}, {varname}, {val}) none set {varname} in tab page {nr} to {val}
533settabwinvar({tabnr}, {winnr}, {varname}, {val})
534 none set {varname} in window {winnr} in tab
535 page {tabnr} to {val}
536settagstack({nr}, {dict} [, {action}])
537 Number modify tag stack using {dict}
538setwinvar({nr}, {varname}, {val}) none set {varname} in window {nr} to {val}
539sha256({string}) String SHA256 checksum of {string}
540shellescape({string} [, {special}])
541 String escape {string} for use as shell
542 command argument
543shiftwidth([{col}]) Number effective value of 'shiftwidth'
544sign_define({name} [, {dict}]) Number define or update a sign
545sign_define({list}) List define or update a list of signs
546sign_getdefined([{name}]) List get a list of defined signs
547sign_getplaced([{buf} [, {dict}]])
548 List get a list of placed signs
549sign_jump({id}, {group}, {buf})
550 Number jump to a sign
551sign_place({id}, {group}, {name}, {buf} [, {dict}])
552 Number place a sign
553sign_placelist({list}) List place a list of signs
554sign_undefine([{name}]) Number undefine a sign
555sign_undefine({list}) List undefine a list of signs
556sign_unplace({group} [, {dict}])
557 Number unplace a sign
558sign_unplacelist({list}) List unplace a list of signs
559simplify({filename}) String simplify filename as much as possible
560sin({expr}) Float sine of {expr}
561sinh({expr}) Float hyperbolic sine of {expr}
562slice({expr}, {start} [, {end}]) String, List or Blob
563 slice of a String, List or Blob
Bram Moolenaar2007dd42022-02-23 13:17:47 +0000564sort({list} [, {how} [, {dict}]])
565 List sort {list}, compare with {how}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000566sound_clear() none stop playing all sounds
567sound_playevent({name} [, {callback}])
568 Number play an event sound
569sound_playfile({path} [, {callback}])
570 Number play sound file {path}
571sound_stop({id}) none stop playing sound {id}
572soundfold({word}) String sound-fold {word}
573spellbadword() String badly spelled word at cursor
574spellsuggest({word} [, {max} [, {capital}]])
575 List spelling suggestions
576split({expr} [, {pat} [, {keepempty}]])
577 List make |List| from {pat} separated {expr}
578sqrt({expr}) Float square root of {expr}
579srand([{expr}]) List get seed for |rand()|
580state([{what}]) String current state of Vim
581str2float({expr} [, {quoted}]) Float convert String to Float
582str2list({expr} [, {utf8}]) List convert each character of {expr} to
583 ASCII/UTF-8 value
584str2nr({expr} [, {base} [, {quoted}]])
585 Number convert String to Number
586strcharlen({expr}) Number character length of the String {expr}
587strcharpart({str}, {start} [, {len} [, {skipcc}]])
588 String {len} characters of {str} at
589 character {start}
590strchars({expr} [, {skipcc}]) Number character count of the String {expr}
591strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
592strftime({format} [, {time}]) String format time with a specified format
593strgetchar({str}, {index}) Number get char {index} from {str}
594stridx({haystack}, {needle} [, {start}])
595 Number index of {needle} in {haystack}
596string({expr}) String String representation of {expr} value
597strlen({expr}) Number length of the String {expr}
598strpart({str}, {start} [, {len} [, {chars}]])
599 String {len} bytes/chars of {str} at
600 byte {start}
601strptime({format}, {timestring})
602 Number Convert {timestring} to unix timestamp
603strridx({haystack}, {needle} [, {start}])
604 Number last index of {needle} in {haystack}
605strtrans({expr}) String translate string to make it printable
606strwidth({expr}) Number display cell length of the String {expr}
607submatch({nr} [, {list}]) String or List
608 specific match in ":s" or substitute()
609substitute({expr}, {pat}, {sub}, {flags})
610 String all {pat} in {expr} replaced with {sub}
Bram Moolenaarc216a7a2022-12-05 13:50:55 +0000611swapfilelist() List swap files found in 'directory'
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000612swapinfo({fname}) Dict information about swap file {fname}
613swapname({buf}) String swap file of buffer {buf}
614synID({lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col}
615synIDattr({synID}, {what} [, {mode}])
616 String attribute {what} of syntax ID {synID}
617synIDtrans({synID}) Number translated syntax ID of {synID}
618synconcealed({lnum}, {col}) List info about concealing
619synstack({lnum}, {col}) List stack of syntax IDs at {lnum} and {col}
620system({expr} [, {input}]) String output of shell command/filter {expr}
621systemlist({expr} [, {input}]) List output of shell command/filter {expr}
622tabpagebuflist([{arg}]) List list of buffer numbers in tab page
623tabpagenr([{arg}]) Number number of current or last tab page
624tabpagewinnr({tabarg} [, {arg}]) Number number of current window in tab page
625tagfiles() List tags files used
626taglist({expr} [, {filename}]) List list of tags matching {expr}
627tan({expr}) Float tangent of {expr}
628tanh({expr}) Float hyperbolic tangent of {expr}
629tempname() String name for a temporary file
630term_dumpdiff({filename}, {filename} [, {options}])
631 Number display difference between two dumps
632term_dumpload({filename} [, {options}])
633 Number displaying a screen dump
634term_dumpwrite({buf}, {filename} [, {options}])
635 none dump terminal window contents
636term_getaltscreen({buf}) Number get the alternate screen flag
637term_getansicolors({buf}) List get ANSI palette in GUI color mode
638term_getattr({attr}, {what}) Number get the value of attribute {what}
639term_getcursor({buf}) List get the cursor position of a terminal
640term_getjob({buf}) Job get the job associated with a terminal
641term_getline({buf}, {row}) String get a line of text from a terminal
642term_getscrolled({buf}) Number get the scroll count of a terminal
643term_getsize({buf}) List get the size of a terminal
644term_getstatus({buf}) String get the status of a terminal
645term_gettitle({buf}) String get the title of a terminal
646term_gettty({buf}, [{input}]) String get the tty name of a terminal
647term_list() List get the list of terminal buffers
648term_scrape({buf}, {row}) List get row of a terminal screen
649term_sendkeys({buf}, {keys}) none send keystrokes to a terminal
650term_setansicolors({buf}, {colors})
651 none set ANSI palette in GUI color mode
652term_setapi({buf}, {expr}) none set |terminal-api| function name prefix
653term_setkill({buf}, {how}) none set signal to stop job in terminal
654term_setrestore({buf}, {command}) none set command to restore terminal
655term_setsize({buf}, {rows}, {cols})
656 none set the size of a terminal
657term_start({cmd} [, {options}]) Number open a terminal window and run a job
658term_wait({buf} [, {time}]) Number wait for screen to be updated
659terminalprops() Dict properties of the terminal
660test_alloc_fail({id}, {countdown}, {repeat})
661 none make memory allocation fail
662test_autochdir() none enable 'autochdir' during startup
663test_feedinput({string}) none add key sequence to input buffer
664test_garbagecollect_now() none free memory right now for testing
665test_garbagecollect_soon() none free memory soon for testing
666test_getvalue({string}) any get value of an internal variable
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000667test_gui_event({event}, {args}) bool generate a GUI event for testing
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000668test_ignore_error({expr}) none ignore a specific error
Christopher Plewright20b795e2022-12-20 20:01:58 +0000669test_mswin_event({event}, {args})
670 bool generate MS-Windows event for testing
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000671test_null_blob() Blob null value for testing
672test_null_channel() Channel null value for testing
673test_null_dict() Dict null value for testing
674test_null_function() Funcref null value for testing
675test_null_job() Job null value for testing
676test_null_list() List null value for testing
677test_null_partial() Funcref null value for testing
678test_null_string() String null value for testing
679test_option_not_set({name}) none reset flag indicating option was set
680test_override({expr}, {val}) none test with Vim internal overrides
681test_refcount({expr}) Number get the reference count of {expr}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000682test_setmouse({row}, {col}) none set the mouse position for testing
683test_settime({expr}) none set current time for testing
684test_srand_seed([seed]) none set seed for testing srand()
685test_unknown() any unknown value for testing
686test_void() any void value for testing
687timer_info([{id}]) List information about timers
688timer_pause({id}, {pause}) none pause or unpause a timer
689timer_start({time}, {callback} [, {options}])
690 Number create a timer
691timer_stop({timer}) none stop a timer
692timer_stopall() none stop all timers
693tolower({expr}) String the String {expr} switched to lowercase
694toupper({expr}) String the String {expr} switched to uppercase
695tr({src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr}
696 to chars in {tostr}
697trim({text} [, {mask} [, {dir}]])
698 String trim characters in {mask} from {text}
699trunc({expr}) Float truncate Float {expr}
700type({expr}) Number type of value {expr}
701typename({expr}) String representation of the type of {expr}
702undofile({name}) String undo file name for {name}
703undotree() List undo file tree
704uniq({list} [, {func} [, {dict}]])
705 List remove adjacent duplicates from a list
706values({dict}) List values in {dict}
LemonBoy0f7a3e12022-05-26 12:10:37 +0100707virtcol({expr} [, {list}]) Number or List
708 screen column of cursor or mark
Bram Moolenaar5a6ec102022-05-27 21:58:00 +0100709virtcol2col({winid}, {lnum}, {col})
710 Number byte index of a character on screen
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000711visualmode([expr]) String last visual mode used
712wildmenumode() Number whether 'wildmenu' mode is active
713win_execute({id}, {command} [, {silent}])
714 String execute {command} in window {id}
715win_findbuf({bufnr}) List find windows containing {bufnr}
716win_getid([{win} [, {tab}]]) Number get window ID for {win} in {tab}
717win_gettype([{nr}]) String type of window {nr}
718win_gotoid({expr}) Number go to window with ID {expr}
719win_id2tabwin({expr}) List get tab and window nr from window ID
720win_id2win({expr}) Number get window nr from window ID
Daniel Steinbergee630312022-01-10 13:36:34 +0000721win_move_separator({nr}) Number move window vertical separator
722win_move_statusline({nr}) Number move window status line
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000723win_screenpos({nr}) List get screen position of window {nr}
724win_splitmove({nr}, {target} [, {options}])
725 Number move window {nr} to split of {target}
726winbufnr({nr}) Number buffer number of window {nr}
727wincol() Number window column of the cursor
728windowsversion() String MS-Windows OS version
729winheight({nr}) Number height of window {nr}
730winlayout([{tabnr}]) List layout of windows in tab {tabnr}
731winline() Number window line of the cursor
732winnr([{expr}]) Number number of current window
733winrestcmd() String returns command to restore window sizes
734winrestview({dict}) none restore view of current window
735winsaveview() Dict save view of current window
736winwidth({nr}) Number width of window {nr}
737wordcount() Dict get byte/char/word statistics
738writefile({object}, {fname} [, {flags}])
739 Number write |Blob| or |List| of lines to file
740xor({expr}, {expr}) Number bitwise XOR
741
742==============================================================================
7432. Details *builtin-function-details*
744
745Not all functions are here, some have been moved to a help file covering the
746specific functionality.
747
748abs({expr}) *abs()*
749 Return the absolute value of {expr}. When {expr} evaluates to
750 a |Float| abs() returns a |Float|. When {expr} can be
751 converted to a |Number| abs() returns a |Number|. Otherwise
752 abs() gives an error message and returns -1.
753 Examples: >
754 echo abs(1.456)
755< 1.456 >
756 echo abs(-5.456)
757< 5.456 >
758 echo abs(-4)
759< 4
760
761 Can also be used as a |method|: >
762 Compute()->abs()
763
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000764
765acos({expr}) *acos()*
766 Return the arc cosine of {expr} measured in radians, as a
767 |Float| in the range of [0, pi].
768 {expr} must evaluate to a |Float| or a |Number| in the range
Bram Moolenaar016188f2022-06-06 20:52:59 +0100769 [-1, 1]. Otherwise acos() returns "nan".
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000770 Examples: >
771 :echo acos(0)
772< 1.570796 >
773 :echo acos(-0.5)
774< 2.094395
775
776 Can also be used as a |method|: >
777 Compute()->acos()
778
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000779
780add({object}, {expr}) *add()*
781 Append the item {expr} to |List| or |Blob| {object}. Returns
782 the resulting |List| or |Blob|. Examples: >
783 :let alist = add([1, 2, 3], item)
784 :call add(mylist, "woodstock")
785< Note that when {expr} is a |List| it is appended as a single
786 item. Use |extend()| to concatenate |Lists|.
787 When {object} is a |Blob| then {expr} must be a number.
788 Use |insert()| to add an item at another position.
Bram Moolenaar016188f2022-06-06 20:52:59 +0100789 Returns 1 if {object} is not a |List| or a |Blob|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000790
791 Can also be used as a |method|: >
792 mylist->add(val1)->add(val2)
793
794
795and({expr}, {expr}) *and()*
796 Bitwise AND on the two arguments. The arguments are converted
797 to a number. A List, Dict or Float argument causes an error.
LemonBoy0f7a3e12022-05-26 12:10:37 +0100798 Also see `or()` and `xor()`.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000799 Example: >
800 :let flag = and(bits, 0x80)
801< Can also be used as a |method|: >
802 :let flag = bits->and(0x80)
803
804
805append({lnum}, {text}) *append()*
806 When {text} is a |List|: Append each item of the |List| as a
807 text line below line {lnum} in the current buffer.
808 Otherwise append {text} as one text line below line {lnum} in
809 the current buffer.
810 Any type of item is accepted and converted to a String.
811 {lnum} can be zero to insert a line before the first one.
812 {lnum} is used like with |getline()|.
813 Returns 1 for failure ({lnum} out of range or out of memory),
Bram Moolenaarcd9c8d42022-11-05 23:46:43 +0000814 0 for success. When {text} is an empty list zero is returned,
815 no matter the value of {lnum}.
816 In |Vim9| script an invalid argument or negative number
817 results in an error. Example: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000818 :let failed = append(line('$'), "# THE END")
819 :let failed = append(0, ["Chapter 1", "the beginning"])
820
821< Can also be used as a |method| after a List, the base is
822 passed as the second argument: >
823 mylist->append(lnum)
824
825
826appendbufline({buf}, {lnum}, {text}) *appendbufline()*
827 Like |append()| but append the text in buffer {buf}.
828
829 This function works only for loaded buffers. First call
830 |bufload()| if needed.
831
832 For the use of {buf}, see |bufname()|.
833
Bram Moolenaar8b6256f2021-12-28 11:24:49 +0000834 {lnum} is the line number to append below. Note that using
835 |line()| would use the current buffer, not the one appending
836 to. Use "$" to append at the end of the buffer. Other string
837 values are not supported.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000838
839 On success 0 is returned, on failure 1 is returned.
840 In |Vim9| script an error is given for an invalid {lnum}.
841
842 If {buf} is not a valid buffer or {lnum} is not valid, an
843 error message is given. Example: >
844 :let failed = appendbufline(13, 0, "# THE START")
Bram Moolenaarcd9c8d42022-11-05 23:46:43 +0000845< However, when {text} is an empty list then no error is given
846 for an invalid {lnum}, since {lnum} isn't actually used.
847
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000848 Can also be used as a |method| after a List, the base is
849 passed as the second argument: >
850 mylist->appendbufline(buf, lnum)
851
852
853argc([{winid}]) *argc()*
854 The result is the number of files in the argument list. See
855 |arglist|.
856 If {winid} is not supplied, the argument list of the current
857 window is used.
858 If {winid} is -1, the global argument list is used.
859 Otherwise {winid} specifies the window of which the argument
860 list is used: either the window number or the window ID.
861 Returns -1 if the {winid} argument is invalid.
862
863 *argidx()*
864argidx() The result is the current index in the argument list. 0 is
865 the first file. argc() - 1 is the last one. See |arglist|.
866
867 *arglistid()*
868arglistid([{winnr} [, {tabnr}]])
869 Return the argument list ID. This is a number which
870 identifies the argument list being used. Zero is used for the
871 global argument list. See |arglist|.
872 Returns -1 if the arguments are invalid.
873
874 Without arguments use the current window.
875 With {winnr} only use this window in the current tab page.
876 With {winnr} and {tabnr} use the window in the specified tab
877 page.
878 {winnr} can be the window number or the |window-ID|.
879
880 *argv()*
881argv([{nr} [, {winid}]])
882 The result is the {nr}th file in the argument list. See
883 |arglist|. "argv(0)" is the first one. Example: >
884 :let i = 0
885 :while i < argc()
886 : let f = escape(fnameescape(argv(i)), '.')
Bram Moolenaarc51cf032022-02-26 12:25:45 +0000887 : exe 'amenu Arg.' .. f .. ' :e ' .. f .. '<CR>'
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000888 : let i = i + 1
889 :endwhile
890< Without the {nr} argument, or when {nr} is -1, a |List| with
891 the whole |arglist| is returned.
892
893 The {winid} argument specifies the window ID, see |argc()|.
894 For the Vim command line arguments see |v:argv|.
895
Bram Moolenaar016188f2022-06-06 20:52:59 +0100896 Returns an empty string if {nr}th argument is not present in
897 the argument list. Returns an empty List if the {winid}
898 argument is invalid.
899
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000900asin({expr}) *asin()*
901 Return the arc sine of {expr} measured in radians, as a |Float|
902 in the range of [-pi/2, pi/2].
903 {expr} must evaluate to a |Float| or a |Number| in the range
904 [-1, 1].
Bram Moolenaar016188f2022-06-06 20:52:59 +0100905 Returns "nan" if {expr} is outside the range [-1, 1]. Returns
906 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000907 Examples: >
908 :echo asin(0.8)
909< 0.927295 >
910 :echo asin(-0.5)
911< -0.523599
912
913 Can also be used as a |method|: >
914 Compute()->asin()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000915
916
917assert_ functions are documented here: |assert-functions-details|
918
919
920
921atan({expr}) *atan()*
922 Return the principal value of the arc tangent of {expr}, in
923 the range [-pi/2, +pi/2] radians, as a |Float|.
924 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +0100925 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000926 Examples: >
927 :echo atan(100)
928< 1.560797 >
929 :echo atan(-4.01)
930< -1.326405
931
932 Can also be used as a |method|: >
933 Compute()->atan()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000934
935
936atan2({expr1}, {expr2}) *atan2()*
937 Return the arc tangent of {expr1} / {expr2}, measured in
938 radians, as a |Float| in the range [-pi, pi].
939 {expr1} and {expr2} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +0100940 Returns 0.0 if {expr1} or {expr2} is not a |Float| or a
941 |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000942 Examples: >
943 :echo atan2(-1, 1)
944< -0.785398 >
945 :echo atan2(1, -1)
946< 2.356194
947
948 Can also be used as a |method|: >
949 Compute()->atan2(1)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +0000950
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +0100951
952autocmd_add({acmds}) *autocmd_add()*
953 Adds a List of autocmds and autocmd groups.
954
955 The {acmds} argument is a List where each item is a Dict with
956 the following optional items:
957 bufnr buffer number to add a buffer-local autocmd.
958 If this item is specified, then the "pattern"
959 item is ignored.
960 cmd Ex command to execute for this autocmd event
961 event autocmd event name. Refer to |autocmd-events|.
Yegappan Lakshmanane0ff3a72022-05-27 18:05:33 +0100962 This can be either a String with a single
963 event name or a List of event names.
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +0100964 group autocmd group name. Refer to |autocmd-groups|.
965 If this group doesn't exist then it is
966 created. If not specified or empty, then the
967 default group is used.
Yegappan Lakshmanan971f6822022-05-24 11:40:11 +0100968 nested boolean flag, set to v:true to add a nested
969 autocmd. Refer to |autocmd-nested|.
LemonBoy0f7a3e12022-05-26 12:10:37 +0100970 once boolean flag, set to v:true to add an autocmd
Yegappan Lakshmanan971f6822022-05-24 11:40:11 +0100971 which executes only once. Refer to
972 |autocmd-once|.
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +0100973 pattern autocmd pattern string. Refer to
974 |autocmd-patterns|. If "bufnr" item is
Yegappan Lakshmanane0ff3a72022-05-27 18:05:33 +0100975 present, then this item is ignored. This can
976 be a String with a single pattern or a List of
977 patterns.
Yegappan Lakshmanan971f6822022-05-24 11:40:11 +0100978 replace boolean flag, set to v:true to remove all the
979 commands associated with the specified autocmd
980 event and group and add the {cmd}. This is
981 useful to avoid adding the same command
LemonBoy0f7a3e12022-05-26 12:10:37 +0100982 multiple times for an autocmd event in a group.
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +0100983
984 Returns v:true on success and v:false on failure.
985 Examples: >
986 " Create a buffer-local autocmd for buffer 5
987 let acmd = {}
988 let acmd.group = 'MyGroup'
989 let acmd.event = 'BufEnter'
990 let acmd.bufnr = 5
991 let acmd.cmd = 'call BufEnterFunc()'
992 call autocmd_add([acmd])
Bram Moolenaarcd9c8d42022-11-05 23:46:43 +0000993<
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +0100994 Can also be used as a |method|: >
995 GetAutocmdList()->autocmd_add()
996<
997autocmd_delete({acmds}) *autocmd_delete()*
998 Deletes a List of autocmds and autocmd groups.
999
1000 The {acmds} argument is a List where each item is a Dict with
1001 the following optional items:
1002 bufnr buffer number to delete a buffer-local autocmd.
1003 If this item is specified, then the "pattern"
1004 item is ignored.
1005 cmd Ex command for this autocmd event
1006 event autocmd event name. Refer to |autocmd-events|.
1007 If '*' then all the autocmd events in this
1008 group are deleted.
1009 group autocmd group name. Refer to |autocmd-groups|.
1010 If not specified or empty, then the default
1011 group is used.
1012 nested set to v:true for a nested autocmd.
1013 Refer to |autocmd-nested|.
1014 once set to v:true for an autocmd which executes
1015 only once. Refer to |autocmd-once|.
1016 pattern autocmd pattern string. Refer to
1017 |autocmd-patterns|. If "bufnr" item is
1018 present, then this item is ignored.
1019
1020 If only {group} is specified in a {acmds} entry and {event},
1021 {pattern} and {cmd} are not specified, then that autocmd group
1022 is deleted.
1023
Bram Moolenaar016188f2022-06-06 20:52:59 +01001024 Returns |v:true| on success and |v:false| on failure.
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001025 Examples: >
1026 " :autocmd! BufLeave *.vim
1027 let acmd = #{event: 'BufLeave', pattern: '*.vim'}
1028 call autocmd_delete([acmd]})
1029 " :autocmd! MyGroup1 BufLeave
1030 let acmd = #{group: 'MyGroup1', event: 'BufLeave'}
1031 call autocmd_delete([acmd])
1032 " :autocmd! MyGroup2 BufEnter *.c
1033 let acmd = #{group: 'MyGroup2', event: 'BufEnter',
1034 \ pattern: '*.c'}
1035 " :autocmd! MyGroup2 * *.c
1036 let acmd = #{group: 'MyGroup2', event: '*',
1037 \ pattern: '*.c'}
1038 call autocmd_delete([acmd])
1039 " :autocmd! MyGroup3
1040 let acmd = #{group: 'MyGroup3'}
1041 call autocmd_delete([acmd])
1042<
1043 Can also be used as a |method|: >
1044 GetAutocmdList()->autocmd_delete()
1045
1046autocmd_get([{opts}]) *autocmd_get()*
1047 Returns a |List| of autocmds. If {opts} is not supplied, then
1048 returns the autocmds for all the events in all the groups.
1049
1050 The optional {opts} Dict argument supports the following
1051 items:
1052 group Autocmd group name. If specified, returns only
1053 the autocmds defined in this group. If the
1054 specified group doesn't exist, results in an
1055 error message. If set to an empty string,
1056 then the default autocmd group is used.
1057 event Autocmd event name. If specified, returns only
1058 the autocmds defined for this event. If set
1059 to "*", then returns autocmds for all the
1060 events. If the specified event doesn't exist,
1061 results in an error message.
1062 pattern Autocmd pattern. If specified, returns only
1063 the autocmds defined for this pattern.
1064 A combination of the above three times can be supplied in
1065 {opts}.
1066
1067 Each Dict in the returned List contains the following items:
1068 bufnr For buffer-local autocmds, buffer number where
1069 the autocmd is defined.
1070 cmd Command executed for this autocmd.
1071 event Autocmd event name.
1072 group Autocmd group name.
Yegappan Lakshmanan971f6822022-05-24 11:40:11 +01001073 nested Boolean flag, set to v:true for a nested
1074 autocmd. See |autocmd-nested|.
1075 once Boolean flag, set to v:true, if the autocmd
1076 will be executed only once. See |autocmd-once|.
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001077 pattern Autocmd pattern. For a buffer-local
1078 autocmd, this will be of the form "<buffer=n>".
1079 If there are multiple commands for an autocmd event in a
1080 group, then separate items are returned for each command.
1081
Bram Moolenaar016188f2022-06-06 20:52:59 +01001082 Returns an empty List if an autocmd with the specified group
1083 or event or pattern is not found.
1084
Yegappan Lakshmanan1755a912022-05-19 10:31:47 +01001085 Examples: >
1086 " :autocmd MyGroup
1087 echo autocmd_get(#{group: 'Mygroup'})
1088 " :autocmd G BufUnload
1089 echo autocmd_get(#{group: 'G', event: 'BufUnload'})
1090 " :autocmd G * *.ts
1091 let acmd = #{group: 'G', event: '*', pattern: '*.ts'}
1092 echo autocmd_get(acmd)
1093 " :autocmd Syntax
1094 echo autocmd_get(#{event: 'Syntax'})
1095 " :autocmd G BufEnter *.ts
1096 let acmd = #{group: 'G', event: 'BufEnter',
1097 \ pattern: '*.ts'}
1098 echo autocmd_get(acmd)
1099<
1100 Can also be used as a |method|: >
1101 Getopts()->autocmd_get()
1102<
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001103balloon_gettext() *balloon_gettext()*
1104 Return the current text in the balloon. Only for the string,
Bram Moolenaar016188f2022-06-06 20:52:59 +01001105 not used for the List. Returns an empty string if balloon
1106 is not present.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001107
1108balloon_show({expr}) *balloon_show()*
1109 Show {expr} inside the balloon. For the GUI {expr} is used as
1110 a string. For a terminal {expr} can be a list, which contains
1111 the lines of the balloon. If {expr} is not a list it will be
1112 split with |balloon_split()|.
1113 If {expr} is an empty string any existing balloon is removed.
1114
1115 Example: >
1116 func GetBalloonContent()
1117 " ... initiate getting the content
1118 return ''
1119 endfunc
1120 set balloonexpr=GetBalloonContent()
1121
1122 func BalloonCallback(result)
1123 call balloon_show(a:result)
1124 endfunc
1125< Can also be used as a |method|: >
1126 GetText()->balloon_show()
1127<
1128 The intended use is that fetching the content of the balloon
1129 is initiated from 'balloonexpr'. It will invoke an
1130 asynchronous method, in which a callback invokes
1131 balloon_show(). The 'balloonexpr' itself can return an
Bram Moolenaar069a7d52022-06-27 22:16:08 +01001132 empty string or a placeholder, e.g. "loading...".
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001133
Bram Moolenaar069a7d52022-06-27 22:16:08 +01001134 When showing a balloon is not possible then nothing happens,
1135 no error message is given.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001136 {only available when compiled with the |+balloon_eval| or
1137 |+balloon_eval_term| feature}
1138
1139balloon_split({msg}) *balloon_split()*
1140 Split String {msg} into lines to be displayed in a balloon.
1141 The splits are made for the current window size and optimize
1142 to show debugger output.
Bram Moolenaar016188f2022-06-06 20:52:59 +01001143 Returns a |List| with the split lines. Returns an empty List
1144 on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001145 Can also be used as a |method|: >
1146 GetText()->balloon_split()->balloon_show()
1147
1148< {only available when compiled with the |+balloon_eval_term|
1149 feature}
1150
1151blob2list({blob}) *blob2list()*
1152 Return a List containing the number value of each byte in Blob
1153 {blob}. Examples: >
1154 blob2list(0z0102.0304) returns [1, 2, 3, 4]
1155 blob2list(0z) returns []
1156< Returns an empty List on error. |list2blob()| does the
1157 opposite.
1158
1159 Can also be used as a |method|: >
1160 GetBlob()->blob2list()
Bram Moolenaarb529cfb2022-07-25 15:42:07 +01001161<
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001162 *browse()*
1163browse({save}, {title}, {initdir}, {default})
1164 Put up a file requester. This only works when "has("browse")"
1165 returns |TRUE| (only in some GUI versions).
1166 The input fields are:
1167 {save} when |TRUE|, select file to write
1168 {title} title for the requester
1169 {initdir} directory to start browsing in
1170 {default} default file name
1171 An empty string is returned when the "Cancel" button is hit,
1172 something went wrong, or browsing is not possible.
1173
1174 *browsedir()*
1175browsedir({title}, {initdir})
1176 Put up a directory requester. This only works when
1177 "has("browse")" returns |TRUE| (only in some GUI versions).
1178 On systems where a directory browser is not supported a file
1179 browser is used. In that case: select a file in the directory
1180 to be used.
1181 The input fields are:
1182 {title} title for the requester
1183 {initdir} directory to start browsing in
1184 When the "Cancel" button is hit, something went wrong, or
1185 browsing is not possible, an empty string is returned.
1186
1187bufadd({name}) *bufadd()*
Bram Moolenaar2eddbac2022-08-25 12:45:21 +01001188 Add a buffer to the buffer list with name {name} (must be a
1189 String).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001190 If a buffer for file {name} already exists, return that buffer
1191 number. Otherwise return the buffer number of the newly
1192 created buffer. When {name} is an empty string then a new
1193 buffer is always created.
1194 The buffer will not have 'buflisted' set and not be loaded
1195 yet. To add some text to the buffer use this: >
1196 let bufnr = bufadd('someName')
1197 call bufload(bufnr)
1198 call setbufline(bufnr, 1, ['some', 'text'])
Bram Moolenaar016188f2022-06-06 20:52:59 +01001199< Returns 0 on error.
1200 Can also be used as a |method|: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001201 let bufnr = 'somename'->bufadd()
1202
1203bufexists({buf}) *bufexists()*
1204 The result is a Number, which is |TRUE| if a buffer called
1205 {buf} exists.
1206 If the {buf} argument is a number, buffer numbers are used.
1207 Number zero is the alternate buffer for the current window.
1208
1209 If the {buf} argument is a string it must match a buffer name
1210 exactly. The name can be:
1211 - Relative to the current directory.
1212 - A full path.
1213 - The name of a buffer with 'buftype' set to "nofile".
1214 - A URL name.
1215 Unlisted buffers will be found.
1216 Note that help files are listed by their short name in the
1217 output of |:buffers|, but bufexists() requires using their
1218 long name to be able to find them.
1219 bufexists() may report a buffer exists, but to use the name
1220 with a |:buffer| command you may need to use |expand()|. Esp
1221 for MS-Windows 8.3 names in the form "c:\DOCUME~1"
1222 Use "bufexists(0)" to test for the existence of an alternate
1223 file name.
1224
1225 Can also be used as a |method|: >
1226 let exists = 'somename'->bufexists()
1227<
1228 Obsolete name: buffer_exists(). *buffer_exists()*
1229
1230buflisted({buf}) *buflisted()*
1231 The result is a Number, which is |TRUE| if a buffer called
1232 {buf} exists and is listed (has the 'buflisted' option set).
1233 The {buf} argument is used like with |bufexists()|.
1234
1235 Can also be used as a |method|: >
1236 let listed = 'somename'->buflisted()
1237
1238bufload({buf}) *bufload()*
1239 Ensure the buffer {buf} is loaded. When the buffer name
1240 refers to an existing file then the file is read. Otherwise
1241 the buffer will be empty. If the buffer was already loaded
Bram Moolenaar2eddbac2022-08-25 12:45:21 +01001242 then there is no change. If the buffer is not related to a
1243 file the no file is read (e.g., when 'buftype' is "nofile").
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001244 If there is an existing swap file for the file of the buffer,
1245 there will be no dialog, the buffer will be loaded anyway.
1246 The {buf} argument is used like with |bufexists()|.
1247
1248 Can also be used as a |method|: >
1249 eval 'somename'->bufload()
1250
1251bufloaded({buf}) *bufloaded()*
1252 The result is a Number, which is |TRUE| if a buffer called
1253 {buf} exists and is loaded (shown in a window or hidden).
1254 The {buf} argument is used like with |bufexists()|.
1255
1256 Can also be used as a |method|: >
1257 let loaded = 'somename'->bufloaded()
1258
1259bufname([{buf}]) *bufname()*
1260 The result is the name of a buffer. Mostly as it is displayed
1261 by the `:ls` command, but not using special names such as
1262 "[No Name]".
1263 If {buf} is omitted the current buffer is used.
1264 If {buf} is a Number, that buffer number's name is given.
1265 Number zero is the alternate buffer for the current window.
1266 If {buf} is a String, it is used as a |file-pattern| to match
1267 with the buffer names. This is always done like 'magic' is
1268 set and 'cpoptions' is empty. When there is more than one
1269 match an empty string is returned.
1270 "" or "%" can be used for the current buffer, "#" for the
1271 alternate buffer.
1272 A full match is preferred, otherwise a match at the start, end
1273 or middle of the buffer name is accepted. If you only want a
1274 full match then put "^" at the start and "$" at the end of the
1275 pattern.
1276 Listed buffers are found first. If there is a single match
1277 with a listed buffer, that one is returned. Next unlisted
1278 buffers are searched for.
1279 If the {buf} is a String, but you want to use it as a buffer
1280 number, force it to be a Number by adding zero to it: >
1281 :echo bufname("3" + 0)
1282< Can also be used as a |method|: >
1283 echo bufnr->bufname()
1284
1285< If the buffer doesn't exist, or doesn't have a name, an empty
1286 string is returned. >
1287 bufname("#") alternate buffer name
1288 bufname(3) name of buffer 3
1289 bufname("%") name of current buffer
1290 bufname("file2") name of buffer where "file2" matches.
1291< *buffer_name()*
1292 Obsolete name: buffer_name().
1293
1294 *bufnr()*
1295bufnr([{buf} [, {create}]])
1296 The result is the number of a buffer, as it is displayed by
1297 the `:ls` command. For the use of {buf}, see |bufname()|
1298 above.
1299
1300 If the buffer doesn't exist, -1 is returned. Or, if the
1301 {create} argument is present and TRUE, a new, unlisted,
1302 buffer is created and its number is returned. Example: >
1303 let newbuf = bufnr('Scratch001', 1)
1304< Using an empty name uses the current buffer. To create a new
1305 buffer with an empty name use |bufadd()|.
1306
1307 bufnr("$") is the last buffer: >
1308 :let last_buffer = bufnr("$")
1309< The result is a Number, which is the highest buffer number
1310 of existing buffers. Note that not all buffers with a smaller
1311 number necessarily exist, because ":bwipeout" may have removed
1312 them. Use bufexists() to test for the existence of a buffer.
1313
1314 Can also be used as a |method|: >
1315 echo bufref->bufnr()
1316<
1317 Obsolete name: buffer_number(). *buffer_number()*
1318 *last_buffer_nr()*
1319 Obsolete name for bufnr("$"): last_buffer_nr().
1320
1321bufwinid({buf}) *bufwinid()*
1322 The result is a Number, which is the |window-ID| of the first
1323 window associated with buffer {buf}. For the use of {buf},
1324 see |bufname()| above. If buffer {buf} doesn't exist or
1325 there is no such window, -1 is returned. Example: >
1326
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001327 echo "A window containing buffer 1 is " .. (bufwinid(1))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001328<
Bram Moolenaar76db9e02022-11-09 21:21:04 +00001329 Only deals with the current tab page. See |win_findbuf()| for
1330 finding more.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001331
1332 Can also be used as a |method|: >
1333 FindBuffer()->bufwinid()
1334
1335bufwinnr({buf}) *bufwinnr()*
1336 Like |bufwinid()| but return the window number instead of the
1337 |window-ID|.
1338 If buffer {buf} doesn't exist or there is no such window, -1
1339 is returned. Example: >
1340
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001341 echo "A window containing buffer 1 is " .. (bufwinnr(1))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001342
1343< The number can be used with |CTRL-W_w| and ":wincmd w"
1344 |:wincmd|.
1345
1346 Can also be used as a |method|: >
1347 FindBuffer()->bufwinnr()
1348
1349byte2line({byte}) *byte2line()*
1350 Return the line number that contains the character at byte
1351 count {byte} in the current buffer. This includes the
1352 end-of-line character, depending on the 'fileformat' option
1353 for the current buffer. The first character has byte count
1354 one.
1355 Also see |line2byte()|, |go| and |:goto|.
1356
Bram Moolenaar016188f2022-06-06 20:52:59 +01001357 Returns -1 if the {byte} value is invalid.
1358
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001359 Can also be used as a |method|: >
1360 GetOffset()->byte2line()
1361
1362< {not available when compiled without the |+byte_offset|
1363 feature}
1364
1365byteidx({expr}, {nr}) *byteidx()*
1366 Return byte index of the {nr}'th character in the String
1367 {expr}. Use zero for the first character, it then returns
1368 zero.
1369 If there are no multibyte characters the returned value is
1370 equal to {nr}.
1371 Composing characters are not counted separately, their byte
1372 length is added to the preceding base character. See
1373 |byteidxcomp()| below for counting composing characters
1374 separately.
1375 Example : >
1376 echo matchstr(str, ".", byteidx(str, 3))
1377< will display the fourth character. Another way to do the
1378 same: >
1379 let s = strpart(str, byteidx(str, 3))
1380 echo strpart(s, 0, byteidx(s, 1))
1381< Also see |strgetchar()| and |strcharpart()|.
1382
1383 If there are less than {nr} characters -1 is returned.
1384 If there are exactly {nr} characters the length of the string
1385 in bytes is returned.
1386
1387 Can also be used as a |method|: >
1388 GetName()->byteidx(idx)
1389
1390byteidxcomp({expr}, {nr}) *byteidxcomp()*
1391 Like byteidx(), except that a composing character is counted
1392 as a separate character. Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001393 let s = 'e' .. nr2char(0x301)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001394 echo byteidx(s, 1)
1395 echo byteidxcomp(s, 1)
1396 echo byteidxcomp(s, 2)
1397< The first and third echo result in 3 ('e' plus composing
1398 character is 3 bytes), the second echo results in 1 ('e' is
1399 one byte).
1400 Only works differently from byteidx() when 'encoding' is set
1401 to a Unicode encoding.
1402
1403 Can also be used as a |method|: >
1404 GetName()->byteidxcomp(idx)
1405
1406call({func}, {arglist} [, {dict}]) *call()* *E699*
1407 Call function {func} with the items in |List| {arglist} as
1408 arguments.
1409 {func} can either be a |Funcref| or the name of a function.
1410 a:firstline and a:lastline are set to the cursor line.
1411 Returns the return value of the called function.
1412 {dict} is for functions with the "dict" attribute. It will be
1413 used to set the local variable "self". |Dictionary-function|
1414
1415 Can also be used as a |method|: >
1416 GetFunc()->call([arg, arg], dict)
1417
1418ceil({expr}) *ceil()*
1419 Return the smallest integral value greater than or equal to
1420 {expr} as a |Float| (round up).
1421 {expr} must evaluate to a |Float| or a |Number|.
1422 Examples: >
1423 echo ceil(1.456)
1424< 2.0 >
1425 echo ceil(-5.456)
1426< -5.0 >
1427 echo ceil(4.0)
1428< 4.0
1429
Bram Moolenaar016188f2022-06-06 20:52:59 +01001430 Returns 0.0 if {expr} is not a |Float| or a |Number|.
1431
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001432 Can also be used as a |method|: >
1433 Compute()->ceil()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001434
1435
1436ch_ functions are documented here: |channel-functions-details|
1437
1438
1439changenr() *changenr()*
1440 Return the number of the most recent change. This is the same
1441 number as what is displayed with |:undolist| and can be used
1442 with the |:undo| command.
1443 When a change was made it is the number of that change. After
1444 redo it is the number of the redone change. After undo it is
1445 one less than the number of the undone change.
Bram Moolenaar016188f2022-06-06 20:52:59 +01001446 Returns 0 if the undo list is empty.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001447
1448char2nr({string} [, {utf8}]) *char2nr()*
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01001449 Return Number value of the first char in {string}.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001450 Examples: >
1451 char2nr(" ") returns 32
1452 char2nr("ABC") returns 65
1453< When {utf8} is omitted or zero, the current 'encoding' is used.
1454 Example for "utf-8": >
1455 char2nr("á") returns 225
1456 char2nr("á"[0]) returns 195
1457< When {utf8} is TRUE, always treat as UTF-8 characters.
1458 A combining character is a separate character.
1459 |nr2char()| does the opposite.
1460 To turn a string into a list of character numbers: >
1461 let str = "ABC"
1462 let list = map(split(str, '\zs'), {_, val -> char2nr(val)})
1463< Result: [65, 66, 67]
1464
Bram Moolenaar016188f2022-06-06 20:52:59 +01001465 Returns 0 if {string} is not a |String|.
1466
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001467 Can also be used as a |method|: >
1468 GetChar()->char2nr()
1469
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001470charclass({string}) *charclass()*
1471 Return the character class of the first character in {string}.
1472 The character class is one of:
1473 0 blank
1474 1 punctuation
1475 2 word character
1476 3 emoji
1477 other specific Unicode class
1478 The class is used in patterns and word motions.
Bram Moolenaar016188f2022-06-06 20:52:59 +01001479 Returns 0 if {string} is not a |String|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001480
1481
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +00001482charcol({expr} [, {winid}]) *charcol()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001483 Same as |col()| but returns the character index of the column
1484 position given with {expr} instead of the byte position.
1485
1486 Example:
1487 With the cursor on '세' in line 5 with text "여보세요": >
1488 charcol('.') returns 3
1489 col('.') returns 7
1490
1491< Can also be used as a |method|: >
1492 GetPos()->col()
1493<
1494 *charidx()*
1495charidx({string}, {idx} [, {countcc}])
1496 Return the character index of the byte at {idx} in {string}.
1497 The index of the first character is zero.
1498 If there are no multibyte characters the returned value is
1499 equal to {idx}.
1500 When {countcc} is omitted or |FALSE|, then composing characters
1501 are not counted separately, their byte length is
1502 added to the preceding base character.
1503 When {countcc} is |TRUE|, then composing characters are
1504 counted as separate characters.
1505 Returns -1 if the arguments are invalid or if {idx} is greater
1506 than the index of the last byte in {string}. An error is
1507 given if the first argument is not a string, the second
1508 argument is not a number or when the third argument is present
1509 and is not zero or one.
1510 See |byteidx()| and |byteidxcomp()| for getting the byte index
1511 from the character index.
1512 Examples: >
1513 echo charidx('áb́ć', 3) returns 1
1514 echo charidx('áb́ć', 6, 1) returns 4
1515 echo charidx('áb́ć', 16) returns -1
1516<
1517 Can also be used as a |method|: >
1518 GetName()->charidx(idx)
1519
1520chdir({dir}) *chdir()*
1521 Change the current working directory to {dir}. The scope of
1522 the directory change depends on the directory of the current
1523 window:
1524 - If the current window has a window-local directory
1525 (|:lcd|), then changes the window local directory.
1526 - Otherwise, if the current tabpage has a local
1527 directory (|:tcd|) then changes the tabpage local
1528 directory.
1529 - Otherwise, changes the global directory.
1530 {dir} must be a String.
1531 If successful, returns the previous working directory. Pass
1532 this to another chdir() to restore the directory.
1533 On failure, returns an empty string.
1534
1535 Example: >
1536 let save_dir = chdir(newdir)
1537 if save_dir != ""
1538 " ... do some work
1539 call chdir(save_dir)
1540 endif
1541
1542< Can also be used as a |method|: >
1543 GetDir()->chdir()
1544<
1545cindent({lnum}) *cindent()*
1546 Get the amount of indent for line {lnum} according the C
1547 indenting rules, as with 'cindent'.
1548 The indent is counted in spaces, the value of 'tabstop' is
1549 relevant. {lnum} is used just like in |getline()|.
Bram Moolenaar8e145b82022-05-21 20:17:31 +01001550 When {lnum} is invalid -1 is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001551 See |C-indenting|.
1552
1553 Can also be used as a |method|: >
1554 GetLnum()->cindent()
1555
1556clearmatches([{win}]) *clearmatches()*
1557 Clears all matches previously defined for the current window
1558 by |matchadd()| and the |:match| commands.
1559 If {win} is specified, use the window with this number or
1560 window ID instead of the current window.
1561
1562 Can also be used as a |method|: >
1563 GetWin()->clearmatches()
1564<
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +00001565col({expr} [, {winid}) *col()*
1566 The result is a Number, which is the byte index of the column
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001567 position given with {expr}. The accepted positions are:
1568 . the cursor position
1569 $ the end of the cursor line (the result is the
1570 number of bytes in the cursor line plus one)
1571 'x position of mark x (if the mark is not set, 0 is
1572 returned)
1573 v In Visual mode: the start of the Visual area (the
1574 cursor is the end). When not in Visual mode
1575 returns the cursor position. Differs from |'<| in
1576 that it's updated right away.
1577 Additionally {expr} can be [lnum, col]: a |List| with the line
1578 and column number. Most useful when the column is "$", to get
1579 the last column of a specific line. When "lnum" or "col" is
1580 out of range then col() returns zero.
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +00001581 With the optional {winid} argument the values are obtained for
1582 that window instead of the current window.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001583 To get the line number use |line()|. To get both use
1584 |getpos()|.
1585 For the screen column position use |virtcol()|. For the
1586 character position use |charcol()|.
1587 Note that only marks in the current file can be used.
1588 Examples: >
1589 col(".") column of cursor
1590 col("$") length of cursor line plus one
1591 col("'t") column of mark t
Bram Moolenaarc51cf032022-02-26 12:25:45 +00001592 col("'" .. markname) column of mark markname
Yegappan Lakshmanan4c8d2f02022-11-12 16:07:47 +00001593< The first column is 1. Returns 0 if {expr} is invalid or when
1594 the window with ID {winid} is not found.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001595 For an uppercase mark the column may actually be in another
1596 buffer.
1597 For the cursor position, when 'virtualedit' is active, the
1598 column is one higher if the cursor is after the end of the
Bram Moolenaar6ebe4f92022-10-28 20:47:54 +01001599 line. Also, when using a <Cmd> mapping the cursor isn't
1600 moved, this can be used to obtain the column in Insert mode: >
Bram Moolenaar76db9e02022-11-09 21:21:04 +00001601 :imap <F2> <Cmd>echowin col(".")<CR>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001602
1603< Can also be used as a |method|: >
1604 GetPos()->col()
1605<
1606
1607complete({startcol}, {matches}) *complete()* *E785*
1608 Set the matches for Insert mode completion.
1609 Can only be used in Insert mode. You need to use a mapping
1610 with CTRL-R = (see |i_CTRL-R|). It does not work after CTRL-O
1611 or with an expression mapping.
1612 {startcol} is the byte offset in the line where the completed
1613 text start. The text up to the cursor is the original text
1614 that will be replaced by the matches. Use col('.') for an
1615 empty string. "col('.') - 1" will replace one character by a
1616 match.
1617 {matches} must be a |List|. Each |List| item is one match.
1618 See |complete-items| for the kind of items that are possible.
1619 "longest" in 'completeopt' is ignored.
1620 Note that the after calling this function you need to avoid
1621 inserting anything that would cause completion to stop.
1622 The match can be selected with CTRL-N and CTRL-P as usual with
1623 Insert mode completion. The popup menu will appear if
1624 specified, see |ins-completion-menu|.
1625 Example: >
1626 inoremap <F5> <C-R>=ListMonths()<CR>
1627
1628 func! ListMonths()
1629 call complete(col('.'), ['January', 'February', 'March',
1630 \ 'April', 'May', 'June', 'July', 'August', 'September',
1631 \ 'October', 'November', 'December'])
1632 return ''
1633 endfunc
1634< This isn't very useful, but it shows how it works. Note that
1635 an empty string is returned to avoid a zero being inserted.
1636
1637 Can also be used as a |method|, the base is passed as the
1638 second argument: >
1639 GetMatches()->complete(col('.'))
1640
1641complete_add({expr}) *complete_add()*
1642 Add {expr} to the list of matches. Only to be used by the
1643 function specified with the 'completefunc' option.
1644 Returns 0 for failure (empty string or out of memory),
1645 1 when the match was added, 2 when the match was already in
1646 the list.
1647 See |complete-functions| for an explanation of {expr}. It is
1648 the same as one item in the list that 'omnifunc' would return.
1649
1650 Can also be used as a |method|: >
1651 GetMoreMatches()->complete_add()
1652
1653complete_check() *complete_check()*
1654 Check for a key typed while looking for completion matches.
1655 This is to be used when looking for matches takes some time.
1656 Returns |TRUE| when searching for matches is to be aborted,
1657 zero otherwise.
1658 Only to be used by the function specified with the
1659 'completefunc' option.
1660
1661
1662complete_info([{what}]) *complete_info()*
1663 Returns a |Dictionary| with information about Insert mode
1664 completion. See |ins-completion|.
1665 The items are:
1666 mode Current completion mode name string.
1667 See |complete_info_mode| for the values.
1668 pum_visible |TRUE| if popup menu is visible.
1669 See |pumvisible()|.
1670 items List of completion matches. Each item is a
1671 dictionary containing the entries "word",
1672 "abbr", "menu", "kind", "info" and "user_data".
1673 See |complete-items|.
1674 selected Selected item index. First index is zero.
1675 Index is -1 if no item is selected (showing
1676 typed text only, or the last completion after
1677 no item is selected when using the <Up> or
1678 <Down> keys)
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01001679 inserted Inserted string. [NOT IMPLEMENTED YET]
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001680
1681 *complete_info_mode*
1682 mode values are:
1683 "" Not in completion mode
1684 "keyword" Keyword completion |i_CTRL-X_CTRL-N|
1685 "ctrl_x" Just pressed CTRL-X |i_CTRL-X|
1686 "scroll" Scrolling with |i_CTRL-X_CTRL-E| or
1687 |i_CTRL-X_CTRL-Y|
1688 "whole_line" Whole lines |i_CTRL-X_CTRL-L|
1689 "files" File names |i_CTRL-X_CTRL-F|
1690 "tags" Tags |i_CTRL-X_CTRL-]|
1691 "path_defines" Definition completion |i_CTRL-X_CTRL-D|
1692 "path_patterns" Include completion |i_CTRL-X_CTRL-I|
1693 "dictionary" Dictionary |i_CTRL-X_CTRL-K|
1694 "thesaurus" Thesaurus |i_CTRL-X_CTRL-T|
1695 "cmdline" Vim Command line |i_CTRL-X_CTRL-V|
1696 "function" User defined completion |i_CTRL-X_CTRL-U|
1697 "omni" Omni completion |i_CTRL-X_CTRL-O|
1698 "spell" Spelling suggestions |i_CTRL-X_s|
1699 "eval" |complete()| completion
1700 "unknown" Other internal modes
1701
1702 If the optional {what} list argument is supplied, then only
1703 the items listed in {what} are returned. Unsupported items in
1704 {what} are silently ignored.
1705
1706 To get the position and size of the popup menu, see
1707 |pum_getpos()|. It's also available in |v:event| during the
1708 |CompleteChanged| event.
1709
Bram Moolenaar016188f2022-06-06 20:52:59 +01001710 Returns an empty |Dictionary| on error.
1711
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001712 Examples: >
1713 " Get all items
1714 call complete_info()
1715 " Get only 'mode'
1716 call complete_info(['mode'])
1717 " Get only 'mode' and 'pum_visible'
1718 call complete_info(['mode', 'pum_visible'])
1719
1720< Can also be used as a |method|: >
1721 GetItems()->complete_info()
1722<
1723 *confirm()*
1724confirm({msg} [, {choices} [, {default} [, {type}]]])
1725 confirm() offers the user a dialog, from which a choice can be
1726 made. It returns the number of the choice. For the first
1727 choice this is 1.
1728 Note: confirm() is only supported when compiled with dialog
1729 support, see |+dialog_con| and |+dialog_gui|.
1730
1731 {msg} is displayed in a |dialog| with {choices} as the
1732 alternatives. When {choices} is missing or empty, "&OK" is
1733 used (and translated).
1734 {msg} is a String, use '\n' to include a newline. Only on
1735 some systems the string is wrapped when it doesn't fit.
1736
1737 {choices} is a String, with the individual choices separated
1738 by '\n', e.g. >
1739 confirm("Save changes?", "&Yes\n&No\n&Cancel")
1740< The letter after the '&' is the shortcut key for that choice.
1741 Thus you can type 'c' to select "Cancel". The shortcut does
1742 not need to be the first letter: >
1743 confirm("file has been modified", "&Save\nSave &All")
1744< For the console, the first letter of each choice is used as
1745 the default shortcut key. Case is ignored.
1746
1747 The optional {default} argument is the number of the choice
1748 that is made if the user hits <CR>. Use 1 to make the first
1749 choice the default one. Use 0 to not set a default. If
1750 {default} is omitted, 1 is used.
1751
1752 The optional {type} String argument gives the type of dialog.
1753 This is only used for the icon of the GTK, Mac, Motif and
1754 Win32 GUI. It can be one of these values: "Error",
1755 "Question", "Info", "Warning" or "Generic". Only the first
1756 character is relevant. When {type} is omitted, "Generic" is
1757 used.
1758
1759 If the user aborts the dialog by pressing <Esc>, CTRL-C,
1760 or another valid interrupt key, confirm() returns 0.
1761
1762 An example: >
Bram Moolenaar46eea442022-03-30 10:51:39 +01001763 let choice = confirm("What do you want?",
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01001764 \ "&Apples\n&Oranges\n&Bananas", 2)
Bram Moolenaar46eea442022-03-30 10:51:39 +01001765 if choice == 0
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01001766 echo "make up your mind!"
Bram Moolenaar46eea442022-03-30 10:51:39 +01001767 elseif choice == 3
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01001768 echo "tasteful"
Bram Moolenaar46eea442022-03-30 10:51:39 +01001769 else
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01001770 echo "I prefer bananas myself."
Bram Moolenaar46eea442022-03-30 10:51:39 +01001771 endif
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001772< In a GUI dialog, buttons are used. The layout of the buttons
1773 depends on the 'v' flag in 'guioptions'. If it is included,
1774 the buttons are always put vertically. Otherwise, confirm()
1775 tries to put the buttons in one horizontal line. If they
1776 don't fit, a vertical layout is used anyway. For some systems
1777 the horizontal layout is always used.
1778
1779 Can also be used as a |method|in: >
1780 BuildMessage()->confirm("&Yes\n&No")
1781<
1782 *copy()*
1783copy({expr}) Make a copy of {expr}. For Numbers and Strings this isn't
1784 different from using {expr} directly.
1785 When {expr} is a |List| a shallow copy is created. This means
1786 that the original |List| can be changed without changing the
1787 copy, and vice versa. But the items are identical, thus
1788 changing an item changes the contents of both |Lists|.
1789 A |Dictionary| is copied in a similar way as a |List|.
1790 Also see |deepcopy()|.
1791 Can also be used as a |method|: >
1792 mylist->copy()
1793
1794cos({expr}) *cos()*
1795 Return the cosine of {expr}, measured in radians, as a |Float|.
1796 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01001797 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001798 Examples: >
1799 :echo cos(100)
1800< 0.862319 >
1801 :echo cos(-4.01)
1802< -0.646043
1803
1804 Can also be used as a |method|: >
1805 Compute()->cos()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001806
1807
1808cosh({expr}) *cosh()*
1809 Return the hyperbolic cosine of {expr} as a |Float| in the range
1810 [1, inf].
1811 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01001812 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001813 Examples: >
1814 :echo cosh(0.5)
1815< 1.127626 >
1816 :echo cosh(-0.5)
1817< -1.127626
1818
1819 Can also be used as a |method|: >
1820 Compute()->cosh()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001821
1822
1823count({comp}, {expr} [, {ic} [, {start}]]) *count()*
1824 Return the number of times an item with value {expr} appears
1825 in |String|, |List| or |Dictionary| {comp}.
1826
1827 If {start} is given then start with the item with this index.
1828 {start} can only be used with a |List|.
1829
1830 When {ic} is given and it's |TRUE| then case is ignored.
1831
1832 When {comp} is a string then the number of not overlapping
1833 occurrences of {expr} is returned. Zero is returned when
1834 {expr} is an empty string.
1835
1836 Can also be used as a |method|: >
1837 mylist->count(val)
1838<
1839 *cscope_connection()*
1840cscope_connection([{num} , {dbpath} [, {prepend}]])
1841 Checks for the existence of a |cscope| connection. If no
1842 parameters are specified, then the function returns:
1843 0, if cscope was not available (not compiled in), or
1844 if there are no cscope connections;
1845 1, if there is at least one cscope connection.
1846
1847 If parameters are specified, then the value of {num}
1848 determines how existence of a cscope connection is checked:
1849
1850 {num} Description of existence check
1851 ----- ------------------------------
1852 0 Same as no parameters (e.g., "cscope_connection()").
1853 1 Ignore {prepend}, and use partial string matches for
1854 {dbpath}.
1855 2 Ignore {prepend}, and use exact string matches for
1856 {dbpath}.
1857 3 Use {prepend}, use partial string matches for both
1858 {dbpath} and {prepend}.
1859 4 Use {prepend}, use exact string matches for both
1860 {dbpath} and {prepend}.
1861
1862 Note: All string comparisons are case sensitive!
1863
1864 Examples. Suppose we had the following (from ":cs show"): >
1865
1866 # pid database name prepend path
1867 0 27664 cscope.out /usr/local
1868<
1869 Invocation Return Val ~
1870 ---------- ---------- >
1871 cscope_connection() 1
1872 cscope_connection(1, "out") 1
1873 cscope_connection(2, "out") 0
1874 cscope_connection(3, "out") 0
1875 cscope_connection(3, "out", "local") 1
1876 cscope_connection(4, "out") 0
1877 cscope_connection(4, "out", "local") 0
1878 cscope_connection(4, "cscope.out", "/usr/local") 1
1879<
1880cursor({lnum}, {col} [, {off}]) *cursor()*
1881cursor({list})
1882 Positions the cursor at the column (byte count) {col} in the
1883 line {lnum}. The first column is one.
1884
1885 When there is one argument {list} this is used as a |List|
1886 with two, three or four item:
1887 [{lnum}, {col}]
1888 [{lnum}, {col}, {off}]
1889 [{lnum}, {col}, {off}, {curswant}]
1890 This is like the return value of |getpos()| or |getcurpos()|,
1891 but without the first item.
1892
1893 To position the cursor using the character count, use
1894 |setcursorcharpos()|.
1895
1896 Does not change the jumplist.
Bram Moolenaar7c6cd442022-10-11 21:54:04 +01001897 {lnum} is used like with |getline()|, except that if {lnum} is
1898 zero, the cursor will stay in the current line.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001899 If {lnum} is greater than the number of lines in the buffer,
1900 the cursor will be positioned at the last line in the buffer.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001901 If {col} is greater than the number of bytes in the line,
1902 the cursor will be positioned at the last character in the
1903 line.
1904 If {col} is zero, the cursor will stay in the current column.
1905 If {curswant} is given it is used to set the preferred column
1906 for vertical movement. Otherwise {col} is used.
1907
1908 When 'virtualedit' is used {off} specifies the offset in
1909 screen columns from the start of the character. E.g., a
1910 position within a <Tab> or after the last character.
1911 Returns 0 when the position could be set, -1 otherwise.
1912
1913 Can also be used as a |method|: >
1914 GetCursorPos()->cursor()
1915
1916debugbreak({pid}) *debugbreak()*
1917 Specifically used to interrupt a program being debugged. It
1918 will cause process {pid} to get a SIGTRAP. Behavior for other
1919 processes is undefined. See |terminal-debugger|.
1920 {only available on MS-Windows}
1921
Bram Moolenaar016188f2022-06-06 20:52:59 +01001922 Returns |TRUE| if successfully interrupted the program.
1923 Otherwise returns |FALSE|.
1924
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001925 Can also be used as a |method|: >
1926 GetPid()->debugbreak()
1927
1928deepcopy({expr} [, {noref}]) *deepcopy()* *E698*
1929 Make a copy of {expr}. For Numbers and Strings this isn't
1930 different from using {expr} directly.
1931 When {expr} is a |List| a full copy is created. This means
1932 that the original |List| can be changed without changing the
1933 copy, and vice versa. When an item is a |List| or
1934 |Dictionary|, a copy for it is made, recursively. Thus
1935 changing an item in the copy does not change the contents of
1936 the original |List|.
1937 A |Dictionary| is copied in a similar way as a |List|.
1938
1939 When {noref} is omitted or zero a contained |List| or
1940 |Dictionary| is only copied once. All references point to
1941 this single copy. With {noref} set to 1 every occurrence of a
1942 |List| or |Dictionary| results in a new copy. This also means
1943 that a cyclic reference causes deepcopy() to fail.
1944 *E724*
1945 Nesting is possible up to 100 levels. When there is an item
1946 that refers back to a higher level making a deep copy with
1947 {noref} set to 1 will fail.
1948 Also see |copy()|.
1949
1950 Can also be used as a |method|: >
1951 GetObject()->deepcopy()
1952
1953delete({fname} [, {flags}]) *delete()*
1954 Without {flags} or with {flags} empty: Deletes the file by the
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01001955 name {fname}.
1956
1957 This also works when {fname} is a symbolic link. The symbolic
1958 link itself is deleted, not what it points to.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001959
1960 When {flags} is "d": Deletes the directory by the name
1961 {fname}. This fails when directory {fname} is not empty.
1962
1963 When {flags} is "rf": Deletes the directory by the name
1964 {fname} and everything in it, recursively. BE CAREFUL!
1965 Note: on MS-Windows it is not possible to delete a directory
1966 that is being used.
1967
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00001968 The result is a Number, which is 0/false if the delete
1969 operation was successful and -1/true when the deletion failed
1970 or partly failed.
1971
1972 Use |remove()| to delete an item from a |List|.
1973 To delete a line from the buffer use |:delete| or
1974 |deletebufline()|.
1975
1976 Can also be used as a |method|: >
1977 GetName()->delete()
1978
1979deletebufline({buf}, {first} [, {last}]) *deletebufline()*
1980 Delete lines {first} to {last} (inclusive) from buffer {buf}.
1981 If {last} is omitted then delete line {first} only.
1982 On success 0 is returned, on failure 1 is returned.
1983
1984 This function works only for loaded buffers. First call
1985 |bufload()| if needed.
1986
1987 For the use of {buf}, see |bufname()| above.
1988
1989 {first} and {last} are used like with |getline()|. Note that
1990 when using |line()| this refers to the current buffer. Use "$"
1991 to refer to the last line in buffer {buf}.
1992
1993 Can also be used as a |method|: >
1994 GetBuffer()->deletebufline(1)
1995<
1996 *did_filetype()*
1997did_filetype() Returns |TRUE| when autocommands are being executed and the
1998 FileType event has been triggered at least once. Can be used
1999 to avoid triggering the FileType event again in the scripts
2000 that detect the file type. |FileType|
2001 Returns |FALSE| when `:setf FALLBACK` was used.
2002 When editing another file, the counter is reset, thus this
2003 really checks if the FileType event has been triggered for the
2004 current buffer. This allows an autocommand that starts
2005 editing another buffer to set 'filetype' and load a syntax
2006 file.
2007
2008diff_filler({lnum}) *diff_filler()*
2009 Returns the number of filler lines above line {lnum}.
2010 These are the lines that were inserted at this point in
2011 another diff'ed window. These filler lines are shown in the
2012 display but don't exist in the buffer.
2013 {lnum} is used like with |getline()|. Thus "." is the current
2014 line, "'m" mark m, etc.
2015 Returns 0 if the current window is not in diff mode.
2016
2017 Can also be used as a |method|: >
2018 GetLnum()->diff_filler()
2019
2020diff_hlID({lnum}, {col}) *diff_hlID()*
2021 Returns the highlight ID for diff mode at line {lnum} column
2022 {col} (byte index). When the current line does not have a
2023 diff change zero is returned.
2024 {lnum} is used like with |getline()|. Thus "." is the current
2025 line, "'m" mark m, etc.
2026 {col} is 1 for the leftmost column, {lnum} is 1 for the first
2027 line.
2028 The highlight ID can be used with |synIDattr()| to obtain
2029 syntax information about the highlighting.
2030
2031 Can also be used as a |method|: >
2032 GetLnum()->diff_hlID(col)
2033<
2034
2035digraph_get({chars}) *digraph_get()* *E1214*
2036 Return the digraph of {chars}. This should be a string with
2037 exactly two characters. If {chars} are not just two
2038 characters, or the digraph of {chars} does not exist, an error
2039 is given and an empty string is returned.
2040
2041 The character will be converted from Unicode to 'encoding'
2042 when needed. This does require the conversion to be
2043 available, it might fail.
2044
2045 Also see |digraph_getlist()|.
2046
2047 Examples: >
2048 " Get a built-in digraph
2049 :echo digraph_get('00') " Returns '∞'
2050
2051 " Get a user-defined digraph
2052 :call digraph_set('aa', 'あ')
2053 :echo digraph_get('aa') " Returns 'あ'
2054<
2055 Can also be used as a |method|: >
2056 GetChars()->digraph_get()
2057<
2058 This function works only when compiled with the |+digraphs|
2059 feature. If this feature is disabled, this function will
2060 display an error message.
2061
2062
2063digraph_getlist([{listall}]) *digraph_getlist()*
2064 Return a list of digraphs. If the {listall} argument is given
2065 and it is TRUE, return all digraphs, including the default
2066 digraphs. Otherwise, return only user-defined digraphs.
2067
2068 The characters will be converted from Unicode to 'encoding'
2069 when needed. This does require the conservation to be
2070 available, it might fail.
2071
2072 Also see |digraph_get()|.
2073
2074 Examples: >
2075 " Get user-defined digraphs
2076 :echo digraph_getlist()
2077
2078 " Get all the digraphs, including default digraphs
2079 :echo digraph_getlist(1)
2080<
2081 Can also be used as a |method|: >
2082 GetNumber()->digraph_getlist()
2083<
2084 This function works only when compiled with the |+digraphs|
2085 feature. If this feature is disabled, this function will
2086 display an error message.
2087
2088
Bram Moolenaara2baa732022-02-04 16:09:54 +00002089digraph_set({chars}, {digraph}) *digraph_set()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002090 Add digraph {chars} to the list. {chars} must be a string
2091 with two characters. {digraph} is a string with one UTF-8
Bram Moolenaara2baa732022-02-04 16:09:54 +00002092 encoded character. *E1215*
2093 Be careful, composing characters are NOT ignored. This
2094 function is similar to |:digraphs| command, but useful to add
2095 digraphs start with a white space.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002096
2097 The function result is v:true if |digraph| is registered. If
2098 this fails an error message is given and v:false is returned.
2099
2100 If you want to define multiple digraphs at once, you can use
2101 |digraph_setlist()|.
2102
2103 Example: >
2104 call digraph_set(' ', 'あ')
2105<
2106 Can be used as a |method|: >
2107 GetString()->digraph_set('あ')
2108<
2109 This function works only when compiled with the |+digraphs|
2110 feature. If this feature is disabled, this function will
2111 display an error message.
2112
2113
2114digraph_setlist({digraphlist}) *digraph_setlist()*
2115 Similar to |digraph_set()| but this function can add multiple
2116 digraphs at once. {digraphlist} is a list composed of lists,
2117 where each list contains two strings with {chars} and
Bram Moolenaara2baa732022-02-04 16:09:54 +00002118 {digraph} as in |digraph_set()|. *E1216*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002119 Example: >
2120 call digraph_setlist([['aa', 'あ'], ['ii', 'い']])
2121<
2122 It is similar to the following: >
2123 for [chars, digraph] in [['aa', 'あ'], ['ii', 'い']]
2124 call digraph_set(chars, digraph)
2125 endfor
2126< Except that the function returns after the first error,
2127 following digraphs will not be added.
2128
2129 Can be used as a |method|: >
2130 GetList()->digraph_setlist()
2131<
2132 This function works only when compiled with the |+digraphs|
2133 feature. If this feature is disabled, this function will
2134 display an error message.
2135
2136
2137echoraw({string}) *echoraw()*
2138 Output {string} as-is, including unprintable characters.
2139 This can be used to output a terminal code. For example, to
2140 disable modifyOtherKeys: >
2141 call echoraw(&t_TE)
2142< and to enable it again: >
2143 call echoraw(&t_TI)
2144< Use with care, you can mess up the terminal this way.
2145
2146
2147empty({expr}) *empty()*
2148 Return the Number 1 if {expr} is empty, zero otherwise.
2149 - A |List| or |Dictionary| is empty when it does not have any
2150 items.
2151 - A |String| is empty when its length is zero.
2152 - A |Number| and |Float| are empty when their value is zero.
2153 - |v:false|, |v:none| and |v:null| are empty, |v:true| is not.
2154 - A |Job| is empty when it failed to start.
2155 - A |Channel| is empty when it is closed.
2156 - A |Blob| is empty when its length is zero.
2157
2158 For a long |List| this is much faster than comparing the
2159 length with zero.
2160
2161 Can also be used as a |method|: >
2162 mylist->empty()
2163
2164environ() *environ()*
2165 Return all of environment variables as dictionary. You can
2166 check if an environment variable exists like this: >
2167 :echo has_key(environ(), 'HOME')
2168< Note that the variable name may be CamelCase; to ignore case
2169 use this: >
2170 :echo index(keys(environ()), 'HOME', 0, 1) != -1
2171
2172escape({string}, {chars}) *escape()*
2173 Escape the characters in {chars} that occur in {string} with a
2174 backslash. Example: >
2175 :echo escape('c:\program files\vim', ' \')
2176< results in: >
2177 c:\\program\ files\\vim
2178< Also see |shellescape()| and |fnameescape()|.
2179
2180 Can also be used as a |method|: >
2181 GetText()->escape(' \')
2182<
2183 *eval()*
2184eval({string}) Evaluate {string} and return the result. Especially useful to
2185 turn the result of |string()| back into the original value.
2186 This works for Numbers, Floats, Strings, Blobs and composites
2187 of them. Also works for |Funcref|s that refer to existing
2188 functions.
2189
2190 Can also be used as a |method|: >
2191 argv->join()->eval()
2192
2193eventhandler() *eventhandler()*
2194 Returns 1 when inside an event handler. That is that Vim got
2195 interrupted while waiting for the user to type a character,
2196 e.g., when dropping a file on Vim. This means interactive
2197 commands cannot be used. Otherwise zero is returned.
2198
2199executable({expr}) *executable()*
2200 This function checks if an executable with the name {expr}
2201 exists. {expr} must be the name of the program without any
2202 arguments.
2203 executable() uses the value of $PATH and/or the normal
2204 searchpath for programs. *PATHEXT*
2205 On MS-Windows the ".exe", ".bat", etc. can optionally be
2206 included. Then the extensions in $PATHEXT are tried. Thus if
2207 "foo.exe" does not exist, "foo.exe.bat" can be found. If
2208 $PATHEXT is not set then ".com;.exe;.bat;.cmd" is used. A dot
2209 by itself can be used in $PATHEXT to try using the name
2210 without an extension. When 'shell' looks like a Unix shell,
2211 then the name is also tried without adding an extension.
2212 On MS-Windows it only checks if the file exists and is not a
2213 directory, not if it's really executable.
2214 On MS-Windows an executable in the same directory as Vim is
Yasuhiro Matsumoto05cf63e2022-05-03 11:02:28 +01002215 normally found. Since this directory is added to $PATH it
2216 should also work to execute it |win32-PATH|. This can be
2217 disabled by setting the $NoDefaultCurrentDirectoryInExePath
2218 environment variable. *NoDefaultCurrentDirectoryInExePath*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002219 The result is a Number:
2220 1 exists
2221 0 does not exist
2222 -1 not implemented on this system
2223 |exepath()| can be used to get the full path of an executable.
2224
2225 Can also be used as a |method|: >
2226 GetCommand()->executable()
2227
2228execute({command} [, {silent}]) *execute()*
2229 Execute an Ex command or commands and return the output as a
2230 string.
2231 {command} can be a string or a List. In case of a List the
2232 lines are executed one by one.
2233 This is equivalent to: >
2234 redir => var
2235 {command}
2236 redir END
2237<
2238 The optional {silent} argument can have these values:
2239 "" no `:silent` used
2240 "silent" `:silent` used
2241 "silent!" `:silent!` used
2242 The default is "silent". Note that with "silent!", unlike
2243 `:redir`, error messages are dropped. When using an external
2244 command the screen may be messed up, use `system()` instead.
2245 *E930*
2246 It is not possible to use `:redir` anywhere in {command}.
2247
2248 To get a list of lines use |split()| on the result: >
Bram Moolenaar75ab5902022-04-18 15:36:40 +01002249 execute('args')->split("\n")
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002250
2251< To execute a command in another window than the current one
2252 use `win_execute()`.
2253
2254 When used recursively the output of the recursive call is not
2255 included in the output of the higher level call.
2256
2257 Can also be used as a |method|: >
2258 GetCommand()->execute()
2259
2260exepath({expr}) *exepath()*
2261 If {expr} is an executable and is either an absolute path, a
2262 relative path or found in $PATH, return the full path.
2263 Note that the current directory is used when {expr} starts
2264 with "./", which may be a problem for Vim: >
2265 echo exepath(v:progpath)
2266< If {expr} cannot be found in $PATH or is not executable then
2267 an empty string is returned.
2268
2269 Can also be used as a |method|: >
2270 GetCommand()->exepath()
2271<
2272 *exists()*
2273exists({expr}) The result is a Number, which is |TRUE| if {expr} is defined,
2274 zero otherwise.
2275
2276 Note: In a compiled |:def| function the evaluation is done at
2277 runtime. Use `exists_compiled()` to evaluate the expression
2278 at compile time.
2279
2280 For checking for a supported feature use |has()|.
2281 For checking if a file exists use |filereadable()|.
2282
2283 The {expr} argument is a string, which contains one of these:
Bram Moolenaarf10911e2022-01-29 22:20:48 +00002284 varname internal variable (see
2285 dict.key |internal-variables|). Also works
2286 list[i] for |curly-braces-names|, |Dictionary|
2287 import.Func entries, |List| items, imported
Bram Moolenaar944697a2022-02-20 19:48:20 +00002288 items, etc.
Bram Moolenaarf10911e2022-01-29 22:20:48 +00002289 Does not work for local variables in a
2290 compiled `:def` function.
Bram Moolenaar944697a2022-02-20 19:48:20 +00002291 Also works for a function in |Vim9|
2292 script, since it can be used as a
2293 function reference.
Bram Moolenaarf10911e2022-01-29 22:20:48 +00002294 Beware that evaluating an index may
2295 cause an error message for an invalid
2296 expression. E.g.: >
2297 :let l = [1, 2, 3]
2298 :echo exists("l[5]")
2299< 0 >
2300 :echo exists("l[xx]")
2301< E121: Undefined variable: xx
2302 0
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002303 &option-name Vim option (only checks if it exists,
2304 not if it really works)
2305 +option-name Vim option that works.
2306 $ENVNAME environment variable (could also be
2307 done by comparing with an empty
2308 string)
2309 *funcname built-in function (see |functions|)
2310 or user defined function (see
2311 |user-functions|) that is implemented.
2312 Also works for a variable that is a
2313 Funcref.
2314 ?funcname built-in function that could be
2315 implemented; to be used to check if
2316 "funcname" is valid
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002317 :cmdname Ex command: built-in command, user
2318 command or command modifier |:command|.
2319 Returns:
2320 1 for match with start of a command
2321 2 full match with a command
2322 3 matches several user commands
2323 To check for a supported command
2324 always check the return value to be 2.
2325 :2match The |:2match| command.
Bram Moolenaarb529cfb2022-07-25 15:42:07 +01002326 :3match The |:3match| command (but you
2327 probably should not use it, it is
2328 reserved for internal usage)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002329 #event autocommand defined for this event
2330 #event#pattern autocommand defined for this event and
2331 pattern (the pattern is taken
2332 literally and compared to the
2333 autocommand patterns character by
2334 character)
2335 #group autocommand group exists
2336 #group#event autocommand defined for this group and
2337 event.
2338 #group#event#pattern
2339 autocommand defined for this group,
2340 event and pattern.
2341 ##event autocommand for this event is
2342 supported.
2343
2344 Examples: >
2345 exists("&shortname")
2346 exists("$HOSTNAME")
2347 exists("*strftime")
Bram Moolenaar944697a2022-02-20 19:48:20 +00002348 exists("*s:MyFunc") " only for legacy script
2349 exists("*MyFunc")
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002350 exists("bufcount")
2351 exists(":Make")
2352 exists("#CursorHold")
2353 exists("#BufReadPre#*.gz")
2354 exists("#filetypeindent")
2355 exists("#filetypeindent#FileType")
2356 exists("#filetypeindent#FileType#*")
2357 exists("##ColorScheme")
2358< There must be no space between the symbol (&/$/*/#) and the
2359 name.
2360 There must be no extra characters after the name, although in
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01002361 a few cases this is ignored. That may become stricter in the
2362 future, thus don't count on it!
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002363 Working example: >
2364 exists(":make")
2365< NOT working example: >
2366 exists(":make install")
2367
2368< Note that the argument must be a string, not the name of the
2369 variable itself. For example: >
2370 exists(bufcount)
2371< This doesn't check for existence of the "bufcount" variable,
2372 but gets the value of "bufcount", and checks if that exists.
2373
2374 Can also be used as a |method|: >
2375 Varname()->exists()
2376<
2377
2378exists_compiled({expr}) *exists_compiled()*
2379 Like `exists()` but evaluated at compile time. This is useful
2380 to skip a block where a function is used that would otherwise
2381 give an error: >
2382 if exists_compiled('*ThatFunction')
2383 ThatFunction('works')
2384 endif
2385< If `exists()` were used then a compilation error would be
2386 given if ThatFunction() is not defined.
2387
2388 {expr} must be a literal string. *E1232*
2389 Can only be used in a |:def| function. *E1233*
2390 This does not work to check for arguments or local variables.
2391
2392
2393exp({expr}) *exp()*
2394 Return the exponential of {expr} as a |Float| in the range
2395 [0, inf].
2396 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01002397 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002398 Examples: >
2399 :echo exp(2)
2400< 7.389056 >
2401 :echo exp(-1)
2402< 0.367879
2403
2404 Can also be used as a |method|: >
2405 Compute()->exp()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002406
2407
2408expand({string} [, {nosuf} [, {list}]]) *expand()*
2409 Expand wildcards and the following special keywords in
2410 {string}. 'wildignorecase' applies.
2411
2412 If {list} is given and it is |TRUE|, a List will be returned.
2413 Otherwise the result is a String and when there are several
2414 matches, they are separated by <NL> characters. [Note: in
2415 version 5.0 a space was used, which caused problems when a
2416 file name contains a space]
2417
2418 If the expansion fails, the result is an empty string. A name
2419 for a non-existing file is not included, unless {string} does
2420 not start with '%', '#' or '<', see below.
2421
2422 When {string} starts with '%', '#' or '<', the expansion is
2423 done like for the |cmdline-special| variables with their
2424 associated modifiers. Here is a short overview:
2425
2426 % current file name
2427 # alternate file name
2428 #n alternate file name n
2429 <cfile> file name under the cursor
2430 <afile> autocmd file name
2431 <abuf> autocmd buffer number (as a String!)
2432 <amatch> autocmd matched name
2433 <cexpr> C expression under the cursor
2434 <sfile> sourced script file or function name
2435 <slnum> sourced script line number or function
2436 line number
2437 <sflnum> script file line number, also when in
2438 a function
2439 <SID> "<SNR>123_" where "123" is the
2440 current script ID |<SID>|
Bram Moolenaar75ab5902022-04-18 15:36:40 +01002441 <script> sourced script file, or script file
2442 where the current function was defined
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002443 <stack> call stack
2444 <cword> word under the cursor
2445 <cWORD> WORD under the cursor
2446 <client> the {clientid} of the last received
2447 message |server2client()|
2448 Modifiers:
2449 :p expand to full path
2450 :h head (last path component removed)
2451 :t tail (last path component only)
2452 :r root (one extension removed)
2453 :e extension only
2454
2455 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00002456 :let &tags = expand("%:p:h") .. "/tags"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002457< Note that when expanding a string that starts with '%', '#' or
2458 '<', any following text is ignored. This does NOT work: >
2459 :let doesntwork = expand("%:h.bak")
2460< Use this: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00002461 :let doeswork = expand("%:h") .. ".bak"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002462< Also note that expanding "<cfile>" and others only returns the
2463 referenced file name without further expansion. If "<cfile>"
2464 is "~/.cshrc", you need to do another expand() to have the
2465 "~/" expanded into the path of the home directory: >
2466 :echo expand(expand("<cfile>"))
2467<
2468 There cannot be white space between the variables and the
2469 following modifier. The |fnamemodify()| function can be used
2470 to modify normal file names.
2471
2472 When using '%' or '#', and the current or alternate file name
2473 is not defined, an empty string is used. Using "%:p" in a
2474 buffer with no name, results in the current directory, with a
2475 '/' added.
Bram Moolenaar57544522022-04-12 12:54:11 +01002476 When 'verbose' is set then expanding '%', '#' and <> items
2477 will result in an error message if the argument cannot be
2478 expanded.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002479
2480 When {string} does not start with '%', '#' or '<', it is
2481 expanded like a file name is expanded on the command line.
2482 'suffixes' and 'wildignore' are used, unless the optional
2483 {nosuf} argument is given and it is |TRUE|.
2484 Names for non-existing files are included. The "**" item can
2485 be used to search in a directory tree. For example, to find
2486 all "README" files in the current directory and below: >
2487 :echo expand("**/README")
2488<
2489 expand() can also be used to expand variables and environment
2490 variables that are only known in a shell. But this can be
2491 slow, because a shell may be used to do the expansion. See
2492 |expr-env-expand|.
2493 The expanded variable is still handled like a list of file
2494 names. When an environment variable cannot be expanded, it is
2495 left unchanged. Thus ":echo expand('$FOOBAR')" results in
2496 "$FOOBAR".
2497
2498 See |glob()| for finding existing files. See |system()| for
2499 getting the raw output of an external command.
2500
2501 Can also be used as a |method|: >
2502 Getpattern()->expand()
2503
Yegappan Lakshmanan2b74b682022-04-03 21:30:32 +01002504expandcmd({string} [, {options}]) *expandcmd()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002505 Expand special items in String {string} like what is done for
2506 an Ex command such as `:edit`. This expands special keywords,
2507 like with |expand()|, and environment variables, anywhere in
2508 {string}. "~user" and "~/path" are only expanded at the
2509 start.
Yegappan Lakshmanan2b74b682022-04-03 21:30:32 +01002510
2511 The following items are supported in the {options} Dict
2512 argument:
2513 errmsg If set to TRUE, error messages are displayed
2514 if an error is encountered during expansion.
2515 By default, error messages are not displayed.
2516
Yegappan Lakshmanan5018a832022-04-02 21:12:21 +01002517 Returns the expanded string. If an error is encountered
2518 during expansion, the unmodified {string} is returned.
Yegappan Lakshmanan2b74b682022-04-03 21:30:32 +01002519
Yegappan Lakshmanan5018a832022-04-02 21:12:21 +01002520 Example: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002521 :echo expandcmd('make %<.o')
Yegappan Lakshmanan2b74b682022-04-03 21:30:32 +01002522 make /path/runtime/doc/builtin.o
2523 :echo expandcmd('make %<.o', {'errmsg': v:true})
2524<
Yegappan Lakshmanan5018a832022-04-02 21:12:21 +01002525 Can also be used as a |method|: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002526 GetCommand()->expandcmd()
2527<
2528extend({expr1}, {expr2} [, {expr3}]) *extend()*
2529 {expr1} and {expr2} must be both |Lists| or both
2530 |Dictionaries|.
2531
2532 If they are |Lists|: Append {expr2} to {expr1}.
2533 If {expr3} is given insert the items of {expr2} before the
2534 item with index {expr3} in {expr1}. When {expr3} is zero
2535 insert before the first item. When {expr3} is equal to
2536 len({expr1}) then {expr2} is appended.
2537 Examples: >
2538 :echo sort(extend(mylist, [7, 5]))
2539 :call extend(mylist, [2, 3], 1)
2540< When {expr1} is the same List as {expr2} then the number of
2541 items copied is equal to the original length of the List.
2542 E.g., when {expr3} is 1 you get N new copies of the first item
2543 (where N is the original length of the List).
2544 Use |add()| to concatenate one item to a list. To concatenate
2545 two lists into a new list use the + operator: >
2546 :let newlist = [1, 2, 3] + [4, 5]
2547<
2548 If they are |Dictionaries|:
2549 Add all entries from {expr2} to {expr1}.
2550 If a key exists in both {expr1} and {expr2} then {expr3} is
2551 used to decide what to do:
2552 {expr3} = "keep": keep the value of {expr1}
2553 {expr3} = "force": use the value of {expr2}
2554 {expr3} = "error": give an error message *E737*
2555 When {expr3} is omitted then "force" is assumed.
2556
2557 {expr1} is changed when {expr2} is not empty. If necessary
2558 make a copy of {expr1} first.
2559 {expr2} remains unchanged.
2560 When {expr1} is locked and {expr2} is not empty the operation
2561 fails.
Bram Moolenaar016188f2022-06-06 20:52:59 +01002562 Returns {expr1}. Returns 0 on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002563
2564 Can also be used as a |method|: >
2565 mylist->extend(otherlist)
2566
2567
2568extendnew({expr1}, {expr2} [, {expr3}]) *extendnew()*
2569 Like |extend()| but instead of adding items to {expr1} a new
2570 List or Dictionary is created and returned. {expr1} remains
2571 unchanged. Items can still be changed by {expr2}, if you
2572 don't want that use |deepcopy()| first.
2573
2574
2575feedkeys({string} [, {mode}]) *feedkeys()*
2576 Characters in {string} are queued for processing as if they
2577 come from a mapping or were typed by the user.
2578
2579 By default the string is added to the end of the typeahead
2580 buffer, thus if a mapping is still being executed the
2581 characters come after them. Use the 'i' flag to insert before
2582 other characters, they will be executed next, before any
2583 characters from a mapping.
2584
2585 The function does not wait for processing of keys contained in
2586 {string}.
2587
2588 To include special keys into {string}, use double-quotes
2589 and "\..." notation |expr-quote|. For example,
2590 feedkeys("\<CR>") simulates pressing of the <Enter> key. But
2591 feedkeys('\<CR>') pushes 5 characters.
2592 A special code that might be useful is <Ignore>, it exits the
2593 wait for a character without doing anything. *<Ignore>*
2594
2595 {mode} is a String, which can contain these character flags:
2596 'm' Remap keys. This is default. If {mode} is absent,
2597 keys are remapped.
2598 'n' Do not remap keys.
2599 't' Handle keys as if typed; otherwise they are handled as
2600 if coming from a mapping. This matters for undo,
2601 opening folds, etc.
2602 'L' Lowlevel input. Only works for Unix or when using the
2603 GUI. Keys are used as if they were coming from the
2604 terminal. Other flags are not used. *E980*
2605 When a CTRL-C interrupts and 't' is included it sets
2606 the internal "got_int" flag.
2607 'i' Insert the string instead of appending (see above).
2608 'x' Execute commands until typeahead is empty. This is
2609 similar to using ":normal!". You can call feedkeys()
2610 several times without 'x' and then one time with 'x'
2611 (possibly with an empty {string}) to execute all the
2612 typeahead. Note that when Vim ends in Insert mode it
2613 will behave as if <Esc> is typed, to avoid getting
2614 stuck, waiting for a character to be typed before the
2615 script continues.
2616 Note that if you manage to call feedkeys() while
2617 executing commands, thus calling it recursively, then
2618 all typeahead will be consumed by the last call.
Bram Moolenaara9725222022-01-16 13:30:33 +00002619 'c' Remove any script context when executing, so that
2620 legacy script syntax applies, "s:var" does not work,
Bram Moolenaard899e512022-05-07 21:54:03 +01002621 etc. Note that if the string being fed sets a script
Bram Moolenaarce001a32022-04-27 15:25:03 +01002622 context this still applies.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002623 '!' When used with 'x' will not end Insert mode. Can be
2624 used in a test when a timer is set to exit Insert mode
2625 a little later. Useful for testing CursorHoldI.
2626
2627 Return value is always 0.
2628
2629 Can also be used as a |method|: >
2630 GetInput()->feedkeys()
2631
2632filereadable({file}) *filereadable()*
2633 The result is a Number, which is |TRUE| when a file with the
2634 name {file} exists, and can be read. If {file} doesn't exist,
2635 or is a directory, the result is |FALSE|. {file} is any
2636 expression, which is used as a String.
2637 If you don't care about the file being readable you can use
2638 |glob()|.
2639 {file} is used as-is, you may want to expand wildcards first: >
2640 echo filereadable('~/.vimrc')
2641 0
2642 echo filereadable(expand('~/.vimrc'))
2643 1
2644
2645< Can also be used as a |method|: >
2646 GetName()->filereadable()
2647< *file_readable()*
2648 Obsolete name: file_readable().
2649
2650
2651filewritable({file}) *filewritable()*
2652 The result is a Number, which is 1 when a file with the
2653 name {file} exists, and can be written. If {file} doesn't
2654 exist, or is not writable, the result is 0. If {file} is a
2655 directory, and we can write to it, the result is 2.
2656
2657 Can also be used as a |method|: >
2658 GetName()->filewritable()
2659
2660
2661filter({expr1}, {expr2}) *filter()*
2662 {expr1} must be a |List|, |String|, |Blob| or |Dictionary|.
2663 For each item in {expr1} evaluate {expr2} and when the result
2664 is zero or false remove the item from the |List| or
2665 |Dictionary|. Similarly for each byte in a |Blob| and each
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00002666 character in a |String|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002667
2668 {expr2} must be a |string| or |Funcref|.
2669
2670 If {expr2} is a |string|, inside {expr2} |v:val| has the value
2671 of the current item. For a |Dictionary| |v:key| has the key
2672 of the current item and for a |List| |v:key| has the index of
2673 the current item. For a |Blob| |v:key| has the index of the
2674 current byte. For a |String| |v:key| has the index of the
2675 current character.
2676 Examples: >
2677 call filter(mylist, 'v:val !~ "OLD"')
2678< Removes the items where "OLD" appears. >
2679 call filter(mydict, 'v:key >= 8')
2680< Removes the items with a key below 8. >
2681 call filter(var, 0)
2682< Removes all the items, thus clears the |List| or |Dictionary|.
2683
2684 Note that {expr2} is the result of expression and is then
2685 used as an expression again. Often it is good to use a
2686 |literal-string| to avoid having to double backslashes.
2687
2688 If {expr2} is a |Funcref| it must take two arguments:
2689 1. the key or the index of the current item.
2690 2. the value of the current item.
2691 The function must return |TRUE| if the item should be kept.
2692 Example that keeps the odd items of a list: >
2693 func Odd(idx, val)
2694 return a:idx % 2 == 1
2695 endfunc
2696 call filter(mylist, function('Odd'))
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00002697< It is shorter when using a |lambda|. In |Vim9| syntax: >
2698 call filter(myList, (idx, val) => idx * val <= 42)
2699< In legacy script syntax: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002700 call filter(myList, {idx, val -> idx * val <= 42})
2701< If you do not use "val" you can leave it out: >
2702 call filter(myList, {idx -> idx % 2 == 1})
2703<
2704 In |Vim9| script the result must be true, false, zero or one.
2705 Other values will result in a type error.
2706
2707 For a |List| and a |Dictionary| the operation is done
2708 in-place. If you want it to remain unmodified make a copy
2709 first: >
2710 :let l = filter(copy(mylist), 'v:val =~ "KEEP"')
2711
2712< Returns {expr1}, the |List| or |Dictionary| that was filtered,
naohiro ono56200ee2022-01-01 14:59:44 +00002713 or a new |Blob| or |String|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002714 When an error is encountered while evaluating {expr2} no
2715 further items in {expr1} are processed.
2716 When {expr2} is a Funcref errors inside a function are ignored,
2717 unless it was defined with the "abort" flag.
2718
2719 Can also be used as a |method|: >
2720 mylist->filter(expr2)
2721
2722finddir({name} [, {path} [, {count}]]) *finddir()*
2723 Find directory {name} in {path}. Supports both downwards and
2724 upwards recursive directory searches. See |file-searching|
2725 for the syntax of {path}.
2726
2727 Returns the path of the first found match. When the found
2728 directory is below the current directory a relative path is
2729 returned. Otherwise a full path is returned.
2730 If {path} is omitted or empty then 'path' is used.
2731
2732 If the optional {count} is given, find {count}'s occurrence of
2733 {name} in {path} instead of the first one.
2734 When {count} is negative return all the matches in a |List|.
2735
Bram Moolenaar016188f2022-06-06 20:52:59 +01002736 Returns an empty string if the directory is not found.
2737
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002738 This is quite similar to the ex-command `:find`.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002739
2740 Can also be used as a |method|: >
2741 GetName()->finddir()
2742
2743findfile({name} [, {path} [, {count}]]) *findfile()*
2744 Just like |finddir()|, but find a file instead of a directory.
2745 Uses 'suffixesadd'.
2746 Example: >
2747 :echo findfile("tags.vim", ".;")
2748< Searches from the directory of the current file upwards until
2749 it finds the file "tags.vim".
2750
2751 Can also be used as a |method|: >
2752 GetName()->findfile()
2753
2754flatten({list} [, {maxdepth}]) *flatten()*
2755 Flatten {list} up to {maxdepth} levels. Without {maxdepth}
2756 the result is a |List| without nesting, as if {maxdepth} is
2757 a very large number.
2758 The {list} is changed in place, use |flattennew()| if you do
2759 not want that.
2760 In Vim9 script flatten() cannot be used, you must always use
Bram Moolenaara2baa732022-02-04 16:09:54 +00002761 |flattennew()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002762 *E900*
2763 {maxdepth} means how deep in nested lists changes are made.
2764 {list} is not modified when {maxdepth} is 0.
2765 {maxdepth} must be positive number.
2766
2767 If there is an error the number zero is returned.
2768
2769 Example: >
2770 :echo flatten([1, [2, [3, 4]], 5])
2771< [1, 2, 3, 4, 5] >
2772 :echo flatten([1, [2, [3, 4]], 5], 1)
2773< [1, 2, [3, 4], 5]
2774
2775 Can also be used as a |method|: >
2776 mylist->flatten()
2777<
2778flattennew({list} [, {maxdepth}]) *flattennew()*
2779 Like |flatten()| but first make a copy of {list}.
2780
2781
2782float2nr({expr}) *float2nr()*
2783 Convert {expr} to a Number by omitting the part after the
2784 decimal point.
Bram Moolenaar76db9e02022-11-09 21:21:04 +00002785 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01002786 Returns 0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002787 When the value of {expr} is out of range for a |Number| the
2788 result is truncated to 0x7fffffff or -0x7fffffff (or when
2789 64-bit Number support is enabled, 0x7fffffffffffffff or
2790 -0x7fffffffffffffff). NaN results in -0x80000000 (or when
2791 64-bit Number support is enabled, -0x8000000000000000).
2792 Examples: >
2793 echo float2nr(3.95)
2794< 3 >
2795 echo float2nr(-23.45)
2796< -23 >
2797 echo float2nr(1.0e100)
2798< 2147483647 (or 9223372036854775807) >
2799 echo float2nr(-1.0e150)
2800< -2147483647 (or -9223372036854775807) >
2801 echo float2nr(1.0e-100)
2802< 0
2803
2804 Can also be used as a |method|: >
2805 Compute()->float2nr()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002806
2807
2808floor({expr}) *floor()*
2809 Return the largest integral value less than or equal to
2810 {expr} as a |Float| (round down).
2811 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01002812 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002813 Examples: >
2814 echo floor(1.856)
2815< 1.0 >
2816 echo floor(-5.456)
2817< -6.0 >
2818 echo floor(4.0)
2819< 4.0
2820
2821 Can also be used as a |method|: >
2822 Compute()->floor()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002823
2824
2825fmod({expr1}, {expr2}) *fmod()*
2826 Return the remainder of {expr1} / {expr2}, even if the
2827 division is not representable. Returns {expr1} - i * {expr2}
2828 for some integer i such that if {expr2} is non-zero, the
2829 result has the same sign as {expr1} and magnitude less than
2830 the magnitude of {expr2}. If {expr2} is zero, the value
2831 returned is zero. The value returned is a |Float|.
2832 {expr1} and {expr2} must evaluate to a |Float| or a |Number|.
Bram Moolenaar016188f2022-06-06 20:52:59 +01002833 Returns 0.0 if {expr1} or {expr2} is not a |Float| or a
2834 |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002835 Examples: >
2836 :echo fmod(12.33, 1.22)
2837< 0.13 >
2838 :echo fmod(-12.33, 1.22)
2839< -0.13
2840
2841 Can also be used as a |method|: >
2842 Compute()->fmod(1.22)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002843
2844
2845fnameescape({string}) *fnameescape()*
2846 Escape {string} for use as file name command argument. All
2847 characters that have a special meaning, such as '%' and '|'
2848 are escaped with a backslash.
2849 For most systems the characters escaped are
2850 " \t\n*?[{`$\\%#'\"|!<". For systems where a backslash
2851 appears in a filename, it depends on the value of 'isfname'.
2852 A leading '+' and '>' is also escaped (special after |:edit|
2853 and |:write|). And a "-" by itself (special after |:cd|).
Bram Moolenaar016188f2022-06-06 20:52:59 +01002854 Returns an empty string on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002855 Example: >
2856 :let fname = '+some str%nge|name'
Bram Moolenaarc51cf032022-02-26 12:25:45 +00002857 :exe "edit " .. fnameescape(fname)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002858< results in executing: >
2859 edit \+some\ str\%nge\|name
2860<
2861 Can also be used as a |method|: >
2862 GetName()->fnameescape()
2863
2864fnamemodify({fname}, {mods}) *fnamemodify()*
2865 Modify file name {fname} according to {mods}. {mods} is a
2866 string of characters like it is used for file names on the
2867 command line. See |filename-modifiers|.
2868 Example: >
2869 :echo fnamemodify("main.c", ":p:h")
2870< results in: >
Bram Moolenaard799daa2022-06-20 11:17:32 +01002871 /home/user/vim/vim/src
Bram Moolenaar016188f2022-06-06 20:52:59 +01002872< If {mods} is empty or an unsupported modifier is used then
2873 {fname} is returned.
Bram Moolenaar5ed11532022-07-06 13:18:11 +01002874 When {fname} is empty then with {mods} ":h" returns ".", so
2875 that `:cd` can be used with it. This is different from
2876 expand('%:h') without a buffer name, which returns an empty
2877 string.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002878 Note: Environment variables don't work in {fname}, use
2879 |expand()| first then.
2880
2881 Can also be used as a |method|: >
2882 GetName()->fnamemodify(':p:h')
2883
2884foldclosed({lnum}) *foldclosed()*
2885 The result is a Number. If the line {lnum} is in a closed
2886 fold, the result is the number of the first line in that fold.
2887 If the line {lnum} is not in a closed fold, -1 is returned.
2888 {lnum} is used like with |getline()|. Thus "." is the current
2889 line, "'m" mark m, etc.
2890
2891 Can also be used as a |method|: >
2892 GetLnum()->foldclosed()
2893
2894foldclosedend({lnum}) *foldclosedend()*
2895 The result is a Number. If the line {lnum} is in a closed
2896 fold, the result is the number of the last line in that fold.
2897 If the line {lnum} is not in a closed fold, -1 is returned.
2898 {lnum} is used like with |getline()|. Thus "." is the current
2899 line, "'m" mark m, etc.
2900
2901 Can also be used as a |method|: >
2902 GetLnum()->foldclosedend()
2903
2904foldlevel({lnum}) *foldlevel()*
2905 The result is a Number, which is the foldlevel of line {lnum}
2906 in the current buffer. For nested folds the deepest level is
2907 returned. If there is no fold at line {lnum}, zero is
2908 returned. It doesn't matter if the folds are open or closed.
2909 When used while updating folds (from 'foldexpr') -1 is
2910 returned for lines where folds are still to be updated and the
2911 foldlevel is unknown. As a special case the level of the
2912 previous line is usually available.
2913 {lnum} is used like with |getline()|. Thus "." is the current
2914 line, "'m" mark m, etc.
2915
2916 Can also be used as a |method|: >
2917 GetLnum()->foldlevel()
2918<
2919 *foldtext()*
2920foldtext() Returns a String, to be displayed for a closed fold. This is
2921 the default function used for the 'foldtext' option and should
2922 only be called from evaluating 'foldtext'. It uses the
2923 |v:foldstart|, |v:foldend| and |v:folddashes| variables.
2924 The returned string looks like this: >
2925 +-- 45 lines: abcdef
2926< The number of leading dashes depends on the foldlevel. The
2927 "45" is the number of lines in the fold. "abcdef" is the text
2928 in the first non-blank line of the fold. Leading white space,
2929 "//" or "/*" and the text from the 'foldmarker' and
2930 'commentstring' options is removed.
2931 When used to draw the actual foldtext, the rest of the line
2932 will be filled with the fold char from the 'fillchars'
2933 setting.
Bram Moolenaar016188f2022-06-06 20:52:59 +01002934 Returns an empty string when there is no fold.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002935 {not available when compiled without the |+folding| feature}
2936
2937foldtextresult({lnum}) *foldtextresult()*
2938 Returns the text that is displayed for the closed fold at line
2939 {lnum}. Evaluates 'foldtext' in the appropriate context.
2940 When there is no closed fold at {lnum} an empty string is
2941 returned.
2942 {lnum} is used like with |getline()|. Thus "." is the current
2943 line, "'m" mark m, etc.
2944 Useful when exporting folded text, e.g., to HTML.
2945 {not available when compiled without the |+folding| feature}
2946
2947
2948 Can also be used as a |method|: >
2949 GetLnum()->foldtextresult()
2950<
2951 *foreground()*
2952foreground() Move the Vim window to the foreground. Useful when sent from
2953 a client to a Vim server. |remote_send()|
2954 On Win32 systems this might not work, the OS does not always
2955 allow a window to bring itself to the foreground. Use
2956 |remote_foreground()| instead.
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01002957 {only in the Win32, Motif and GTK GUI versions and the
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002958 Win32 console version}
2959
Bram Moolenaaraa534142022-09-15 21:46:02 +01002960fullcommand({name} [, {vim9}]) *fullcommand()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002961 Get the full command name from a short abbreviated command
2962 name; see |20.2| for details on command abbreviations.
2963
2964 The string argument {name} may start with a `:` and can
2965 include a [range], these are skipped and not returned.
Bram Moolenaaraa534142022-09-15 21:46:02 +01002966 Returns an empty string if a command doesn't exist, if it's
2967 ambiguous (for user-defined commands) or cannot be shortened
2968 this way. |vim9-no-shorten|
2969
2970 Without the {vim9} argument uses the current script version.
2971 If {vim9} is present and FALSE then legacy script rules are
2972 used. When {vim9} is present and TRUE then Vim9 rules are
2973 used, e.g. "en" is not a short form of "endif".
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002974
2975 For example `fullcommand('s')`, `fullcommand('sub')`,
2976 `fullcommand(':%substitute')` all return "substitute".
2977
2978 Can also be used as a |method|: >
2979 GetName()->fullcommand()
2980<
2981 *funcref()*
2982funcref({name} [, {arglist}] [, {dict}])
2983 Just like |function()|, but the returned Funcref will lookup
2984 the function by reference, not by name. This matters when the
2985 function {name} is redefined later.
2986
2987 Unlike |function()|, {name} must be an existing user function.
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00002988 It only works for an autoloaded function if it has already
2989 been loaded (to avoid mistakenly loading the autoload script
2990 when only intending to use the function name, use |function()|
2991 instead). {name} cannot be a builtin function.
Bram Moolenaar016188f2022-06-06 20:52:59 +01002992 Returns 0 on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00002993
2994 Can also be used as a |method|: >
2995 GetFuncname()->funcref([arg])
2996<
2997 *function()* *partial* *E700* *E922* *E923*
2998function({name} [, {arglist}] [, {dict}])
2999 Return a |Funcref| variable that refers to function {name}.
3000 {name} can be the name of a user defined function or an
3001 internal function.
3002
3003 {name} can also be a Funcref or a partial. When it is a
3004 partial the dict stored in it will be used and the {dict}
3005 argument is not allowed. E.g.: >
3006 let FuncWithArg = function(dict.Func, [arg])
3007 let Broken = function(dict.Func, [arg], dict)
3008<
3009 When using the Funcref the function will be found by {name},
3010 also when it was redefined later. Use |funcref()| to keep the
3011 same function.
3012
3013 When {arglist} or {dict} is present this creates a partial.
3014 That means the argument list and/or the dictionary is stored in
3015 the Funcref and will be used when the Funcref is called.
3016
3017 The arguments are passed to the function in front of other
3018 arguments, but after any argument from |method|. Example: >
3019 func Callback(arg1, arg2, name)
3020 ...
3021 let Partial = function('Callback', ['one', 'two'])
3022 ...
3023 call Partial('name')
3024< Invokes the function as with: >
3025 call Callback('one', 'two', 'name')
3026
3027< With a |method|: >
3028 func Callback(one, two, three)
3029 ...
3030 let Partial = function('Callback', ['two'])
3031 ...
3032 eval 'one'->Partial('three')
3033< Invokes the function as with: >
3034 call Callback('one', 'two', 'three')
3035
3036< The function() call can be nested to add more arguments to the
3037 Funcref. The extra arguments are appended to the list of
3038 arguments. Example: >
3039 func Callback(arg1, arg2, name)
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003040 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003041 let Func = function('Callback', ['one'])
3042 let Func2 = function(Func, ['two'])
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003043 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003044 call Func2('name')
3045< Invokes the function as with: >
3046 call Callback('one', 'two', 'name')
3047
3048< The Dictionary is only useful when calling a "dict" function.
3049 In that case the {dict} is passed in as "self". Example: >
3050 function Callback() dict
Bram Moolenaarc51cf032022-02-26 12:25:45 +00003051 echo "called for " .. self.name
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003052 endfunction
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003053 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003054 let context = {"name": "example"}
3055 let Func = function('Callback', context)
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003056 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003057 call Func() " will echo: called for example
3058< The use of function() is not needed when there are no extra
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003059 arguments, these two are equivalent, if Callback() is defined
3060 as context.Callback(): >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003061 let Func = function('Callback', context)
3062 let Func = context.Callback
3063
3064< The argument list and the Dictionary can be combined: >
3065 function Callback(arg1, count) dict
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003066 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003067 let context = {"name": "example"}
3068 let Func = function('Callback', ['one'], context)
Bram Moolenaar0daafaa2022-09-04 17:45:43 +01003069 "...
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003070 call Func(500)
3071< Invokes the function as with: >
3072 call context.Callback('one', 500)
3073<
Bram Moolenaar016188f2022-06-06 20:52:59 +01003074 Returns 0 on error.
3075
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003076 Can also be used as a |method|: >
3077 GetFuncname()->function([arg])
3078
3079
3080garbagecollect([{atexit}]) *garbagecollect()*
3081 Cleanup unused |Lists|, |Dictionaries|, |Channels| and |Jobs|
3082 that have circular references.
3083
3084 There is hardly ever a need to invoke this function, as it is
3085 automatically done when Vim runs out of memory or is waiting
3086 for the user to press a key after 'updatetime'. Items without
3087 circular references are always freed when they become unused.
3088 This is useful if you have deleted a very big |List| and/or
3089 |Dictionary| with circular references in a script that runs
3090 for a long time.
3091
3092 When the optional {atexit} argument is one, garbage
3093 collection will also be done when exiting Vim, if it wasn't
3094 done before. This is useful when checking for memory leaks.
3095
3096 The garbage collection is not done immediately but only when
3097 it's safe to perform. This is when waiting for the user to
3098 type a character. To force garbage collection immediately use
3099 |test_garbagecollect_now()|.
3100
3101get({list}, {idx} [, {default}]) *get()*
3102 Get item {idx} from |List| {list}. When this item is not
3103 available return {default}. Return zero when {default} is
3104 omitted.
3105 Preferably used as a |method|: >
3106 mylist->get(idx)
3107get({blob}, {idx} [, {default}])
3108 Get byte {idx} from |Blob| {blob}. When this byte is not
3109 available return {default}. Return -1 when {default} is
3110 omitted.
3111 Preferably used as a |method|: >
3112 myblob->get(idx)
3113get({dict}, {key} [, {default}])
3114 Get item with key {key} from |Dictionary| {dict}. When this
3115 item is not available return {default}. Return zero when
3116 {default} is omitted. Useful example: >
3117 let val = get(g:, 'var_name', 'default')
3118< This gets the value of g:var_name if it exists, and uses
3119 'default' when it does not exist.
3120 Preferably used as a |method|: >
3121 mydict->get(key)
3122get({func}, {what})
Bram Moolenaar6f4754b2022-01-23 12:07:04 +00003123 Get item {what} from Funcref {func}. Possible values for
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003124 {what} are:
3125 "name" The function name
3126 "func" The function
3127 "dict" The dictionary
3128 "args" The list with arguments
Bram Moolenaar016188f2022-06-06 20:52:59 +01003129 Returns zero on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003130 Preferably used as a |method|: >
3131 myfunc->get(what)
3132<
3133 *getbufinfo()*
3134getbufinfo([{buf}])
3135getbufinfo([{dict}])
3136 Get information about buffers as a List of Dictionaries.
3137
3138 Without an argument information about all the buffers is
3139 returned.
3140
3141 When the argument is a |Dictionary| only the buffers matching
3142 the specified criteria are returned. The following keys can
3143 be specified in {dict}:
3144 buflisted include only listed buffers.
3145 bufloaded include only loaded buffers.
3146 bufmodified include only modified buffers.
3147
3148 Otherwise, {buf} specifies a particular buffer to return
3149 information for. For the use of {buf}, see |bufname()|
3150 above. If the buffer is found the returned List has one item.
3151 Otherwise the result is an empty list.
3152
3153 Each returned List item is a dictionary with the following
3154 entries:
3155 bufnr Buffer number.
3156 changed TRUE if the buffer is modified.
3157 changedtick Number of changes made to the buffer.
3158 hidden TRUE if the buffer is hidden.
3159 lastused Timestamp in seconds, like
3160 |localtime()|, when the buffer was
3161 last used.
3162 {only with the |+viminfo| feature}
3163 listed TRUE if the buffer is listed.
3164 lnum Line number used for the buffer when
3165 opened in the current window.
3166 Only valid if the buffer has been
3167 displayed in the window in the past.
3168 If you want the line number of the
3169 last known cursor position in a given
3170 window, use |line()|: >
3171 :echo line('.', {winid})
3172<
3173 linecount Number of lines in the buffer (only
3174 valid when loaded)
3175 loaded TRUE if the buffer is loaded.
3176 name Full path to the file in the buffer.
3177 signs List of signs placed in the buffer.
3178 Each list item is a dictionary with
3179 the following fields:
3180 id sign identifier
3181 lnum line number
3182 name sign name
3183 variables A reference to the dictionary with
3184 buffer-local variables.
3185 windows List of |window-ID|s that display this
3186 buffer
3187 popups List of popup |window-ID|s that
3188 display this buffer
3189
3190 Examples: >
3191 for buf in getbufinfo()
3192 echo buf.name
3193 endfor
3194 for buf in getbufinfo({'buflisted':1})
3195 if buf.changed
3196 ....
3197 endif
3198 endfor
3199<
3200 To get buffer-local options use: >
3201 getbufvar({bufnr}, '&option_name')
3202<
3203 Can also be used as a |method|: >
3204 GetBufnr()->getbufinfo()
3205<
3206
3207 *getbufline()*
3208getbufline({buf}, {lnum} [, {end}])
3209 Return a |List| with the lines starting from {lnum} to {end}
3210 (inclusive) in the buffer {buf}. If {end} is omitted, a
Bram Moolenaarce30ccc2022-11-21 19:57:04 +00003211 |List| with only the line {lnum} is returned. See
3212 `getbufoneline()` for only getting the line.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003213
3214 For the use of {buf}, see |bufname()| above.
3215
3216 For {lnum} and {end} "$" can be used for the last line of the
3217 buffer. Otherwise a number must be used.
3218
3219 When {lnum} is smaller than 1 or bigger than the number of
3220 lines in the buffer, an empty |List| is returned.
3221
3222 When {end} is greater than the number of lines in the buffer,
3223 it is treated as {end} is set to the number of lines in the
3224 buffer. When {end} is before {lnum} an empty |List| is
3225 returned.
3226
3227 This function works only for loaded buffers. For unloaded and
3228 non-existing buffers, an empty |List| is returned.
3229
3230 Example: >
3231 :let lines = getbufline(bufnr("myfile"), 1, "$")
3232
3233< Can also be used as a |method|: >
3234 GetBufnr()->getbufline(lnum)
Bram Moolenaarce30ccc2022-11-21 19:57:04 +00003235<
3236 *getbufoneline()*
3237getbufoneline({buf}, {lnum})
3238 Just like `getbufline()` but only get one line and return it
3239 as a string.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003240
3241getbufvar({buf}, {varname} [, {def}]) *getbufvar()*
3242 The result is the value of option or local buffer variable
3243 {varname} in buffer {buf}. Note that the name without "b:"
3244 must be used.
3245 The {varname} argument is a string.
3246 When {varname} is empty returns a |Dictionary| with all the
3247 buffer-local variables.
3248 When {varname} is equal to "&" returns a |Dictionary| with all
3249 the buffer-local options.
3250 Otherwise, when {varname} starts with "&" returns the value of
3251 a buffer-local option.
3252 This also works for a global or buffer-local option, but it
3253 doesn't work for a global variable, window-local variable or
3254 window-local option.
3255 For the use of {buf}, see |bufname()| above.
3256 When the buffer or variable doesn't exist {def} or an empty
3257 string is returned, there is no error message.
3258 Examples: >
3259 :let bufmodified = getbufvar(1, "&mod")
Bram Moolenaarc51cf032022-02-26 12:25:45 +00003260 :echo "todo myvar = " .. getbufvar("todo", "myvar")
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003261
3262< Can also be used as a |method|: >
3263 GetBufnr()->getbufvar(varname)
3264<
3265getchangelist([{buf}]) *getchangelist()*
3266 Returns the |changelist| for the buffer {buf}. For the use
3267 of {buf}, see |bufname()| above. If buffer {buf} doesn't
3268 exist, an empty list is returned.
3269
3270 The returned list contains two entries: a list with the change
3271 locations and the current position in the list. Each
3272 entry in the change list is a dictionary with the following
3273 entries:
3274 col column number
3275 coladd column offset for 'virtualedit'
3276 lnum line number
3277 If buffer {buf} is the current buffer, then the current
3278 position refers to the position in the list. For other
3279 buffers, it is set to the length of the list.
3280
3281 Can also be used as a |method|: >
3282 GetBufnr()->getchangelist()
3283
3284getchar([expr]) *getchar()*
3285 Get a single character from the user or input stream.
3286 If [expr] is omitted, wait until a character is available.
3287 If [expr] is 0, only get a character when one is available.
3288 Return zero otherwise.
3289 If [expr] is 1, only check if a character is available, it is
3290 not consumed. Return zero if no character available.
3291 If you prefer always getting a string use |getcharstr()|.
3292
3293 Without [expr] and when [expr] is 0 a whole character or
3294 special key is returned. If it is a single character, the
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01003295 result is a Number. Use |nr2char()| to convert it to a String.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003296 Otherwise a String is returned with the encoded character.
3297 For a special key it's a String with a sequence of bytes
3298 starting with 0x80 (decimal: 128). This is the same value as
3299 the String "\<Key>", e.g., "\<Left>". The returned value is
3300 also a String when a modifier (shift, control, alt) was used
3301 that is not included in the character.
3302
3303 When [expr] is 0 and Esc is typed, there will be a short delay
3304 while Vim waits to see if this is the start of an escape
3305 sequence.
3306
3307 When [expr] is 1 only the first byte is returned. For a
3308 one-byte character it is the character itself as a number.
3309 Use nr2char() to convert it to a String.
3310
3311 Use getcharmod() to obtain any additional modifiers.
3312
3313 When the user clicks a mouse button, the mouse event will be
3314 returned. The position can then be found in |v:mouse_col|,
3315 |v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|.
3316 |getmousepos()| can also be used. Mouse move events will be
3317 ignored.
3318 This example positions the mouse as it would normally happen: >
3319 let c = getchar()
3320 if c == "\<LeftMouse>" && v:mouse_win > 0
Bram Moolenaarc51cf032022-02-26 12:25:45 +00003321 exe v:mouse_win .. "wincmd w"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003322 exe v:mouse_lnum
Bram Moolenaarc51cf032022-02-26 12:25:45 +00003323 exe "normal " .. v:mouse_col .. "|"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003324 endif
3325<
3326 When using bracketed paste only the first character is
3327 returned, the rest of the pasted text is dropped.
3328 |xterm-bracketed-paste|.
3329
3330 There is no prompt, you will somehow have to make clear to the
3331 user that a character has to be typed. The screen is not
3332 redrawn, e.g. when resizing the window. When using a popup
3333 window it should work better with a |popup-filter|.
3334
3335 There is no mapping for the character.
3336 Key codes are replaced, thus when the user presses the <Del>
3337 key you get the code for the <Del> key, not the raw character
3338 sequence. Examples: >
3339 getchar() == "\<Del>"
3340 getchar() == "\<S-Left>"
3341< This example redefines "f" to ignore case: >
3342 :nmap f :call FindChar()<CR>
3343 :function FindChar()
3344 : let c = nr2char(getchar())
3345 : while col('.') < col('$') - 1
3346 : normal l
3347 : if getline('.')[col('.') - 1] ==? c
3348 : break
3349 : endif
3350 : endwhile
3351 :endfunction
3352<
3353 You may also receive synthetic characters, such as
3354 |<CursorHold>|. Often you will want to ignore this and get
3355 another character: >
3356 :function GetKey()
3357 : let c = getchar()
3358 : while c == "\<CursorHold>"
3359 : let c = getchar()
3360 : endwhile
3361 : return c
3362 :endfunction
3363
3364getcharmod() *getcharmod()*
3365 The result is a Number which is the state of the modifiers for
3366 the last obtained character with getchar() or in another way.
3367 These values are added together:
3368 2 shift
3369 4 control
3370 8 alt (meta)
3371 16 meta (when it's different from ALT)
3372 32 mouse double click
3373 64 mouse triple click
3374 96 mouse quadruple click (== 32 + 64)
3375 128 command (Macintosh only)
3376 Only the modifiers that have not been included in the
3377 character itself are obtained. Thus Shift-a results in "A"
Bram Moolenaar016188f2022-06-06 20:52:59 +01003378 without a modifier. Returns 0 if no modifiers are used.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003379
3380 *getcharpos()*
3381getcharpos({expr})
3382 Get the position for String {expr}. Same as |getpos()| but the
3383 column number in the returned List is a character index
3384 instead of a byte index.
naohiro ono56200ee2022-01-01 14:59:44 +00003385 If |getpos()| returns a very large column number, equal to
3386 |v:maxcol|, then getcharpos() will return the character index
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003387 of the last character.
3388
3389 Example:
3390 With the cursor on '세' in line 5 with text "여보세요": >
3391 getcharpos('.') returns [0, 5, 3, 0]
3392 getpos('.') returns [0, 5, 7, 0]
3393<
3394 Can also be used as a |method|: >
3395 GetMark()->getcharpos()
3396
3397getcharsearch() *getcharsearch()*
3398 Return the current character search information as a {dict}
3399 with the following entries:
3400
3401 char character previously used for a character
3402 search (|t|, |f|, |T|, or |F|); empty string
3403 if no character search has been performed
3404 forward direction of character search; 1 for forward,
3405 0 for backward
3406 until type of character search; 1 for a |t| or |T|
3407 character search, 0 for an |f| or |F|
3408 character search
3409
3410 This can be useful to always have |;| and |,| search
3411 forward/backward regardless of the direction of the previous
3412 character search: >
3413 :nnoremap <expr> ; getcharsearch().forward ? ';' : ','
3414 :nnoremap <expr> , getcharsearch().forward ? ',' : ';'
3415< Also see |setcharsearch()|.
3416
3417
3418getcharstr([expr]) *getcharstr()*
3419 Get a single character from the user or input stream as a
3420 string.
3421 If [expr] is omitted, wait until a character is available.
3422 If [expr] is 0 or false, only get a character when one is
3423 available. Return an empty string otherwise.
3424 If [expr] is 1 or true, only check if a character is
3425 available, it is not consumed. Return an empty string
3426 if no character is available.
3427 Otherwise this works like |getchar()|, except that a number
3428 result is converted to a string.
3429
Shougo Matsushita79d599b2022-05-07 12:48:29 +01003430getcmdcompltype() *getcmdcompltype()*
3431 Return the type of the current command-line completion.
3432 Only works when the command line is being edited, thus
3433 requires use of |c_CTRL-\_e| or |c_CTRL-R_=|.
Bram Moolenaar921bde82022-05-09 19:50:35 +01003434 See |:command-completion| for the return string.
Shougo Matsushita07ea5f12022-08-27 12:22:25 +01003435 Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()| and
3436 |setcmdline()|.
Shougo Matsushita79d599b2022-05-07 12:48:29 +01003437 Returns an empty string when completion is not defined.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003438
3439getcmdline() *getcmdline()*
3440 Return the current command-line. Only works when the command
3441 line is being edited, thus requires use of |c_CTRL-\_e| or
3442 |c_CTRL-R_=|.
3443 Example: >
3444 :cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
Shougo Matsushita07ea5f12022-08-27 12:22:25 +01003445< Also see |getcmdtype()|, |getcmdpos()|, |setcmdpos()| and
3446 |setcmdline()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003447 Returns an empty string when entering a password or using
3448 |inputsecret()|.
3449
3450getcmdpos() *getcmdpos()*
3451 Return the position of the cursor in the command line as a
3452 byte count. The first column is 1.
3453 Only works when editing the command line, thus requires use of
3454 |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
3455 Returns 0 otherwise.
Shougo Matsushita07ea5f12022-08-27 12:22:25 +01003456 Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()| and
3457 |setcmdline()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003458
Shougo Matsushita79d599b2022-05-07 12:48:29 +01003459getcmdscreenpos() *getcmdscreenpos()*
3460 Return the screen position of the cursor in the command line
3461 as a byte count. The first column is 1.
3462 Instead of |getcmdpos()|, it adds the prompt position.
3463 Only works when editing the command line, thus requires use of
3464 |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
3465 Returns 0 otherwise.
Shougo Matsushita07ea5f12022-08-27 12:22:25 +01003466 Also see |getcmdpos()|, |setcmdpos()|, |getcmdline()| and
3467 |setcmdline()|.
Shougo Matsushita79d599b2022-05-07 12:48:29 +01003468
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003469getcmdtype() *getcmdtype()*
3470 Return the current command-line type. Possible return values
3471 are:
3472 : normal Ex command
3473 > debug mode command |debug-mode|
3474 / forward search command
3475 ? backward search command
3476 @ |input()| command
3477 - |:insert| or |:append| command
3478 = |i_CTRL-R_=|
3479 Only works when editing the command line, thus requires use of
3480 |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
3481 Returns an empty string otherwise.
3482 Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
3483
3484getcmdwintype() *getcmdwintype()*
3485 Return the current |command-line-window| type. Possible return
3486 values are the same as |getcmdtype()|. Returns an empty string
3487 when not in the command-line window.
3488
3489getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
3490 Return a list of command-line completion matches. The String
3491 {type} argument specifies what for. The following completion
3492 types are supported:
3493
3494 arglist file names in argument list
3495 augroup autocmd groups
3496 buffer buffer names
Bram Moolenaar6e2e2cc2022-03-14 19:24:46 +00003497 behave |:behave| suboptions
3498 breakpoint |:breakadd| and |:breakdel| suboptions
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003499 color color schemes
3500 command Ex command
3501 cmdline |cmdline-completion| result
3502 compiler compilers
3503 cscope |:cscope| suboptions
3504 diff_buffer |:diffget| and |:diffput| completion
3505 dir directory names
3506 environment environment variable names
3507 event autocommand events
3508 expression Vim expression
3509 file file and directory names
3510 file_in_path file and directory names in |'path'|
3511 filetype filetype names |'filetype'|
3512 function function name
3513 help help subjects
3514 highlight highlight groups
Bram Moolenaar6e2e2cc2022-03-14 19:24:46 +00003515 history |:history| suboptions
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003516 locale locale names (as output of locale -a)
3517 mapclear buffer argument
3518 mapping mapping name
3519 menu menus
3520 messages |:messages| suboptions
3521 option options
3522 packadd optional package |pack-add| names
Yegappan Lakshmanan454ce672022-03-24 11:22:13 +00003523 scriptnames sourced script names |:scriptnames|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003524 shellcmd Shell command
3525 sign |:sign| suboptions
3526 syntax syntax file names |'syntax'|
3527 syntime |:syntime| suboptions
3528 tag tags
3529 tag_listfiles tags, file names
3530 user user names
3531 var user variables
3532
3533 If {pat} is an empty string, then all the matches are
3534 returned. Otherwise only items matching {pat} are returned.
3535 See |wildcards| for the use of special characters in {pat}.
3536
3537 If the optional {filtered} flag is set to 1, then 'wildignore'
3538 is applied to filter the results. Otherwise all the matches
3539 are returned. The 'wildignorecase' option always applies.
3540
Yegappan Lakshmanane7dd0fa2022-03-22 16:06:31 +00003541 If the 'wildoptions' option contains 'fuzzy', then fuzzy
3542 matching is used to get the completion matches. Otherwise
Yegappan Lakshmanan454ce672022-03-24 11:22:13 +00003543 regular expression matching is used. Thus this function
3544 follows the user preference, what happens on the command line.
3545 If you do not want this you can make 'wildoptions' empty
3546 before calling getcompletion() and restore it afterwards.
Yegappan Lakshmanane7dd0fa2022-03-22 16:06:31 +00003547
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003548 If {type} is "cmdline", then the |cmdline-completion| result is
3549 returned. For example, to complete the possible values after
3550 a ":call" command: >
3551 echo getcompletion('call ', 'cmdline')
3552<
3553 If there are no matches, an empty list is returned. An
3554 invalid value for {type} produces an error.
3555
3556 Can also be used as a |method|: >
3557 GetPattern()->getcompletion('color')
3558<
3559 *getcurpos()*
3560getcurpos([{winid}])
3561 Get the position of the cursor. This is like getpos('.'), but
3562 includes an extra "curswant" item in the list:
3563 [0, lnum, col, off, curswant] ~
3564 The "curswant" number is the preferred column when moving the
naohiro ono56200ee2022-01-01 14:59:44 +00003565 cursor vertically. After |$| command it will be a very large
3566 number equal to |v:maxcol|. Also see |getcursorcharpos()| and
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003567 |getpos()|.
3568 The first "bufnum" item is always zero. The byte position of
3569 the cursor is returned in 'col'. To get the character
3570 position, use |getcursorcharpos()|.
3571
3572 The optional {winid} argument can specify the window. It can
3573 be the window number or the |window-ID|. The last known
3574 cursor position is returned, this may be invalid for the
3575 current value of the buffer if it is not the current window.
3576 If {winid} is invalid a list with zeroes is returned.
3577
3578 This can be used to save and restore the cursor position: >
3579 let save_cursor = getcurpos()
3580 MoveTheCursorAround
3581 call setpos('.', save_cursor)
3582< Note that this only works within the window. See
3583 |winrestview()| for restoring more state.
3584
3585 Can also be used as a |method|: >
3586 GetWinid()->getcurpos()
3587<
3588 *getcursorcharpos()*
3589getcursorcharpos([{winid}])
3590 Same as |getcurpos()| but the column number in the returned
3591 List is a character index instead of a byte index.
3592
3593 Example:
3594 With the cursor on '보' in line 3 with text "여보세요": >
3595 getcursorcharpos() returns [0, 3, 2, 0, 3]
3596 getcurpos() returns [0, 3, 4, 0, 3]
3597<
3598 Can also be used as a |method|: >
3599 GetWinid()->getcursorcharpos()
3600
3601< *getcwd()*
3602getcwd([{winnr} [, {tabnr}]])
3603 The result is a String, which is the name of the current
3604 working directory. 'autochdir' is ignored.
3605
3606 With {winnr} return the local current directory of this window
3607 in the current tab page. {winnr} can be the window number or
3608 the |window-ID|.
3609 If {winnr} is -1 return the name of the global working
3610 directory. See also |haslocaldir()|.
3611
3612 With {winnr} and {tabnr} return the local current directory of
3613 the window in the specified tab page. If {winnr} is -1 return
3614 the working directory of the tabpage.
3615 If {winnr} is zero use the current window, if {tabnr} is zero
3616 use the current tabpage.
3617 Without any arguments, return the actual working directory of
3618 the current window.
3619 Return an empty string if the arguments are invalid.
3620
3621 Examples: >
3622 " Get the working directory of the current window
3623 :echo getcwd()
3624 :echo getcwd(0)
3625 :echo getcwd(0, 0)
3626 " Get the working directory of window 3 in tabpage 2
3627 :echo getcwd(3, 2)
3628 " Get the global working directory
3629 :echo getcwd(-1)
3630 " Get the working directory of tabpage 3
3631 :echo getcwd(-1, 3)
3632 " Get the working directory of current tabpage
3633 :echo getcwd(-1, 0)
3634
3635< Can also be used as a |method|: >
3636 GetWinnr()->getcwd()
3637
3638getenv({name}) *getenv()*
3639 Return the value of environment variable {name}. The {name}
3640 argument is a string, without a leading '$'. Example: >
3641 myHome = getenv('HOME')
3642
3643< When the variable does not exist |v:null| is returned. That
3644 is different from a variable set to an empty string, although
3645 some systems interpret the empty value as the variable being
3646 deleted. See also |expr-env|.
3647
3648 Can also be used as a |method|: >
3649 GetVarname()->getenv()
3650
3651getfontname([{name}]) *getfontname()*
3652 Without an argument returns the name of the normal font being
3653 used. Like what is used for the Normal highlight group
3654 |hl-Normal|.
3655 With an argument a check is done whether String {name} is a
3656 valid font name. If not then an empty string is returned.
3657 Otherwise the actual font name is returned, or {name} if the
3658 GUI does not support obtaining the real name.
3659 Only works when the GUI is running, thus not in your vimrc or
3660 gvimrc file. Use the |GUIEnter| autocommand to use this
3661 function just after the GUI has started.
3662 Note that the GTK GUI accepts any font name, thus checking for
3663 a valid name does not work.
3664
3665getfperm({fname}) *getfperm()*
3666 The result is a String, which is the read, write, and execute
3667 permissions of the given file {fname}.
3668 If {fname} does not exist or its directory cannot be read, an
3669 empty string is returned.
3670 The result is of the form "rwxrwxrwx", where each group of
3671 "rwx" flags represent, in turn, the permissions of the owner
3672 of the file, the group the file belongs to, and other users.
3673 If a user does not have a given permission the flag for this
3674 is replaced with the string "-". Examples: >
3675 :echo getfperm("/etc/passwd")
3676 :echo getfperm(expand("~/.vimrc"))
3677< This will hopefully (from a security point of view) display
3678 the string "rw-r--r--" or even "rw-------".
3679
3680 Can also be used as a |method|: >
3681 GetFilename()->getfperm()
3682<
3683 For setting permissions use |setfperm()|.
3684
3685getfsize({fname}) *getfsize()*
3686 The result is a Number, which is the size in bytes of the
3687 given file {fname}.
3688 If {fname} is a directory, 0 is returned.
3689 If the file {fname} can't be found, -1 is returned.
3690 If the size of {fname} is too big to fit in a Number then -2
3691 is returned.
3692
3693 Can also be used as a |method|: >
3694 GetFilename()->getfsize()
3695
3696getftime({fname}) *getftime()*
3697 The result is a Number, which is the last modification time of
3698 the given file {fname}. The value is measured as seconds
3699 since 1st Jan 1970, and may be passed to strftime(). See also
3700 |localtime()| and |strftime()|.
3701 If the file {fname} can't be found -1 is returned.
3702
3703 Can also be used as a |method|: >
3704 GetFilename()->getftime()
3705
3706getftype({fname}) *getftype()*
3707 The result is a String, which is a description of the kind of
3708 file of the given file {fname}.
3709 If {fname} does not exist an empty string is returned.
3710 Here is a table over different kinds of files and their
3711 results:
3712 Normal file "file"
3713 Directory "dir"
3714 Symbolic link "link"
3715 Block device "bdev"
3716 Character device "cdev"
3717 Socket "socket"
3718 FIFO "fifo"
3719 All other "other"
3720 Example: >
3721 getftype("/home")
3722< Note that a type such as "link" will only be returned on
3723 systems that support it. On some systems only "dir" and
3724 "file" are returned. On MS-Windows a symbolic link to a
3725 directory returns "dir" instead of "link".
3726
3727 Can also be used as a |method|: >
3728 GetFilename()->getftype()
3729
3730getimstatus() *getimstatus()*
3731 The result is a Number, which is |TRUE| when the IME status is
Bram Moolenaar016188f2022-06-06 20:52:59 +01003732 active and |FALSE| otherwise.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003733 See 'imstatusfunc'.
3734
3735getjumplist([{winnr} [, {tabnr}]]) *getjumplist()*
3736 Returns the |jumplist| for the specified window.
3737
3738 Without arguments use the current window.
3739 With {winnr} only use this window in the current tab page.
3740 {winnr} can also be a |window-ID|.
3741 With {winnr} and {tabnr} use the window in the specified tab
Bram Moolenaar016188f2022-06-06 20:52:59 +01003742 page. If {winnr} or {tabnr} is invalid, an empty list is
3743 returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003744
3745 The returned list contains two entries: a list with the jump
3746 locations and the last used jump position number in the list.
3747 Each entry in the jump location list is a dictionary with
3748 the following entries:
3749 bufnr buffer number
3750 col column number
3751 coladd column offset for 'virtualedit'
3752 filename filename if available
3753 lnum line number
3754
3755 Can also be used as a |method|: >
3756 GetWinnr()->getjumplist()
3757
3758< *getline()*
3759getline({lnum} [, {end}])
3760 Without {end} the result is a String, which is line {lnum}
3761 from the current buffer. Example: >
3762 getline(1)
3763< When {lnum} is a String that doesn't start with a
3764 digit, |line()| is called to translate the String into a Number.
3765 To get the line under the cursor: >
3766 getline(".")
3767< When {lnum} is a number smaller than 1 or bigger than the
3768 number of lines in the buffer, an empty string is returned.
3769
3770 When {end} is given the result is a |List| where each item is
3771 a line from the current buffer in the range {lnum} to {end},
3772 including line {end}.
3773 {end} is used in the same way as {lnum}.
3774 Non-existing lines are silently omitted.
3775 When {end} is before {lnum} an empty |List| is returned.
3776 Example: >
3777 :let start = line('.')
3778 :let end = search("^$") - 1
3779 :let lines = getline(start, end)
3780
3781< Can also be used as a |method|: >
3782 ComputeLnum()->getline()
3783
Bram Moolenaarce30ccc2022-11-21 19:57:04 +00003784< To get lines from another buffer see |getbufline()| and
3785 |getbufoneline()|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003786
3787getloclist({nr} [, {what}]) *getloclist()*
3788 Returns a |List| with all the entries in the location list for
3789 window {nr}. {nr} can be the window number or the |window-ID|.
3790 When {nr} is zero the current window is used.
3791
3792 For a location list window, the displayed location list is
3793 returned. For an invalid window number {nr}, an empty list is
3794 returned. Otherwise, same as |getqflist()|.
3795
3796 If the optional {what} dictionary argument is supplied, then
3797 returns the items listed in {what} as a dictionary. Refer to
3798 |getqflist()| for the supported items in {what}.
3799
3800 In addition to the items supported by |getqflist()| in {what},
3801 the following item is supported by |getloclist()|:
3802
3803 filewinid id of the window used to display files
3804 from the location list. This field is
3805 applicable only when called from a
3806 location list window. See
3807 |location-list-file-window| for more
3808 details.
3809
3810 Returns a |Dictionary| with default values if there is no
3811 location list for the window {nr}.
3812 Returns an empty Dictionary if window {nr} does not exist.
3813
3814 Examples (See also |getqflist-examples|): >
3815 :echo getloclist(3, {'all': 0})
3816 :echo getloclist(5, {'filewinid': 0})
3817
3818
3819getmarklist([{buf}]) *getmarklist()*
3820 Without the {buf} argument returns a |List| with information
3821 about all the global marks. |mark|
3822
3823 If the optional {buf} argument is specified, returns the
3824 local marks defined in buffer {buf}. For the use of {buf},
Bram Moolenaar016188f2022-06-06 20:52:59 +01003825 see |bufname()|. If {buf} is invalid, an empty list is
3826 returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003827
3828 Each item in the returned List is a |Dict| with the following:
3829 mark name of the mark prefixed by "'"
3830 pos a |List| with the position of the mark:
3831 [bufnum, lnum, col, off]
3832 Refer to |getpos()| for more information.
3833 file file name
3834
3835 Refer to |getpos()| for getting information about a specific
3836 mark.
3837
3838 Can also be used as a |method|: >
3839 GetBufnr()->getmarklist()
3840
3841getmatches([{win}]) *getmatches()*
3842 Returns a |List| with all matches previously defined for the
3843 current window by |matchadd()| and the |:match| commands.
3844 |getmatches()| is useful in combination with |setmatches()|,
3845 as |setmatches()| can restore a list of matches saved by
3846 |getmatches()|.
3847 If {win} is specified, use the window with this number or
Bram Moolenaar016188f2022-06-06 20:52:59 +01003848 window ID instead of the current window. If {win} is invalid,
3849 an empty list is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003850 Example: >
3851 :echo getmatches()
3852< [{'group': 'MyGroup1', 'pattern': 'TODO',
3853 'priority': 10, 'id': 1}, {'group': 'MyGroup2',
3854 'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
3855 :let m = getmatches()
3856 :call clearmatches()
3857 :echo getmatches()
3858< [] >
3859 :call setmatches(m)
3860 :echo getmatches()
3861< [{'group': 'MyGroup1', 'pattern': 'TODO',
3862 'priority': 10, 'id': 1}, {'group': 'MyGroup2',
3863 'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
3864 :unlet m
3865<
3866getmousepos() *getmousepos()*
3867 Returns a |Dictionary| with the last known position of the
3868 mouse. This can be used in a mapping for a mouse click or in
3869 a filter of a popup window. The items are:
3870 screenrow screen row
3871 screencol screen column
3872 winid Window ID of the click
3873 winrow row inside "winid"
3874 wincol column inside "winid"
3875 line text line inside "winid"
3876 column text column inside "winid"
3877 All numbers are 1-based.
3878
3879 If not over a window, e.g. when in the command line, then only
3880 "screenrow" and "screencol" are valid, the others are zero.
3881
3882 When on the status line below a window or the vertical
3883 separator right of a window, the "line" and "column" values
3884 are zero.
3885
3886 When the position is after the text then "column" is the
3887 length of the text in bytes plus one.
3888
3889 If the mouse is over a popup window then that window is used.
3890
3891 When using |getchar()| the Vim variables |v:mouse_lnum|,
3892 |v:mouse_col| and |v:mouse_winid| also provide these values.
3893
Bram Moolenaar24dc19c2022-11-14 19:49:15 +00003894getmouseshape() *getmouseshape()*
3895 Returns the name of the currently showing mouse pointer.
3896 When the |+mouseshape| feature is not supported or the shape
3897 is unknown an empty string is returned.
3898 This function is mainly intended for testing.
3899
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003900 *getpid()*
3901getpid() Return a Number which is the process ID of the Vim process.
3902 On Unix and MS-Windows this is a unique number, until Vim
3903 exits.
3904
3905 *getpos()*
3906getpos({expr}) Get the position for String {expr}. For possible values of
3907 {expr} see |line()|. For getting the cursor position see
3908 |getcurpos()|.
3909 The result is a |List| with four numbers:
3910 [bufnum, lnum, col, off]
3911 "bufnum" is zero, unless a mark like '0 or 'A is used, then it
3912 is the buffer number of the mark.
3913 "lnum" and "col" are the position in the buffer. The first
3914 column is 1.
3915 The "off" number is zero, unless 'virtualedit' is used. Then
3916 it is the offset in screen columns from the start of the
3917 character. E.g., a position within a <Tab> or after the last
3918 character.
3919 Note that for '< and '> Visual mode matters: when it is "V"
3920 (visual line mode) the column of '< is zero and the column of
naohiro ono56200ee2022-01-01 14:59:44 +00003921 '> is a large number equal to |v:maxcol|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003922 The column number in the returned List is the byte position
3923 within the line. To get the character position in the line,
3924 use |getcharpos()|.
naohiro ono56200ee2022-01-01 14:59:44 +00003925 A very large column number equal to |v:maxcol| can be returned,
3926 in which case it means "after the end of the line".
Bram Moolenaar016188f2022-06-06 20:52:59 +01003927 If {expr} is invalid, returns a list with all zeros.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00003928 This can be used to save and restore the position of a mark: >
3929 let save_a_mark = getpos("'a")
3930 ...
3931 call setpos("'a", save_a_mark)
3932< Also see |getcharpos()|, |getcurpos()| and |setpos()|.
3933
3934 Can also be used as a |method|: >
3935 GetMark()->getpos()
3936
3937getqflist([{what}]) *getqflist()*
3938 Returns a |List| with all the current quickfix errors. Each
3939 list item is a dictionary with these entries:
3940 bufnr number of buffer that has the file name, use
3941 bufname() to get the name
3942 module module name
3943 lnum line number in the buffer (first line is 1)
3944 end_lnum
3945 end of line number if the item is multiline
3946 col column number (first column is 1)
3947 end_col end of column number if the item has range
3948 vcol |TRUE|: "col" is visual column
3949 |FALSE|: "col" is byte index
3950 nr error number
3951 pattern search pattern used to locate the error
3952 text description of the error
3953 type type of the error, 'E', '1', etc.
3954 valid |TRUE|: recognized error message
3955
3956 When there is no error list or it's empty, an empty list is
3957 returned. Quickfix list entries with a non-existing buffer
3958 number are returned with "bufnr" set to zero (Note: some
3959 functions accept buffer number zero for the alternate buffer,
3960 you may need to explicitly check for zero).
3961
3962 Useful application: Find pattern matches in multiple files and
3963 do something with them: >
3964 :vimgrep /theword/jg *.c
3965 :for d in getqflist()
3966 : echo bufname(d.bufnr) ':' d.lnum '=' d.text
3967 :endfor
3968<
3969 If the optional {what} dictionary argument is supplied, then
3970 returns only the items listed in {what} as a dictionary. The
3971 following string items are supported in {what}:
3972 changedtick get the total number of changes made
3973 to the list |quickfix-changedtick|
3974 context get the |quickfix-context|
3975 efm errorformat to use when parsing "lines". If
3976 not present, then the 'errorformat' option
3977 value is used.
3978 id get information for the quickfix list with
3979 |quickfix-ID|; zero means the id for the
3980 current list or the list specified by "nr"
3981 idx get information for the quickfix entry at this
3982 index in the list specified by 'id' or 'nr'.
3983 If set to zero, then uses the current entry.
3984 See |quickfix-index|
3985 items quickfix list entries
3986 lines parse a list of lines using 'efm' and return
3987 the resulting entries. Only a |List| type is
3988 accepted. The current quickfix list is not
3989 modified. See |quickfix-parse|.
3990 nr get information for this quickfix list; zero
3991 means the current quickfix list and "$" means
3992 the last quickfix list
3993 qfbufnr number of the buffer displayed in the quickfix
3994 window. Returns 0 if the quickfix buffer is
3995 not present. See |quickfix-buffer|.
3996 size number of entries in the quickfix list
3997 title get the list title |quickfix-title|
3998 winid get the quickfix |window-ID|
3999 all all of the above quickfix properties
4000 Non-string items in {what} are ignored. To get the value of a
4001 particular item, set it to zero.
4002 If "nr" is not present then the current quickfix list is used.
4003 If both "nr" and a non-zero "id" are specified, then the list
4004 specified by "id" is used.
4005 To get the number of lists in the quickfix stack, set "nr" to
4006 "$" in {what}. The "nr" value in the returned dictionary
4007 contains the quickfix stack size.
4008 When "lines" is specified, all the other items except "efm"
4009 are ignored. The returned dictionary contains the entry
4010 "items" with the list of entries.
4011
4012 The returned dictionary contains the following entries:
4013 changedtick total number of changes made to the
4014 list |quickfix-changedtick|
4015 context quickfix list context. See |quickfix-context|
4016 If not present, set to "".
4017 id quickfix list ID |quickfix-ID|. If not
4018 present, set to 0.
4019 idx index of the quickfix entry in the list. If not
4020 present, set to 0.
4021 items quickfix list entries. If not present, set to
4022 an empty list.
4023 nr quickfix list number. If not present, set to 0
4024 qfbufnr number of the buffer displayed in the quickfix
4025 window. If not present, set to 0.
4026 size number of entries in the quickfix list. If not
4027 present, set to 0.
4028 title quickfix list title text. If not present, set
4029 to "".
4030 winid quickfix |window-ID|. If not present, set to 0
4031
4032 Examples (See also |getqflist-examples|): >
4033 :echo getqflist({'all': 1})
4034 :echo getqflist({'nr': 2, 'title': 1})
4035 :echo getqflist({'lines' : ["F1:10:L10"]})
4036<
4037getreg([{regname} [, 1 [, {list}]]]) *getreg()*
4038 The result is a String, which is the contents of register
4039 {regname}. Example: >
4040 :let cliptext = getreg('*')
4041< When register {regname} was not set the result is an empty
4042 string.
Bram Moolenaara2baa732022-02-04 16:09:54 +00004043 The {regname} argument must be a string. *E1162*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004044
4045 getreg('=') returns the last evaluated value of the expression
4046 register. (For use in maps.)
4047 getreg('=', 1) returns the expression itself, so that it can
4048 be restored with |setreg()|. For other registers the extra
4049 argument is ignored, thus you can always give it.
4050
4051 If {list} is present and |TRUE|, the result type is changed
4052 to |List|. Each list item is one text line. Use it if you care
4053 about zero bytes possibly present inside register: without
4054 third argument both NLs and zero bytes are represented as NLs
4055 (see |NL-used-for-Nul|).
4056 When the register was not set an empty list is returned.
4057
4058 If {regname} is "", the unnamed register '"' is used.
4059 If {regname} is not specified, |v:register| is used.
4060 In |Vim9-script| {regname} must be one character.
4061
4062 Can also be used as a |method|: >
4063 GetRegname()->getreg()
4064
4065getreginfo([{regname}]) *getreginfo()*
4066 Returns detailed information about register {regname} as a
4067 Dictionary with the following entries:
4068 regcontents List of lines contained in register
4069 {regname}, like
4070 |getreg|({regname}, 1, 1).
4071 regtype the type of register {regname}, as in
4072 |getregtype()|.
4073 isunnamed Boolean flag, v:true if this register
4074 is currently pointed to by the unnamed
4075 register.
4076 points_to for the unnamed register, gives the
4077 single letter name of the register
4078 currently pointed to (see |quotequote|).
4079 For example, after deleting a line
4080 with `dd`, this field will be "1",
4081 which is the register that got the
4082 deleted text.
4083
4084 The {regname} argument is a string. If {regname} is invalid
4085 or not set, an empty Dictionary will be returned.
4086 If {regname} is "" or "@", the unnamed register '"' is used.
4087 If {regname} is not specified, |v:register| is used.
4088 The returned Dictionary can be passed to |setreg()|.
4089 In |Vim9-script| {regname} must be one character.
4090
4091 Can also be used as a |method|: >
4092 GetRegname()->getreginfo()
4093
4094getregtype([{regname}]) *getregtype()*
4095 The result is a String, which is type of register {regname}.
4096 The value will be one of:
4097 "v" for |characterwise| text
4098 "V" for |linewise| text
4099 "<CTRL-V>{width}" for |blockwise-visual| text
4100 "" for an empty or unknown register
4101 <CTRL-V> is one character with value 0x16.
4102 The {regname} argument is a string. If {regname} is "", the
4103 unnamed register '"' is used. If {regname} is not specified,
4104 |v:register| is used.
4105 In |Vim9-script| {regname} must be one character.
4106
4107 Can also be used as a |method|: >
4108 GetRegname()->getregtype()
4109
Yegappan Lakshmanan520f6ef2022-08-25 17:40:40 +01004110getscriptinfo([{opts}) *getscriptinfo()*
Yegappan Lakshmananf768c3d2022-08-22 13:15:13 +01004111 Returns a |List| with information about all the sourced Vim
Bram Moolenaar753885b2022-08-24 16:30:36 +01004112 scripts in the order they were sourced, like what
4113 `:scriptnames` shows.
Yegappan Lakshmananf768c3d2022-08-22 13:15:13 +01004114
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01004115 The optional Dict argument {opts} supports the following
4116 optional items:
4117 name Script name match pattern. If specified,
4118 and "sid" is not specified, information about
4119 scripts with name that match the pattern
4120 "name" are returned.
4121 sid Script ID |<SID>|. If specified, only
4122 information about the script with ID "sid" is
4123 returned and "name" is ignored.
4124
Yegappan Lakshmananf768c3d2022-08-22 13:15:13 +01004125 Each item in the returned List is a |Dict| with the following
4126 items:
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01004127 autoload Set to TRUE for a script that was used with
Bram Moolenaar753885b2022-08-24 16:30:36 +01004128 `import autoload` but was not actually sourced
4129 yet (see |import-autoload|).
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01004130 functions List of script-local function names defined in
4131 the script. Present only when a particular
4132 script is specified using the "sid" item in
4133 {opts}.
4134 name Vim script file name.
4135 sid Script ID |<SID>|.
4136 sourced Script ID of the actually sourced script that
Bram Moolenaarfd999452022-08-24 18:30:14 +01004137 this script name links to, if any, otherwise
4138 zero
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01004139 variables A dictionary with the script-local variables.
Bram Moolenaarf1dcd142022-12-31 15:30:45 +00004140 Present only when a particular script is
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01004141 specified using the "sid" item in {opts}.
4142 Note that this is a copy, the value of
4143 script-local variables cannot be changed using
4144 this dictionary.
4145 version Vimscript version (|scriptversion|)
Yegappan Lakshmanan520f6ef2022-08-25 17:40:40 +01004146
Yegappan Lakshmanan2f892d82022-08-28 18:52:10 +01004147 Examples: >
4148 :echo getscriptinfo({'name': 'myscript'})
4149 :echo getscriptinfo({'sid': 15}).variables
4150<
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004151gettabinfo([{tabnr}]) *gettabinfo()*
4152 If {tabnr} is not specified, then information about all the
4153 tab pages is returned as a |List|. Each List item is a
4154 |Dictionary|. Otherwise, {tabnr} specifies the tab page
4155 number and information about that one is returned. If the tab
4156 page does not exist an empty List is returned.
4157
4158 Each List item is a |Dictionary| with the following entries:
4159 tabnr tab page number.
4160 variables a reference to the dictionary with
4161 tabpage-local variables
4162 windows List of |window-ID|s in the tab page.
4163
4164 Can also be used as a |method|: >
4165 GetTabnr()->gettabinfo()
4166
4167gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()*
4168 Get the value of a tab-local variable {varname} in tab page
4169 {tabnr}. |t:var|
4170 Tabs are numbered starting with one.
4171 The {varname} argument is a string. When {varname} is empty a
4172 dictionary with all tab-local variables is returned.
4173 Note that the name without "t:" must be used.
4174 When the tab or variable doesn't exist {def} or an empty
4175 string is returned, there is no error message.
4176
4177 Can also be used as a |method|: >
4178 GetTabnr()->gettabvar(varname)
4179
4180gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()*
4181 Get the value of window-local variable {varname} in window
4182 {winnr} in tab page {tabnr}.
4183 The {varname} argument is a string. When {varname} is empty a
4184 dictionary with all window-local variables is returned.
4185 When {varname} is equal to "&" get the values of all
4186 window-local options in a |Dictionary|.
4187 Otherwise, when {varname} starts with "&" get the value of a
4188 window-local option.
4189 Note that {varname} must be the name without "w:".
4190 Tabs are numbered starting with one. For the current tabpage
4191 use |getwinvar()|.
4192 {winnr} can be the window number or the |window-ID|.
4193 When {winnr} is zero the current window is used.
4194 This also works for a global option, buffer-local option and
4195 window-local option, but it doesn't work for a global variable
4196 or buffer-local variable.
4197 When the tab, window or variable doesn't exist {def} or an
4198 empty string is returned, there is no error message.
4199 Examples: >
4200 :let list_is_on = gettabwinvar(1, 2, '&list')
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004201 :echo "myvar = " .. gettabwinvar(3, 1, 'myvar')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004202<
4203 To obtain all window-local variables use: >
4204 gettabwinvar({tabnr}, {winnr}, '&')
4205
4206< Can also be used as a |method|: >
4207 GetTabnr()->gettabwinvar(winnr, varname)
4208
4209gettagstack([{winnr}]) *gettagstack()*
4210 The result is a Dict, which is the tag stack of window {winnr}.
4211 {winnr} can be the window number or the |window-ID|.
4212 When {winnr} is not specified, the current window is used.
4213 When window {winnr} doesn't exist, an empty Dict is returned.
4214
4215 The returned dictionary contains the following entries:
4216 curidx Current index in the stack. When at
4217 top of the stack, set to (length + 1).
4218 Index of bottom of the stack is 1.
4219 items List of items in the stack. Each item
4220 is a dictionary containing the
4221 entries described below.
4222 length Number of entries in the stack.
4223
4224 Each item in the stack is a dictionary with the following
4225 entries:
4226 bufnr buffer number of the current jump
4227 from cursor position before the tag jump.
4228 See |getpos()| for the format of the
4229 returned list.
4230 matchnr current matching tag number. Used when
4231 multiple matching tags are found for a
4232 name.
4233 tagname name of the tag
4234
4235 See |tagstack| for more information about the tag stack.
4236
4237 Can also be used as a |method|: >
4238 GetWinnr()->gettagstack()
4239
4240
4241gettext({text}) *gettext()*
4242 Translate String {text} if possible.
4243 This is mainly for use in the distributed Vim scripts. When
4244 generating message translations the {text} is extracted by
4245 xgettext, the translator can add the translated message in the
4246 .po file and Vim will lookup the translation when gettext() is
4247 called.
4248 For {text} double quoted strings are preferred, because
4249 xgettext does not understand escaping in single quoted
4250 strings.
4251
4252
4253getwininfo([{winid}]) *getwininfo()*
4254 Returns information about windows as a |List| with Dictionaries.
4255
4256 If {winid} is given Information about the window with that ID
4257 is returned, as a |List| with one item. If the window does not
4258 exist the result is an empty list.
4259
4260 Without {winid} information about all the windows in all the
4261 tab pages is returned.
4262
4263 Each List item is a |Dictionary| with the following entries:
4264 botline last complete displayed buffer line
4265 bufnr number of buffer in the window
4266 height window height (excluding winbar)
4267 loclist 1 if showing a location list
4268 {only with the +quickfix feature}
4269 quickfix 1 if quickfix or location list window
4270 {only with the +quickfix feature}
4271 terminal 1 if a terminal window
4272 {only with the +terminal feature}
4273 tabnr tab page number
4274 topline first displayed buffer line
4275 variables a reference to the dictionary with
4276 window-local variables
4277 width window width
4278 winbar 1 if the window has a toolbar, 0
4279 otherwise
4280 wincol leftmost screen column of the window;
4281 "col" from |win_screenpos()|
4282 textoff number of columns occupied by any
4283 'foldcolumn', 'signcolumn' and line
4284 number in front of the text
4285 winid |window-ID|
4286 winnr window number
4287 winrow topmost screen line of the window;
4288 "row" from |win_screenpos()|
4289
4290 Can also be used as a |method|: >
4291 GetWinnr()->getwininfo()
4292
4293getwinpos([{timeout}]) *getwinpos()*
4294 The result is a |List| with two numbers, the result of
4295 |getwinposx()| and |getwinposy()| combined:
4296 [x-pos, y-pos]
4297 {timeout} can be used to specify how long to wait in msec for
4298 a response from the terminal. When omitted 100 msec is used.
4299 Use a longer time for a remote terminal.
4300 When using a value less than 10 and no response is received
4301 within that time, a previously reported position is returned,
4302 if available. This can be used to poll for the position and
4303 do some work in the meantime: >
4304 while 1
4305 let res = getwinpos(1)
4306 if res[0] >= 0
4307 break
4308 endif
4309 " Do some work here
4310 endwhile
4311<
4312
4313 Can also be used as a |method|: >
4314 GetTimeout()->getwinpos()
4315<
4316 *getwinposx()*
4317getwinposx() The result is a Number, which is the X coordinate in pixels of
4318 the left hand side of the GUI Vim window. Also works for an
4319 xterm (uses a timeout of 100 msec).
4320 The result will be -1 if the information is not available.
4321 The value can be used with `:winpos`.
4322
4323 *getwinposy()*
4324getwinposy() The result is a Number, which is the Y coordinate in pixels of
4325 the top of the GUI Vim window. Also works for an xterm (uses
4326 a timeout of 100 msec).
4327 The result will be -1 if the information is not available.
4328 The value can be used with `:winpos`.
4329
4330getwinvar({winnr}, {varname} [, {def}]) *getwinvar()*
4331 Like |gettabwinvar()| for the current tabpage.
4332 Examples: >
4333 :let list_is_on = getwinvar(2, '&list')
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004334 :echo "myvar = " .. getwinvar(1, 'myvar')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004335
4336< Can also be used as a |method|: >
4337 GetWinnr()->getwinvar(varname)
4338<
4339glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()*
4340 Expand the file wildcards in {expr}. See |wildcards| for the
4341 use of special characters.
4342
4343 Unless the optional {nosuf} argument is given and is |TRUE|,
4344 the 'suffixes' and 'wildignore' options apply: Names matching
4345 one of the patterns in 'wildignore' will be skipped and
4346 'suffixes' affect the ordering of matches.
4347 'wildignorecase' always applies.
4348
4349 When {list} is present and it is |TRUE| the result is a |List|
4350 with all matching files. The advantage of using a List is,
4351 you also get filenames containing newlines correctly.
4352 Otherwise the result is a String and when there are several
4353 matches, they are separated by <NL> characters.
4354
4355 If the expansion fails, the result is an empty String or List.
4356
4357 You can also use |readdir()| if you need to do complicated
4358 things, such as limiting the number of matches.
4359
4360 A name for a non-existing file is not included. A symbolic
4361 link is only included if it points to an existing file.
4362 However, when the {alllinks} argument is present and it is
4363 |TRUE| then all symbolic links are included.
4364
4365 For most systems backticks can be used to get files names from
4366 any external command. Example: >
4367 :let tagfiles = glob("`find . -name tags -print`")
4368 :let &tags = substitute(tagfiles, "\n", ",", "g")
4369< The result of the program inside the backticks should be one
4370 item per line. Spaces inside an item are allowed.
4371
4372 See |expand()| for expanding special Vim variables. See
4373 |system()| for getting the raw output of an external command.
4374
4375 Can also be used as a |method|: >
4376 GetExpr()->glob()
4377
4378glob2regpat({string}) *glob2regpat()*
4379 Convert a file pattern, as used by glob(), into a search
4380 pattern. The result can be used to match with a string that
4381 is a file name. E.g. >
4382 if filename =~ glob2regpat('Make*.mak')
4383< This is equivalent to: >
4384 if filename =~ '^Make.*\.mak$'
4385< When {string} is an empty string the result is "^$", match an
4386 empty string.
4387 Note that the result depends on the system. On MS-Windows
4388 a backslash usually means a path separator.
4389
4390 Can also be used as a |method|: >
4391 GetExpr()->glob2regpat()
4392< *globpath()*
4393globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
4394 Perform glob() for String {expr} on all directories in {path}
4395 and concatenate the results. Example: >
4396 :echo globpath(&rtp, "syntax/c.vim")
4397<
4398 {path} is a comma-separated list of directory names. Each
4399 directory name is prepended to {expr} and expanded like with
4400 |glob()|. A path separator is inserted when needed.
4401 To add a comma inside a directory name escape it with a
4402 backslash. Note that on MS-Windows a directory may have a
4403 trailing backslash, remove it if you put a comma after it.
4404 If the expansion fails for one of the directories, there is no
4405 error message.
4406
4407 Unless the optional {nosuf} argument is given and is |TRUE|,
4408 the 'suffixes' and 'wildignore' options apply: Names matching
4409 one of the patterns in 'wildignore' will be skipped and
4410 'suffixes' affect the ordering of matches.
4411
4412 When {list} is present and it is |TRUE| the result is a |List|
4413 with all matching files. The advantage of using a List is, you
4414 also get filenames containing newlines correctly. Otherwise
4415 the result is a String and when there are several matches,
4416 they are separated by <NL> characters. Example: >
4417 :echo globpath(&rtp, "syntax/c.vim", 0, 1)
4418<
4419 {alllinks} is used as with |glob()|.
4420
4421 The "**" item can be used to search in a directory tree.
4422 For example, to find all "README.txt" files in the directories
4423 in 'runtimepath' and below: >
4424 :echo globpath(&rtp, "**/README.txt")
4425< Upwards search and limiting the depth of "**" is not
4426 supported, thus using 'path' will not always work properly.
4427
4428 Can also be used as a |method|, the base is passed as the
4429 second argument: >
4430 GetExpr()->globpath(&rtp)
4431<
4432 *has()*
4433has({feature} [, {check}])
4434 When {check} is omitted or is zero: The result is a Number,
4435 which is 1 if the feature {feature} is supported, zero
4436 otherwise. The {feature} argument is a string, case is
4437 ignored. See |feature-list| below.
4438
4439 When {check} is present and not zero: The result is a Number,
4440 which is 1 if the feature {feature} could ever be supported,
4441 zero otherwise. This is useful to check for a typo in
4442 {feature} and to detect dead code. Keep in mind that an older
4443 Vim version will not know about a feature added later and
4444 features that have been abandoned will not be known by the
4445 current Vim version.
4446
4447 Also see |exists()| and |exists_compiled()|.
4448
4449 Note that to skip code that has a syntax error when the
4450 feature is not available, Vim may skip the rest of the line
4451 and miss a following `endif`. Therefore put the `endif` on a
4452 separate line: >
4453 if has('feature')
4454 let x = this->breaks->without->the->feature
4455 endif
4456< If the `endif` would be moved to the second line as "| endif" it
4457 would not be found.
4458
4459
4460has_key({dict}, {key}) *has_key()*
4461 The result is a Number, which is TRUE if |Dictionary| {dict}
Bram Moolenaare8008642022-08-19 17:15:35 +01004462 has an entry with key {key}. FALSE otherwise.
4463 The {key} argument is a string. In |Vim9| script a number is
4464 also accepted (and converted to a string) but no other types.
4465 In legacy script the usual automatic conversion to string is
4466 done.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004467
4468 Can also be used as a |method|: >
4469 mydict->has_key(key)
4470
4471haslocaldir([{winnr} [, {tabnr}]]) *haslocaldir()*
4472 The result is a Number:
4473 1 when the window has set a local directory via |:lcd|
4474 2 when the tab-page has set a local directory via |:tcd|
4475 0 otherwise.
4476
4477 Without arguments use the current window.
4478 With {winnr} use this window in the current tab page.
4479 With {winnr} and {tabnr} use the window in the specified tab
4480 page.
4481 {winnr} can be the window number or the |window-ID|.
4482 If {winnr} is -1 it is ignored and only the tabpage is used.
4483 Return 0 if the arguments are invalid.
4484 Examples: >
4485 if haslocaldir() == 1
4486 " window local directory case
4487 elseif haslocaldir() == 2
4488 " tab-local directory case
4489 else
4490 " global directory case
4491 endif
4492
4493 " current window
4494 :echo haslocaldir()
4495 :echo haslocaldir(0)
4496 :echo haslocaldir(0, 0)
4497 " window n in current tab page
4498 :echo haslocaldir(n)
4499 :echo haslocaldir(n, 0)
4500 " window n in tab page m
4501 :echo haslocaldir(n, m)
4502 " tab page m
4503 :echo haslocaldir(-1, m)
4504<
4505 Can also be used as a |method|: >
4506 GetWinnr()->haslocaldir()
4507
4508hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()*
4509 The result is a Number, which is TRUE if there is a mapping
4510 that contains {what} in somewhere in the rhs (what it is
4511 mapped to) and this mapping exists in one of the modes
4512 indicated by {mode}.
4513 The arguments {what} and {mode} are strings.
4514 When {abbr} is there and it is |TRUE| use abbreviations
4515 instead of mappings. Don't forget to specify Insert and/or
4516 Command-line mode.
4517 Both the global mappings and the mappings local to the current
4518 buffer are checked for a match.
4519 If no matching mapping is found FALSE is returned.
4520 The following characters are recognized in {mode}:
4521 n Normal mode
4522 v Visual and Select mode
4523 x Visual mode
4524 s Select mode
4525 o Operator-pending mode
4526 i Insert mode
4527 l Language-Argument ("r", "f", "t", etc.)
4528 c Command-line mode
4529 When {mode} is omitted, "nvo" is used.
4530
4531 This function is useful to check if a mapping already exists
4532 to a function in a Vim script. Example: >
4533 :if !hasmapto('\ABCdoit')
4534 : map <Leader>d \ABCdoit
4535 :endif
4536< This installs the mapping to "\ABCdoit" only if there isn't
4537 already a mapping to "\ABCdoit".
4538
4539 Can also be used as a |method|: >
4540 GetRHS()->hasmapto()
4541
4542histadd({history}, {item}) *histadd()*
4543 Add the String {item} to the history {history} which can be
4544 one of: *hist-names*
4545 "cmd" or ":" command line history
4546 "search" or "/" search pattern history
4547 "expr" or "=" typed expression history
4548 "input" or "@" input line history
4549 "debug" or ">" debug command history
4550 empty the current or last used history
4551 The {history} string does not need to be the whole name, one
4552 character is sufficient.
4553 If {item} does already exist in the history, it will be
4554 shifted to become the newest entry.
4555 The result is a Number: TRUE if the operation was successful,
4556 otherwise FALSE is returned.
4557
4558 Example: >
4559 :call histadd("input", strftime("%Y %b %d"))
4560 :let date=input("Enter date: ")
4561< This function is not available in the |sandbox|.
4562
4563 Can also be used as a |method|, the base is passed as the
4564 second argument: >
4565 GetHistory()->histadd('search')
4566
4567histdel({history} [, {item}]) *histdel()*
4568 Clear {history}, i.e. delete all its entries. See |hist-names|
4569 for the possible values of {history}.
4570
4571 If the parameter {item} evaluates to a String, it is used as a
4572 regular expression. All entries matching that expression will
4573 be removed from the history (if there are any).
4574 Upper/lowercase must match, unless "\c" is used |/\c|.
4575 If {item} evaluates to a Number, it will be interpreted as
4576 an index, see |:history-indexing|. The respective entry will
4577 be removed if it exists.
4578
4579 The result is TRUE for a successful operation, otherwise FALSE
4580 is returned.
4581
4582 Examples:
4583 Clear expression register history: >
4584 :call histdel("expr")
4585<
4586 Remove all entries starting with "*" from the search history: >
4587 :call histdel("/", '^\*')
4588<
4589 The following three are equivalent: >
4590 :call histdel("search", histnr("search"))
4591 :call histdel("search", -1)
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004592 :call histdel("search", '^' .. histget("search", -1) .. '$')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004593<
4594 To delete the last search pattern and use the last-but-one for
4595 the "n" command and 'hlsearch': >
4596 :call histdel("search", -1)
4597 :let @/ = histget("search", -1)
4598<
4599 Can also be used as a |method|: >
4600 GetHistory()->histdel()
4601
4602histget({history} [, {index}]) *histget()*
4603 The result is a String, the entry with Number {index} from
4604 {history}. See |hist-names| for the possible values of
4605 {history}, and |:history-indexing| for {index}. If there is
4606 no such entry, an empty String is returned. When {index} is
4607 omitted, the most recent item from the history is used.
4608
4609 Examples:
4610 Redo the second last search from history. >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004611 :execute '/' .. histget("search", -2)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004612
4613< Define an Ex command ":H {num}" that supports re-execution of
4614 the {num}th entry from the output of |:history|. >
4615 :command -nargs=1 H execute histget("cmd", 0+<args>)
4616<
4617 Can also be used as a |method|: >
4618 GetHistory()->histget()
4619
4620histnr({history}) *histnr()*
4621 The result is the Number of the current entry in {history}.
4622 See |hist-names| for the possible values of {history}.
4623 If an error occurred, -1 is returned.
4624
4625 Example: >
4626 :let inp_index = histnr("expr")
4627
4628< Can also be used as a |method|: >
4629 GetHistory()->histnr()
4630<
4631hlexists({name}) *hlexists()*
4632 The result is a Number, which is TRUE if a highlight group
4633 called {name} exists. This is when the group has been
4634 defined in some way. Not necessarily when highlighting has
4635 been defined for it, it may also have been used for a syntax
4636 item.
4637 *highlight_exists()*
4638 Obsolete name: highlight_exists().
4639
4640 Can also be used as a |method|: >
4641 GetName()->hlexists()
4642<
4643hlget([{name} [, {resolve}]]) *hlget()*
4644 Returns a List of all the highlight group attributes. If the
4645 optional {name} is specified, then returns a List with only
4646 the attributes of the specified highlight group. Returns an
4647 empty List if the highlight group {name} is not present.
4648
4649 If the optional {resolve} argument is set to v:true and the
4650 highlight group {name} is linked to another group, then the
4651 link is resolved recursively and the attributes of the
4652 resolved highlight group are returned.
4653
4654 Each entry in the returned List is a Dictionary with the
4655 following items:
4656 cleared boolean flag, set to v:true if the highlight
4657 group attributes are cleared or not yet
4658 specified. See |highlight-clear|.
4659 cterm cterm attributes. See |highlight-cterm|.
4660 ctermbg cterm background color.
4661 See |highlight-ctermbg|.
4662 ctermfg cterm foreground color.
4663 See |highlight-ctermfg|.
4664 ctermul cterm underline color. See |highlight-ctermul|.
4665 default boolean flag, set to v:true if the highlight
4666 group link is a default link. See
4667 |highlight-default|.
4668 font highlight group font. See |highlight-font|.
4669 gui gui attributes. See |highlight-gui|.
4670 guibg gui background color. See |highlight-guibg|.
4671 guifg gui foreground color. See |highlight-guifg|.
4672 guisp gui special color. See |highlight-guisp|.
4673 id highlight group ID.
4674 linksto linked highlight group name.
4675 See |:highlight-link|.
4676 name highlight group name. See |group-name|.
4677 start start terminal keycode. See |highlight-start|.
4678 stop stop terminal keycode. See |highlight-stop|.
4679 term term attributes. See |highlight-term|.
4680
4681 The 'term', 'cterm' and 'gui' items in the above Dictionary
4682 have a dictionary value with the following optional boolean
4683 items: 'bold', 'standout', 'underline', 'undercurl', 'italic',
4684 'reverse', 'inverse' and 'strikethrough'.
4685
4686 Example(s): >
4687 :echo hlget()
4688 :echo hlget('ModeMsg')
4689 :echo hlget('Number', v:true)
4690<
4691 Can also be used as a |method|: >
4692 GetName()->hlget()
4693<
4694hlset({list}) *hlset()*
4695 Creates or modifies the attributes of a List of highlight
4696 groups. Each item in {list} is a dictionary containing the
4697 attributes of a highlight group. See |hlget()| for the list of
4698 supported items in this dictionary.
4699
4700 In addition to the items described in |hlget()|, the following
4701 additional items are supported in the dictionary:
4702
4703 force boolean flag to force the creation of
4704 a link for an existing highlight group
4705 with attributes.
4706
4707 The highlight group is identified using the 'name' item and
4708 the 'id' item (if supplied) is ignored. If a highlight group
4709 with a specified name doesn't exist, then it is created.
4710 Otherwise the attributes of an existing highlight group are
4711 modified.
4712
4713 If an empty dictionary value is used for the 'term' or 'cterm'
4714 or 'gui' entries, then the corresponding attributes are
4715 cleared. If the 'cleared' item is set to v:true, then all the
4716 attributes of the highlight group are cleared.
4717
4718 The 'linksto' item can be used to link a highlight group to
4719 another highlight group. See |:highlight-link|.
4720
4721 Returns zero for success, -1 for failure.
4722
4723 Example(s): >
4724 " add bold attribute to the Visual highlight group
4725 :call hlset([#{name: 'Visual',
4726 \ term: #{reverse: 1 , bold: 1}}])
4727 :call hlset([#{name: 'Type', guifg: 'DarkGreen'}])
4728 :let l = hlget()
4729 :call hlset(l)
4730 " clear the Search highlight group
4731 :call hlset([#{name: 'Search', cleared: v:true}])
4732 " clear the 'term' attributes for a highlight group
4733 :call hlset([#{name: 'Title', term: {}}])
4734 " create the MyHlg group linking it to DiffAdd
4735 :call hlset([#{name: 'MyHlg', linksto: 'DiffAdd'}])
4736 " remove the MyHlg group link
4737 :call hlset([#{name: 'MyHlg', linksto: 'NONE'}])
4738 " clear the attributes and a link
4739 :call hlset([#{name: 'MyHlg', cleared: v:true,
4740 \ linksto: 'NONE'}])
4741<
4742 Can also be used as a |method|: >
4743 GetAttrList()->hlset()
4744<
4745 *hlID()*
4746hlID({name}) The result is a Number, which is the ID of the highlight group
4747 with name {name}. When the highlight group doesn't exist,
4748 zero is returned.
4749 This can be used to retrieve information about the highlight
4750 group. For example, to get the background color of the
4751 "Comment" group: >
4752 :echo synIDattr(synIDtrans(hlID("Comment")), "bg")
4753< *highlightID()*
4754 Obsolete name: highlightID().
4755
4756 Can also be used as a |method|: >
4757 GetName()->hlID()
4758
4759hostname() *hostname()*
4760 The result is a String, which is the name of the machine on
4761 which Vim is currently running. Machine names greater than
4762 256 characters long are truncated.
4763
4764iconv({string}, {from}, {to}) *iconv()*
4765 The result is a String, which is the text {string} converted
4766 from encoding {from} to encoding {to}.
4767 When the conversion completely fails an empty string is
4768 returned. When some characters could not be converted they
4769 are replaced with "?".
4770 The encoding names are whatever the iconv() library function
4771 can accept, see ":!man 3 iconv".
4772 Most conversions require Vim to be compiled with the |+iconv|
4773 feature. Otherwise only UTF-8 to latin1 conversion and back
4774 can be done.
4775 This can be used to display messages with special characters,
4776 no matter what 'encoding' is set to. Write the message in
4777 UTF-8 and use: >
4778 echo iconv(utf8_str, "utf-8", &enc)
4779< Note that Vim uses UTF-8 for all Unicode encodings, conversion
4780 from/to UCS-2 is automatically changed to use UTF-8. You
4781 cannot use UCS-2 in a string anyway, because of the NUL bytes.
4782
4783 Can also be used as a |method|: >
4784 GetText()->iconv('latin1', 'utf-8')
4785<
4786 *indent()*
4787indent({lnum}) The result is a Number, which is indent of line {lnum} in the
4788 current buffer. The indent is counted in spaces, the value
4789 of 'tabstop' is relevant. {lnum} is used just like in
4790 |getline()|.
4791 When {lnum} is invalid -1 is returned. In |Vim9| script an
4792 error is given.
4793
4794 Can also be used as a |method|: >
4795 GetLnum()->indent()
4796
4797index({object}, {expr} [, {start} [, {ic}]]) *index()*
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01004798 Find {expr} in {object} and return its index. See
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01004799 |indexof()| for using a lambda to select the item.
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01004800
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004801 If {object} is a |List| return the lowest index where the item
4802 has a value equal to {expr}. There is no automatic
4803 conversion, so the String "4" is different from the Number 4.
4804 And the number 4 is different from the Float 4.0. The value
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01004805 of 'ignorecase' is not used here, case matters as indicated by
4806 the {ic} argument.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004807
4808 If {object} is |Blob| return the lowest index where the byte
4809 value is equal to {expr}.
4810
4811 If {start} is given then start looking at the item with index
4812 {start} (may be negative for an item relative to the end).
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01004813
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004814 When {ic} is given and it is |TRUE|, ignore case. Otherwise
4815 case must match.
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01004816
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004817 -1 is returned when {expr} is not found in {object}.
4818 Example: >
4819 :let idx = index(words, "the")
4820 :if index(numbers, 123) >= 0
4821
4822< Can also be used as a |method|: >
4823 GetObject()->index(what)
4824
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01004825indexof({object}, {expr} [, {opts}]) *indexof()*
4826 Returns the index of an item in {object} where {expr} is
4827 v:true. {object} must be a |List| or a |Blob|.
4828
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01004829 If {object} is a |List|, evaluate {expr} for each item in the
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01004830 List until the expression is v:true and return the index of
4831 this item.
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01004832
4833 If {object} is a |Blob| evaluate {expr} for each byte in the
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01004834 Blob until the expression is v:true and return the index of
4835 this byte.
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01004836
4837 {expr} must be a |string| or |Funcref|.
4838
4839 If {expr} is a |string|: If {object} is a |List|, inside
4840 {expr} |v:key| has the index of the current List item and
4841 |v:val| has the value of the item. If {object} is a |Blob|,
4842 inside {expr} |v:key| has the index of the current byte and
4843 |v:val| has the byte value.
4844
4845 If {expr} is a |Funcref| it must take two arguments:
4846 1. the key or the index of the current item.
4847 2. the value of the current item.
4848 The function must return |TRUE| if the item is found and the
4849 search should stop.
4850
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01004851 The optional argument {opts} is a Dict and supports the
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01004852 following items:
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01004853 startidx start evaluating {expr} at the item with this
4854 index; may be negative for an item relative to
4855 the end
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01004856 Returns -1 when {expr} evaluates to v:false for all the items.
4857 Example: >
Yegappan Lakshmanan3fbf6cd2022-08-13 21:35:13 +01004858 :let l = [#{n: 10}, #{n: 20}, #{n: 30}]
4859 :echo indexof(l, "v:val.n == 20")
4860 :echo indexof(l, {i, v -> v.n == 30})
4861 :echo indexof(l, "v:val.n == 20", #{startidx: 1})
Yegappan Lakshmananb2186552022-08-13 13:09:20 +01004862
4863< Can also be used as a |method|: >
4864 mylist->indexof(expr)
4865
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004866input({prompt} [, {text} [, {completion}]]) *input()*
4867 The result is a String, which is whatever the user typed on
4868 the command-line. The {prompt} argument is either a prompt
4869 string, or a blank string (for no prompt). A '\n' can be used
4870 in the prompt to start a new line.
4871 The highlighting set with |:echohl| is used for the prompt.
4872 The input is entered just like a command-line, with the same
4873 editing commands and mappings. There is a separate history
4874 for lines typed for input().
4875 Example: >
4876 :if input("Coffee or beer? ") == "beer"
4877 : echo "Cheers!"
4878 :endif
4879<
4880 If the optional {text} argument is present and not empty, this
4881 is used for the default reply, as if the user typed this.
4882 Example: >
4883 :let color = input("Color? ", "white")
4884
4885< The optional {completion} argument specifies the type of
4886 completion supported for the input. Without it completion is
4887 not performed. The supported completion types are the same as
4888 that can be supplied to a user-defined command using the
4889 "-complete=" argument. Refer to |:command-completion| for
4890 more information. Example: >
4891 let fname = input("File: ", "", "file")
4892<
4893 NOTE: This function must not be used in a startup file, for
4894 the versions that only run in GUI mode (e.g., the Win32 GUI).
4895 Note: When input() is called from within a mapping it will
4896 consume remaining characters from that mapping, because a
4897 mapping is handled like the characters were typed.
4898 Use |inputsave()| before input() and |inputrestore()|
4899 after input() to avoid that. Another solution is to avoid
4900 that further characters follow in the mapping, e.g., by using
4901 |:execute| or |:normal|.
4902
4903 Example with a mapping: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00004904 :nmap \x :call GetFoo()<CR>:exe "/" .. Foo<CR>
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00004905 :function GetFoo()
4906 : call inputsave()
4907 : let g:Foo = input("enter search pattern: ")
4908 : call inputrestore()
4909 :endfunction
4910
4911< Can also be used as a |method|: >
4912 GetPrompt()->input()
4913
4914inputdialog({prompt} [, {text} [, {cancelreturn}]]) *inputdialog()*
4915 Like |input()|, but when the GUI is running and text dialogs
4916 are supported, a dialog window pops up to input the text.
4917 Example: >
4918 :let n = inputdialog("value for shiftwidth", shiftwidth())
4919 :if n != ""
4920 : let &sw = n
4921 :endif
4922< When the dialog is cancelled {cancelreturn} is returned. When
4923 omitted an empty string is returned.
4924 Hitting <Enter> works like pressing the OK button. Hitting
4925 <Esc> works like pressing the Cancel button.
4926 NOTE: Command-line completion is not supported.
4927
4928 Can also be used as a |method|: >
4929 GetPrompt()->inputdialog()
4930
4931inputlist({textlist}) *inputlist()*
4932 {textlist} must be a |List| of strings. This |List| is
4933 displayed, one string per line. The user will be prompted to
4934 enter a number, which is returned.
4935 The user can also select an item by clicking on it with the
4936 mouse, if the mouse is enabled in the command line ('mouse' is
4937 "a" or includes "c"). For the first string 0 is returned.
4938 When clicking above the first item a negative number is
4939 returned. When clicking on the prompt one more than the
4940 length of {textlist} is returned.
4941 Make sure {textlist} has less than 'lines' entries, otherwise
4942 it won't work. It's a good idea to put the entry number at
4943 the start of the string. And put a prompt in the first item.
4944 Example: >
4945 let color = inputlist(['Select color:', '1. red',
4946 \ '2. green', '3. blue'])
4947
4948< Can also be used as a |method|: >
4949 GetChoices()->inputlist()
4950
4951inputrestore() *inputrestore()*
4952 Restore typeahead that was saved with a previous |inputsave()|.
4953 Should be called the same number of times inputsave() is
4954 called. Calling it more often is harmless though.
4955 Returns TRUE when there is nothing to restore, FALSE otherwise.
4956
4957inputsave() *inputsave()*
4958 Preserve typeahead (also from mappings) and clear it, so that
4959 a following prompt gets input from the user. Should be
4960 followed by a matching inputrestore() after the prompt. Can
4961 be used several times, in which case there must be just as
4962 many inputrestore() calls.
4963 Returns TRUE when out of memory, FALSE otherwise.
4964
4965inputsecret({prompt} [, {text}]) *inputsecret()*
4966 This function acts much like the |input()| function with but
4967 two exceptions:
4968 a) the user's response will be displayed as a sequence of
4969 asterisks ("*") thereby keeping the entry secret, and
4970 b) the user's response will not be recorded on the input
4971 |history| stack.
4972 The result is a String, which is whatever the user actually
4973 typed on the command-line in response to the issued prompt.
4974 NOTE: Command-line completion is not supported.
4975
4976 Can also be used as a |method|: >
4977 GetPrompt()->inputsecret()
4978
4979insert({object}, {item} [, {idx}]) *insert()*
4980 When {object} is a |List| or a |Blob| insert {item} at the start
4981 of it.
4982
4983 If {idx} is specified insert {item} before the item with index
4984 {idx}. If {idx} is zero it goes before the first item, just
4985 like omitting {idx}. A negative {idx} is also possible, see
4986 |list-index|. -1 inserts just before the last item.
4987
4988 Returns the resulting |List| or |Blob|. Examples: >
4989 :let mylist = insert([2, 3, 5], 1)
4990 :call insert(mylist, 4, -1)
4991 :call insert(mylist, 6, len(mylist))
4992< The last example can be done simpler with |add()|.
4993 Note that when {item} is a |List| it is inserted as a single
4994 item. Use |extend()| to concatenate |Lists|.
4995
4996 Can also be used as a |method|: >
4997 mylist->insert(item)
4998
4999interrupt() *interrupt()*
5000 Interrupt script execution. It works more or less like the
5001 user typing CTRL-C, most commands won't execute and control
5002 returns to the user. This is useful to abort execution
5003 from lower down, e.g. in an autocommand. Example: >
5004 :function s:check_typoname(file)
5005 : if fnamemodify(a:file, ':t') == '['
5006 : echomsg 'Maybe typo'
5007 : call interrupt()
5008 : endif
5009 :endfunction
5010 :au BufWritePre * call s:check_typoname(expand('<amatch>'))
5011
5012invert({expr}) *invert()*
5013 Bitwise invert. The argument is converted to a number. A
5014 List, Dict or Float argument causes an error. Example: >
5015 :let bits = invert(bits)
5016< Can also be used as a |method|: >
5017 :let bits = bits->invert()
5018
Bram Moolenaar8a3b8052022-06-26 12:21:15 +01005019isabsolutepath({path}) *isabsolutepath()*
LemonBoydca1d402022-04-28 15:26:33 +01005020 The result is a Number, which is |TRUE| when {path} is an
5021 absolute path.
Bram Moolenaar8a3b8052022-06-26 12:21:15 +01005022 On Unix, a path is considered absolute when it starts with '/'.
LemonBoydca1d402022-04-28 15:26:33 +01005023 On MS-Windows, it is considered absolute when it starts with an
5024 optional drive prefix and is followed by a '\' or '/'. UNC paths
5025 are always absolute.
5026 Example: >
5027 echo isabsolutepath('/usr/share/') " 1
5028 echo isabsolutepath('./foobar') " 0
5029 echo isabsolutepath('C:\Windows') " 1
5030 echo isabsolutepath('foobar') " 0
5031 echo isabsolutepath('\\remote\file') " 1
Bram Moolenaar8a3b8052022-06-26 12:21:15 +01005032<
LemonBoydca1d402022-04-28 15:26:33 +01005033 Can also be used as a |method|: >
5034 GetName()->isabsolutepath()
5035
5036
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005037isdirectory({directory}) *isdirectory()*
5038 The result is a Number, which is |TRUE| when a directory
5039 with the name {directory} exists. If {directory} doesn't
5040 exist, or isn't a directory, the result is |FALSE|. {directory}
5041 is any expression, which is used as a String.
5042
5043 Can also be used as a |method|: >
5044 GetName()->isdirectory()
5045
5046isinf({expr}) *isinf()*
5047 Return 1 if {expr} is a positive infinity, or -1 a negative
5048 infinity, otherwise 0. >
5049 :echo isinf(1.0 / 0.0)
5050< 1 >
5051 :echo isinf(-1.0 / 0.0)
5052< -1
5053
5054 Can also be used as a |method|: >
5055 Compute()->isinf()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005056
5057islocked({expr}) *islocked()* *E786*
5058 The result is a Number, which is |TRUE| when {expr} is the
5059 name of a locked variable.
5060 The string argument {expr} must be the name of a variable,
5061 |List| item or |Dictionary| entry, not the variable itself!
5062 Example: >
5063 :let alist = [0, ['a', 'b'], 2, 3]
5064 :lockvar 1 alist
5065 :echo islocked('alist') " 1
5066 :echo islocked('alist[1]') " 0
5067
Bram Moolenaar9da17d72022-02-09 21:50:44 +00005068< When {expr} is a variable that does not exist -1 is returned.
5069 If {expr} uses a range, list or dict index that is out of
5070 range or does not exist you get an error message. Use
5071 |exists()| to check for existence.
5072 In Vim9 script it does not work for local function variables.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005073
5074 Can also be used as a |method|: >
5075 GetName()->islocked()
5076
5077isnan({expr}) *isnan()*
5078 Return |TRUE| if {expr} is a float with value NaN. >
5079 echo isnan(0.0 / 0.0)
5080< 1
5081
5082 Can also be used as a |method|: >
5083 Compute()->isnan()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005084
5085items({dict}) *items()*
5086 Return a |List| with all the key-value pairs of {dict}. Each
5087 |List| item is a list with two items: the key of a {dict}
5088 entry and the value of this entry. The |List| is in arbitrary
5089 order. Also see |keys()| and |values()|.
5090 Example: >
5091 for [key, value] in items(mydict)
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005092 echo key .. ': ' .. value
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005093 endfor
5094
5095< Can also be used as a |method|: >
5096 mydict->items()
5097
5098job_ functions are documented here: |job-functions-details|
5099
5100
5101join({list} [, {sep}]) *join()*
5102 Join the items in {list} together into one String.
5103 When {sep} is specified it is put in between the items. If
5104 {sep} is omitted a single space is used.
5105 Note that {sep} is not added at the end. You might want to
5106 add it there too: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005107 let lines = join(mylist, "\n") .. "\n"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005108< String items are used as-is. |Lists| and |Dictionaries| are
5109 converted into a string like with |string()|.
5110 The opposite function is |split()|.
5111
5112 Can also be used as a |method|: >
5113 mylist->join()
5114
5115js_decode({string}) *js_decode()*
5116 This is similar to |json_decode()| with these differences:
5117 - Object key names do not have to be in quotes.
5118 - Strings can be in single quotes.
5119 - Empty items in an array (between two commas) are allowed and
5120 result in v:none items.
5121
5122 Can also be used as a |method|: >
5123 ReadObject()->js_decode()
5124
5125js_encode({expr}) *js_encode()*
5126 This is similar to |json_encode()| with these differences:
5127 - Object key names are not in quotes.
5128 - v:none items in an array result in an empty item between
5129 commas.
5130 For example, the Vim object:
5131 [1,v:none,{"one":1},v:none] ~
5132 Will be encoded as:
5133 [1,,{one:1},,] ~
5134 While json_encode() would produce:
5135 [1,null,{"one":1},null] ~
5136 This encoding is valid for JavaScript. It is more efficient
5137 than JSON, especially when using an array with optional items.
5138
5139 Can also be used as a |method|: >
5140 GetObject()->js_encode()
5141
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00005142json_decode({string}) *json_decode()* *E491*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005143 This parses a JSON formatted string and returns the equivalent
5144 in Vim values. See |json_encode()| for the relation between
5145 JSON and Vim values.
5146 The decoding is permissive:
5147 - A trailing comma in an array and object is ignored, e.g.
5148 "[1, 2, ]" is the same as "[1, 2]".
5149 - Integer keys are accepted in objects, e.g. {1:2} is the
5150 same as {"1":2}.
5151 - More floating point numbers are recognized, e.g. "1." for
5152 "1.0", or "001.2" for "1.2". Special floating point values
5153 "Infinity", "-Infinity" and "NaN" (capitalization ignored)
5154 are accepted.
5155 - Leading zeroes in integer numbers are ignored, e.g. "012"
5156 for "12" or "-012" for "-12".
5157 - Capitalization is ignored in literal names null, true or
5158 false, e.g. "NULL" for "null", "True" for "true".
5159 - Control characters U+0000 through U+001F which are not
5160 escaped in strings are accepted, e.g. " " (tab
5161 character in string) for "\t".
5162 - An empty JSON expression or made of only spaces is accepted
5163 and results in v:none.
5164 - Backslash in an invalid 2-character sequence escape is
5165 ignored, e.g. "\a" is decoded as "a".
5166 - A correct surrogate pair in JSON strings should normally be
5167 a 12 character sequence such as "\uD834\uDD1E", but
5168 json_decode() silently accepts truncated surrogate pairs
5169 such as "\uD834" or "\uD834\u"
5170 *E938*
5171 A duplicate key in an object, valid in rfc7159, is not
5172 accepted by json_decode() as the result must be a valid Vim
5173 type, e.g. this fails: {"a":"b", "a":"c"}
5174
5175 Can also be used as a |method|: >
5176 ReadObject()->json_decode()
5177
5178json_encode({expr}) *json_encode()*
5179 Encode {expr} as JSON and return this as a string.
5180 The encoding is specified in:
5181 https://tools.ietf.org/html/rfc7159.html
Bram Moolenaara2baa732022-02-04 16:09:54 +00005182 Vim values are converted as follows: *E1161*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005183 |Number| decimal number
5184 |Float| floating point number
5185 Float nan "NaN"
5186 Float inf "Infinity"
5187 Float -inf "-Infinity"
5188 |String| in double quotes (possibly null)
5189 |Funcref| not possible, error
5190 |List| as an array (possibly null); when
5191 used recursively: []
5192 |Dict| as an object (possibly null); when
5193 used recursively: {}
5194 |Blob| as an array of the individual bytes
5195 v:false "false"
5196 v:true "true"
5197 v:none "null"
5198 v:null "null"
5199 Note that NaN and Infinity are passed on as values. This is
5200 missing in the JSON standard, but several implementations do
5201 allow it. If not then you will get an error.
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01005202 If a string contains an illegal character then the replacement
5203 character 0xfffd is used.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005204
5205 Can also be used as a |method|: >
5206 GetObject()->json_encode()
5207
5208keys({dict}) *keys()*
5209 Return a |List| with all the keys of {dict}. The |List| is in
5210 arbitrary order. Also see |items()| and |values()|.
5211
5212 Can also be used as a |method|: >
5213 mydict->keys()
5214
zeertzjqcdc83932022-09-12 13:38:41 +01005215keytrans({string}) *keytrans()*
5216 Turn the internal byte representation of keys into a form that
5217 can be used for |:map|. E.g. >
5218 :let xx = "\<C-Home>"
5219 :echo keytrans(xx)
5220< <C-Home>
5221
5222 Can also be used as a |method|: >
5223 "\<C-Home>"->keytrans()
5224
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005225< *len()* *E701*
5226len({expr}) The result is a Number, which is the length of the argument.
5227 When {expr} is a String or a Number the length in bytes is
5228 used, as with |strlen()|.
5229 When {expr} is a |List| the number of items in the |List| is
5230 returned.
5231 When {expr} is a |Blob| the number of bytes is returned.
5232 When {expr} is a |Dictionary| the number of entries in the
5233 |Dictionary| is returned.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01005234 Otherwise an error is given and returns zero.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005235
5236 Can also be used as a |method|: >
5237 mylist->len()
5238
5239< *libcall()* *E364* *E368*
5240libcall({libname}, {funcname}, {argument})
5241 Call function {funcname} in the run-time library {libname}
5242 with single argument {argument}.
5243 This is useful to call functions in a library that you
5244 especially made to be used with Vim. Since only one argument
5245 is possible, calling standard library functions is rather
5246 limited.
5247 The result is the String returned by the function. If the
5248 function returns NULL, this will appear as an empty string ""
5249 to Vim.
5250 If the function returns a number, use libcallnr()!
5251 If {argument} is a number, it is passed to the function as an
5252 int; if {argument} is a string, it is passed as a
5253 null-terminated string.
5254 This function will fail in |restricted-mode|.
5255
5256 libcall() allows you to write your own 'plug-in' extensions to
5257 Vim without having to recompile the program. It is NOT a
5258 means to call system functions! If you try to do so Vim will
5259 very probably crash.
5260
5261 For Win32, the functions you write must be placed in a DLL
5262 and use the normal C calling convention (NOT Pascal which is
5263 used in Windows System DLLs). The function must take exactly
5264 one parameter, either a character pointer or a long integer,
5265 and must return a character pointer or NULL. The character
5266 pointer returned must point to memory that will remain valid
5267 after the function has returned (e.g. in static data in the
5268 DLL). If it points to allocated memory, that memory will
5269 leak away. Using a static buffer in the function should work,
5270 it's then freed when the DLL is unloaded.
5271
5272 WARNING: If the function returns a non-valid pointer, Vim may
5273 crash! This also happens if the function returns a number,
5274 because Vim thinks it's a pointer.
5275 For Win32 systems, {libname} should be the filename of the DLL
5276 without the ".DLL" suffix. A full path is only required if
5277 the DLL is not in the usual places.
5278 For Unix: When compiling your own plugins, remember that the
5279 object code must be compiled as position-independent ('PIC').
5280 {only in Win32 and some Unix versions, when the |+libcall|
5281 feature is present}
5282 Examples: >
5283 :echo libcall("libc.so", "getenv", "HOME")
5284
5285< Can also be used as a |method|, the base is passed as the
5286 third argument: >
5287 GetValue()->libcall("libc.so", "getenv")
5288<
5289 *libcallnr()*
5290libcallnr({libname}, {funcname}, {argument})
5291 Just like |libcall()|, but used for a function that returns an
5292 int instead of a string.
5293 {only in Win32 on some Unix versions, when the |+libcall|
5294 feature is present}
5295 Examples: >
5296 :echo libcallnr("/usr/lib/libc.so", "getpid", "")
5297 :call libcallnr("libc.so", "printf", "Hello World!\n")
5298 :call libcallnr("libc.so", "sleep", 10)
5299<
5300 Can also be used as a |method|, the base is passed as the
5301 third argument: >
5302 GetValue()->libcallnr("libc.so", "printf")
5303<
5304
5305line({expr} [, {winid}]) *line()*
5306 The result is a Number, which is the line number of the file
5307 position given with {expr}. The {expr} argument is a string.
Bram Moolenaara2baa732022-02-04 16:09:54 +00005308 The accepted positions are: *E1209*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005309 . the cursor position
5310 $ the last line in the current buffer
5311 'x position of mark x (if the mark is not set, 0 is
5312 returned)
5313 w0 first line visible in current window (one if the
5314 display isn't updated, e.g. in silent Ex mode)
5315 w$ last line visible in current window (this is one
5316 less than "w0" if no lines are visible)
5317 v In Visual mode: the start of the Visual area (the
5318 cursor is the end). When not in Visual mode
5319 returns the cursor position. Differs from |'<| in
5320 that it's updated right away.
5321 Note that a mark in another file can be used. The line number
5322 then applies to another buffer.
5323 To get the column number use |col()|. To get both use
5324 |getpos()|.
5325 With the optional {winid} argument the values are obtained for
5326 that window instead of the current window.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01005327 Returns 0 for invalid values of {expr} and {winid}.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005328 Examples: >
5329 line(".") line number of the cursor
5330 line(".", winid) idem, in window "winid"
5331 line("'t") line number of mark t
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005332 line("'" .. marker) line number of mark marker
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005333<
5334 To jump to the last known position when opening a file see
5335 |last-position-jump|.
5336
5337 Can also be used as a |method|: >
5338 GetValue()->line()
5339
5340line2byte({lnum}) *line2byte()*
5341 Return the byte count from the start of the buffer for line
5342 {lnum}. This includes the end-of-line character, depending on
5343 the 'fileformat' option for the current buffer. The first
5344 line returns 1. 'encoding' matters, 'fileencoding' is ignored.
5345 This can also be used to get the byte count for the line just
5346 below the last line: >
5347 line2byte(line("$") + 1)
5348< This is the buffer size plus one. If 'fileencoding' is empty
5349 it is the file size plus one. {lnum} is used like with
5350 |getline()|. When {lnum} is invalid, or the |+byte_offset|
5351 feature has been disabled at compile time, -1 is returned.
5352 Also see |byte2line()|, |go| and |:goto|.
5353
5354 Can also be used as a |method|: >
5355 GetLnum()->line2byte()
5356
5357lispindent({lnum}) *lispindent()*
5358 Get the amount of indent for line {lnum} according the lisp
5359 indenting rules, as with 'lisp'.
5360 The indent is counted in spaces, the value of 'tabstop' is
5361 relevant. {lnum} is used just like in |getline()|.
Bram Moolenaar8e145b82022-05-21 20:17:31 +01005362 When {lnum} is invalid -1 is returned. In |Vim9| script an
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005363 error is given.
5364
5365 Can also be used as a |method|: >
5366 GetLnum()->lispindent()
5367
5368list2blob({list}) *list2blob()*
5369 Return a Blob concatenating all the number values in {list}.
5370 Examples: >
5371 list2blob([1, 2, 3, 4]) returns 0z01020304
5372 list2blob([]) returns 0z
5373< Returns an empty Blob on error. If one of the numbers is
5374 negative or more than 255 error *E1239* is given.
5375
5376 |blob2list()| does the opposite.
5377
5378 Can also be used as a |method|: >
5379 GetList()->list2blob()
5380
5381list2str({list} [, {utf8}]) *list2str()*
5382 Convert each number in {list} to a character string can
5383 concatenate them all. Examples: >
5384 list2str([32]) returns " "
5385 list2str([65, 66, 67]) returns "ABC"
5386< The same can be done (slowly) with: >
5387 join(map(list, {nr, val -> nr2char(val)}), '')
5388< |str2list()| does the opposite.
5389
5390 When {utf8} is omitted or zero, the current 'encoding' is used.
5391 When {utf8} is TRUE, always return UTF-8 characters.
5392 With UTF-8 composing characters work as expected: >
5393 list2str([97, 769]) returns "á"
5394<
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01005395 Returns an empty string on error.
5396
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005397 Can also be used as a |method|: >
5398 GetList()->list2str()
5399
5400listener_add({callback} [, {buf}]) *listener_add()*
5401 Add a callback function that will be invoked when changes have
5402 been made to buffer {buf}.
5403 {buf} refers to a buffer name or number. For the accepted
5404 values, see |bufname()|. When {buf} is omitted the current
5405 buffer is used.
5406 Returns a unique ID that can be passed to |listener_remove()|.
5407
5408 The {callback} is invoked with five arguments:
Bram Moolenaar944697a2022-02-20 19:48:20 +00005409 bufnr the buffer that was changed
5410 start first changed line number
5411 end first line number below the change
5412 added number of lines added, negative if lines were
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005413 deleted
Bram Moolenaar944697a2022-02-20 19:48:20 +00005414 changes a List of items with details about the changes
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005415
5416 Example: >
5417 func Listener(bufnr, start, end, added, changes)
5418 echo 'lines ' .. a:start .. ' until ' .. a:end .. ' changed'
5419 endfunc
5420 call listener_add('Listener', bufnr)
5421
Bram Moolenaar944697a2022-02-20 19:48:20 +00005422< The List cannot be changed. Each item in "changes" is a
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005423 dictionary with these entries:
5424 lnum the first line number of the change
5425 end the first line below the change
5426 added number of lines added; negative if lines were
5427 deleted
5428 col first column in "lnum" that was affected by
5429 the change; one if unknown or the whole line
5430 was affected; this is a byte index, first
5431 character has a value of one.
Bram Moolenaar3c053a12022-10-16 13:11:12 +01005432 When lines are inserted (not when a line is split, e.g. by
5433 typing CR in Insert mode) the values are:
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005434 lnum line above which the new line is added
5435 end equal to "lnum"
5436 added number of lines inserted
5437 col 1
5438 When lines are deleted the values are:
5439 lnum the first deleted line
5440 end the line below the first deleted line, before
5441 the deletion was done
5442 added negative, number of lines deleted
5443 col 1
5444 When lines are changed:
5445 lnum the first changed line
5446 end the line below the last changed line
5447 added 0
5448 col first column with a change or 1
5449
5450 The entries are in the order the changes were made, thus the
5451 most recent change is at the end. The line numbers are valid
5452 when the callback is invoked, but later changes may make them
5453 invalid, thus keeping a copy for later might not work.
5454
5455 The {callback} is invoked just before the screen is updated,
5456 when |listener_flush()| is called or when a change is being
5457 made that changes the line count in a way it causes a line
5458 number in the list of changes to become invalid.
5459
5460 The {callback} is invoked with the text locked, see
5461 |textlock|. If you do need to make changes to the buffer, use
5462 a timer to do this later |timer_start()|.
5463
5464 The {callback} is not invoked when the buffer is first loaded.
5465 Use the |BufReadPost| autocmd event to handle the initial text
5466 of a buffer.
5467 The {callback} is also not invoked when the buffer is
5468 unloaded, use the |BufUnload| autocmd event for that.
5469
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01005470 Returns zero if {callback} or {buf} is invalid.
5471
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005472 Can also be used as a |method|, the base is passed as the
5473 second argument: >
5474 GetBuffer()->listener_add(callback)
5475
5476listener_flush([{buf}]) *listener_flush()*
5477 Invoke listener callbacks for buffer {buf}. If there are no
5478 pending changes then no callbacks are invoked.
5479
5480 {buf} refers to a buffer name or number. For the accepted
5481 values, see |bufname()|. When {buf} is omitted the current
5482 buffer is used.
5483
5484 Can also be used as a |method|: >
5485 GetBuffer()->listener_flush()
5486
5487listener_remove({id}) *listener_remove()*
5488 Remove a listener previously added with listener_add().
5489 Returns FALSE when {id} could not be found, TRUE when {id} was
5490 removed.
5491
5492 Can also be used as a |method|: >
5493 GetListenerId()->listener_remove()
5494
5495localtime() *localtime()*
5496 Return the current time, measured as seconds since 1st Jan
5497 1970. See also |strftime()|, |strptime()| and |getftime()|.
5498
5499
5500log({expr}) *log()*
5501 Return the natural logarithm (base e) of {expr} as a |Float|.
5502 {expr} must evaluate to a |Float| or a |Number| in the range
5503 (0, inf].
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01005504 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005505 Examples: >
5506 :echo log(10)
5507< 2.302585 >
5508 :echo log(exp(5))
5509< 5.0
5510
5511 Can also be used as a |method|: >
5512 Compute()->log()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005513
5514
5515log10({expr}) *log10()*
5516 Return the logarithm of Float {expr} to base 10 as a |Float|.
5517 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01005518 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005519 Examples: >
5520 :echo log10(1000)
5521< 3.0 >
5522 :echo log10(0.01)
5523< -2.0
5524
5525 Can also be used as a |method|: >
5526 Compute()->log10()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005527
5528luaeval({expr} [, {expr}]) *luaeval()*
5529 Evaluate Lua expression {expr} and return its result converted
5530 to Vim data structures. Second {expr} may hold additional
5531 argument accessible as _A inside first {expr}.
5532 Strings are returned as they are.
5533 Boolean objects are converted to numbers.
Bram Moolenaar73e28dc2022-09-17 21:08:33 +01005534 Numbers are converted to |Float| values.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005535 Dictionaries and lists obtained by vim.eval() are returned
5536 as-is.
5537 Other objects are returned as zero without any errors.
5538 See |lua-luaeval| for more details.
5539 Note that in a `:def` function local variables are not visible
5540 to {expr}.
5541
5542 Can also be used as a |method|: >
5543 GetExpr()->luaeval()
5544
5545< {only available when compiled with the |+lua| feature}
5546
5547map({expr1}, {expr2}) *map()*
5548 {expr1} must be a |List|, |String|, |Blob| or |Dictionary|.
Bram Moolenaar944697a2022-02-20 19:48:20 +00005549 When {expr1} is a |List| or |Dictionary|, replace each
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005550 item in {expr1} with the result of evaluating {expr2}.
5551 For a |Blob| each byte is replaced.
5552 For a |String|, each character, including composing
5553 characters, is replaced.
5554 If the item type changes you may want to use |mapnew()| to
5555 create a new List or Dictionary. This is required when using
5556 Vim9 script.
5557
5558 {expr2} must be a |String| or |Funcref|.
5559
5560 If {expr2} is a |String|, inside {expr2} |v:val| has the value
5561 of the current item. For a |Dictionary| |v:key| has the key
5562 of the current item and for a |List| |v:key| has the index of
5563 the current item. For a |Blob| |v:key| has the index of the
5564 current byte. For a |String| |v:key| has the index of the
5565 current character.
5566 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005567 :call map(mylist, '"> " .. v:val .. " <"')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005568< This puts "> " before and " <" after each item in "mylist".
5569
5570 Note that {expr2} is the result of an expression and is then
5571 used as an expression again. Often it is good to use a
5572 |literal-string| to avoid having to double backslashes. You
5573 still have to double ' quotes
5574
5575 If {expr2} is a |Funcref| it is called with two arguments:
5576 1. The key or the index of the current item.
5577 2. the value of the current item.
Bram Moolenaarb59ae592022-11-23 23:46:31 +00005578 With a legacy script lambda you don't get an error if it only
5579 accepts one argument, but with a Vim9 lambda you get "E1106:
5580 One argument too many", the number of arguments must match.
5581
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005582 The function must return the new value of the item. Example
5583 that changes each value by "key-value": >
5584 func KeyValue(key, val)
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005585 return a:key .. '-' .. a:val
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005586 endfunc
5587 call map(myDict, function('KeyValue'))
5588< It is shorter when using a |lambda|: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005589 call map(myDict, {key, val -> key .. '-' .. val})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005590< If you do not use "val" you can leave it out: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005591 call map(myDict, {key -> 'item: ' .. key})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005592< If you do not use "key" you can use a short name: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005593 call map(myDict, {_, val -> 'item: ' .. val})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005594<
5595 The operation is done in-place for a |List| and |Dictionary|.
5596 If you want it to remain unmodified make a copy first: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005597 :let tlist = map(copy(mylist), ' v:val .. "\t"')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005598
5599< Returns {expr1}, the |List| or |Dictionary| that was filtered,
5600 or a new |Blob| or |String|.
5601 When an error is encountered while evaluating {expr2} no
5602 further items in {expr1} are processed.
5603 When {expr2} is a Funcref errors inside a function are ignored,
5604 unless it was defined with the "abort" flag.
5605
5606 Can also be used as a |method|: >
5607 mylist->map(expr2)
5608
5609
5610maparg({name} [, {mode} [, {abbr} [, {dict}]]]) *maparg()*
5611 When {dict} is omitted or zero: Return the rhs of mapping
5612 {name} in mode {mode}. The returned String has special
5613 characters translated like in the output of the ":map" command
Ernie Rael09661202022-04-25 14:40:44 +01005614 listing. When {dict} is TRUE a dictionary is returned, see
5615 below. To get a list of all mappings see |maplist()|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005616
5617 When there is no mapping for {name}, an empty String is
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01005618 returned if {dict} is FALSE, otherwise returns an empty Dict.
5619 When the mapping for {name} is empty, then "<Nop>" is
5620 returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005621
5622 The {name} can have special key names, like in the ":map"
5623 command.
5624
5625 {mode} can be one of these strings:
5626 "n" Normal
5627 "v" Visual (including Select)
5628 "o" Operator-pending
5629 "i" Insert
5630 "c" Cmd-line
5631 "s" Select
5632 "x" Visual
5633 "l" langmap |language-mapping|
5634 "t" Terminal-Job
5635 "" Normal, Visual and Operator-pending
5636 When {mode} is omitted, the modes for "" are used.
5637
5638 When {abbr} is there and it is |TRUE| use abbreviations
5639 instead of mappings.
5640
5641 When {dict} is there and it is |TRUE| return a dictionary
5642 containing all the information of the mapping with the
Ernie Rael659c2402022-04-24 18:40:28 +01005643 following items: *mapping-dict*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005644 "lhs" The {lhs} of the mapping as it would be typed
5645 "lhsraw" The {lhs} of the mapping as raw bytes
5646 "lhsrawalt" The {lhs} of the mapping as raw bytes, alternate
5647 form, only present when it differs from "lhsraw"
5648 "rhs" The {rhs} of the mapping as typed.
5649 "silent" 1 for a |:map-silent| mapping, else 0.
5650 "noremap" 1 if the {rhs} of the mapping is not remappable.
5651 "script" 1 if mapping was defined with <script>.
5652 "expr" 1 for an expression mapping (|:map-<expr>|).
5653 "buffer" 1 for a buffer local mapping (|:map-local|).
5654 "mode" Modes for which the mapping is defined. In
5655 addition to the modes mentioned above, these
5656 characters will be used:
5657 " " Normal, Visual and Operator-pending
5658 "!" Insert and Commandline mode
5659 (|mapmode-ic|)
5660 "sid" The script local ID, used for <sid> mappings
5661 (|<SID>|).
Bram Moolenaara9528b32022-01-18 20:51:35 +00005662 "scriptversion" The version of the script. 999999 for
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01005663 |Vim9| script.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005664 "lnum" The line number in "sid", zero if unknown.
5665 "nowait" Do not wait for other, longer mappings.
5666 (|:map-<nowait>|).
Bram Moolenaar921bde82022-05-09 19:50:35 +01005667 "abbr" True if this is an abbreviation |abbreviations|.
Ernie Raeld8f5f762022-05-10 17:50:39 +01005668 "mode_bits" Vim's internal binary representation of "mode".
5669 |mapset()| ignores this; only "mode" is used.
5670 See |maplist()| for usage examples. The values
5671 are from src/vim.h and may change in the future.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005672
5673 The dictionary can be used to restore a mapping with
5674 |mapset()|.
5675
5676 The mappings local to the current buffer are checked first,
5677 then the global mappings.
5678 This function can be used to map a key even when it's already
5679 mapped, and have it do the original mapping too. Sketch: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00005680 exe 'nnoremap <Tab> ==' .. maparg('<Tab>', 'n')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005681
5682< Can also be used as a |method|: >
5683 GetKey()->maparg('n')
5684
5685mapcheck({name} [, {mode} [, {abbr}]]) *mapcheck()*
5686 Check if there is a mapping that matches with {name} in mode
5687 {mode}. See |maparg()| for {mode} and special names in
5688 {name}.
5689 When {abbr} is there and it is |TRUE| use abbreviations
5690 instead of mappings.
5691 A match happens with a mapping that starts with {name} and
5692 with a mapping which is equal to the start of {name}.
5693
5694 matches mapping "a" "ab" "abc" ~
5695 mapcheck("a") yes yes yes
5696 mapcheck("abc") yes yes yes
5697 mapcheck("ax") yes no no
5698 mapcheck("b") no no no
5699
5700 The difference with maparg() is that mapcheck() finds a
5701 mapping that matches with {name}, while maparg() only finds a
5702 mapping for {name} exactly.
5703 When there is no mapping that starts with {name}, an empty
5704 String is returned. If there is one, the RHS of that mapping
5705 is returned. If there are several mappings that start with
5706 {name}, the RHS of one of them is returned. This will be
5707 "<Nop>" if the RHS is empty.
5708 The mappings local to the current buffer are checked first,
5709 then the global mappings.
5710 This function can be used to check if a mapping can be added
5711 without being ambiguous. Example: >
5712 :if mapcheck("_vv") == ""
5713 : map _vv :set guifont=7x13<CR>
5714 :endif
5715< This avoids adding the "_vv" mapping when there already is a
5716 mapping for "_v" or for "_vvv".
5717
5718 Can also be used as a |method|: >
5719 GetKey()->mapcheck('n')
5720
5721
Ernie Rael09661202022-04-25 14:40:44 +01005722maplist([{abbr}]) *maplist()*
5723 Returns a |List| of all mappings. Each List item is a |Dict|,
5724 the same as what is returned by |maparg()|, see
5725 |mapping-dict|. When {abbr} is there and it is |TRUE| use
5726 abbreviations instead of mappings.
5727
5728 Example to show all mappings with 'MultiMatch' in rhs: >
5729 vim9script
5730 echo maplist()->filter(
5731 (_, m) => match(m.rhs, 'MultiMatch') >= 0)
Ernie Raeld8f5f762022-05-10 17:50:39 +01005732< It can be tricky to find mappings for particular |:map-modes|.
5733 |mapping-dict|'s "mode_bits" can simplify this. For example,
5734 the mode_bits for Normal, Insert or Command-line modes are
5735 0x19. To find all the mappings available in those modes you
5736 can do: >
5737 vim9script
5738 var saved_maps = []
5739 for m in maplist()
5740 if and(m.mode_bits, 0x19) != 0
5741 saved_maps->add(m)
5742 endif
5743 endfor
5744 echo saved_maps->mapnew((_, m) => m.lhs)
5745< The values of the mode_bits are defined in Vim's src/vim.h
5746 file and they can be discovered at runtime using
5747 |:map-commands| and "maplist()". Example: >
5748 vim9script
5749 omap xyzzy <Nop>
5750 var op_bit = maplist()->filter(
5751 (_, m) => m.lhs == 'xyzzy')[0].mode_bits
5752 ounmap xyzzy
5753 echo printf("Operator-pending mode bit: 0x%x", op_bit)
Ernie Rael09661202022-04-25 14:40:44 +01005754
5755
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005756mapnew({expr1}, {expr2}) *mapnew()*
5757 Like |map()| but instead of replacing items in {expr1} a new
5758 List or Dictionary is created and returned. {expr1} remains
5759 unchanged. Items can still be changed by {expr2}, if you
5760 don't want that use |deepcopy()| first.
5761
5762
5763mapset({mode}, {abbr}, {dict}) *mapset()*
Ernie Rael51d04d12022-05-04 15:40:22 +01005764mapset({dict})
5765 Restore a mapping from a dictionary, possibly returned by
5766 |maparg()| or |maplist()|. A buffer mapping, when dict.buffer
5767 is true, is set on the current buffer; it is up to the caller
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01005768 to ensure that the intended buffer is the current buffer. This
Ernie Rael51d04d12022-05-04 15:40:22 +01005769 feature allows copying mappings from one buffer to another.
5770 The dict.mode value may restore a single mapping that covers
5771 more than one mode, like with mode values of '!', ' ', 'nox',
5772 or 'v'. *E1276*
5773
5774 In the first form, {mode} and {abbr} should be the same as
5775 for the call to |maparg()|. *E460*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005776 {mode} is used to define the mode in which the mapping is set,
5777 not the "mode" entry in {dict}.
5778 Example for saving and restoring a mapping: >
5779 let save_map = maparg('K', 'n', 0, 1)
5780 nnoremap K somethingelse
5781 ...
5782 call mapset('n', 0, save_map)
5783< Note that if you are going to replace a map in several modes,
Ernie Rael51d04d12022-05-04 15:40:22 +01005784 e.g. with `:map!`, you need to save/restore the mapping for
5785 all of them, when they might differ.
5786
5787 In the second form, with {dict} as the only argument, mode
5788 and abbr are taken from the dict.
5789 Example: >
5790 vim9script
5791 var save_maps = maplist()->filter(
5792 (_, m) => m.lhs == 'K')
5793 nnoremap K somethingelse
5794 cnoremap K somethingelse2
5795 # ...
5796 unmap K
5797 for d in save_maps
5798 mapset(d)
5799 endfor
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005800
5801
5802match({expr}, {pat} [, {start} [, {count}]]) *match()*
5803 When {expr} is a |List| then this returns the index of the
5804 first item where {pat} matches. Each item is used as a
5805 String, |Lists| and |Dictionaries| are used as echoed.
5806
5807 Otherwise, {expr} is used as a String. The result is a
5808 Number, which gives the index (byte offset) in {expr} where
5809 {pat} matches.
5810
5811 A match at the first character or |List| item returns zero.
5812 If there is no match -1 is returned.
5813
5814 For getting submatches see |matchlist()|.
5815 Example: >
5816 :echo match("testing", "ing") " results in 4
5817 :echo match([1, 'x'], '\a') " results in 1
5818< See |string-match| for how {pat} is used.
5819 *strpbrk()*
5820 Vim doesn't have a strpbrk() function. But you can do: >
5821 :let sepidx = match(line, '[.,;: \t]')
5822< *strcasestr()*
5823 Vim doesn't have a strcasestr() function. But you can add
5824 "\c" to the pattern to ignore case: >
5825 :let idx = match(haystack, '\cneedle')
5826<
5827 If {start} is given, the search starts from byte index
5828 {start} in a String or item {start} in a |List|.
5829 The result, however, is still the index counted from the
5830 first character/item. Example: >
5831 :echo match("testing", "ing", 2)
5832< result is again "4". >
5833 :echo match("testing", "ing", 4)
5834< result is again "4". >
5835 :echo match("testing", "t", 2)
5836< result is "3".
5837 For a String, if {start} > 0 then it is like the string starts
5838 {start} bytes later, thus "^" will match at {start}. Except
5839 when {count} is given, then it's like matches before the
5840 {start} byte are ignored (this is a bit complicated to keep it
5841 backwards compatible).
5842 For a String, if {start} < 0, it will be set to 0. For a list
5843 the index is counted from the end.
5844 If {start} is out of range ({start} > strlen({expr}) for a
5845 String or {start} > len({expr}) for a |List|) -1 is returned.
5846
5847 When {count} is given use the {count}'th match. When a match
5848 is found in a String the search for the next one starts one
5849 character further. Thus this example results in 1: >
5850 echo match("testing", "..", 0, 2)
5851< In a |List| the search continues in the next item.
5852 Note that when {count} is added the way {start} works changes,
5853 see above.
5854
5855 See |pattern| for the patterns that are accepted.
5856 The 'ignorecase' option is used to set the ignore-caseness of
5857 the pattern. 'smartcase' is NOT used. The matching is always
5858 done like 'magic' is set and 'cpoptions' is empty.
5859 Note that a match at the start is preferred, thus when the
5860 pattern is using "*" (any number of matches) it tends to find
5861 zero matches at the start instead of a number of matches
5862 further down in the text.
5863
5864 Can also be used as a |method|: >
5865 GetText()->match('word')
5866 GetList()->match('word')
5867<
Bram Moolenaar2f0936c2022-01-08 21:51:59 +00005868 *matchadd()* *E290* *E798* *E799* *E801* *E957*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005869matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
5870 Defines a pattern to be highlighted in the current window (a
5871 "match"). It will be highlighted with {group}. Returns an
5872 identification number (ID), which can be used to delete the
5873 match using |matchdelete()|. The ID is bound to the window.
5874 Matching is case sensitive and magic, unless case sensitivity
5875 or magicness are explicitly overridden in {pattern}. The
5876 'magic', 'smartcase' and 'ignorecase' options are not used.
5877 The "Conceal" value is special, it causes the match to be
5878 concealed.
5879
5880 The optional {priority} argument assigns a priority to the
5881 match. A match with a high priority will have its
5882 highlighting overrule that of a match with a lower priority.
5883 A priority is specified as an integer (negative numbers are no
5884 exception). If the {priority} argument is not specified, the
5885 default priority is 10. The priority of 'hlsearch' is zero,
5886 hence all matches with a priority greater than zero will
5887 overrule it. Syntax highlighting (see 'syntax') is a separate
5888 mechanism, and regardless of the chosen priority a match will
5889 always overrule syntax highlighting.
5890
5891 The optional {id} argument allows the request for a specific
5892 match ID. If a specified ID is already taken, an error
5893 message will appear and the match will not be added. An ID
5894 is specified as a positive integer (zero excluded). IDs 1, 2
5895 and 3 are reserved for |:match|, |:2match| and |:3match|,
Bram Moolenaar2ecbe532022-07-29 21:36:21 +01005896 respectively. 3 is reserved for use by the |matchparen|
5897 plugin.
Bram Moolenaarb529cfb2022-07-25 15:42:07 +01005898 If the {id} argument is not specified or -1, |matchadd()|
Bram Moolenaar9f573a82022-09-29 13:50:08 +01005899 automatically chooses a free ID, which is at least 1000.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005900
5901 The optional {dict} argument allows for further custom
5902 values. Currently this is used to specify a match specific
5903 conceal character that will be shown for |hl-Conceal|
5904 highlighted matches. The dict can have the following members:
5905
5906 conceal Special character to show instead of the
5907 match (only for |hl-Conceal| highlighted
5908 matches, see |:syn-cchar|)
5909 window Instead of the current window use the
5910 window with this number or window ID.
5911
5912 The number of matches is not limited, as it is the case with
5913 the |:match| commands.
5914
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01005915 Returns -1 on error.
5916
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005917 Example: >
5918 :highlight MyGroup ctermbg=green guibg=green
5919 :let m = matchadd("MyGroup", "TODO")
5920< Deletion of the pattern: >
5921 :call matchdelete(m)
5922
5923< A list of matches defined by |matchadd()| and |:match| are
5924 available from |getmatches()|. All matches can be deleted in
5925 one operation by |clearmatches()|.
5926
5927 Can also be used as a |method|: >
5928 GetGroup()->matchadd('TODO')
5929<
5930 *matchaddpos()*
5931matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
5932 Same as |matchadd()|, but requires a list of positions {pos}
5933 instead of a pattern. This command is faster than |matchadd()|
5934 because it does not require to handle regular expressions and
5935 sets buffer line boundaries to redraw screen. It is supposed
5936 to be used when fast match additions and deletions are
5937 required, for example to highlight matching parentheses.
5938
5939 {pos} is a list of positions. Each position can be one of
5940 these:
5941 - A number. This whole line will be highlighted. The first
5942 line has number 1.
5943 - A list with one number, e.g., [23]. The whole line with this
5944 number will be highlighted.
5945 - A list with two numbers, e.g., [23, 11]. The first number is
5946 the line number, the second one is the column number (first
5947 column is 1, the value must correspond to the byte index as
5948 |col()| would return). The character at this position will
5949 be highlighted.
5950 - A list with three numbers, e.g., [23, 11, 3]. As above, but
5951 the third number gives the length of the highlight in bytes.
5952
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01005953 Returns -1 on error.
5954
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00005955 Example: >
5956 :highlight MyGroup ctermbg=green guibg=green
5957 :let m = matchaddpos("MyGroup", [[23, 24], 34])
5958< Deletion of the pattern: >
5959 :call matchdelete(m)
5960
5961< Matches added by |matchaddpos()| are returned by
5962 |getmatches()|.
5963
5964 Can also be used as a |method|: >
5965 GetGroup()->matchaddpos([23, 11])
5966
5967matcharg({nr}) *matcharg()*
5968 Selects the {nr} match item, as set with a |:match|,
5969 |:2match| or |:3match| command.
5970 Return a |List| with two elements:
5971 The name of the highlight group used
5972 The pattern used.
5973 When {nr} is not 1, 2 or 3 returns an empty |List|.
5974 When there is no match item set returns ['', ''].
5975 This is useful to save and restore a |:match|.
5976 Highlighting matches using the |:match| commands are limited
5977 to three matches. |matchadd()| does not have this limitation.
5978
5979 Can also be used as a |method|: >
5980 GetMatch()->matcharg()
5981
5982matchdelete({id} [, {win}) *matchdelete()* *E802* *E803*
5983 Deletes a match with ID {id} previously defined by |matchadd()|
5984 or one of the |:match| commands. Returns 0 if successful,
5985 otherwise -1. See example for |matchadd()|. All matches can
5986 be deleted in one operation by |clearmatches()|.
5987 If {win} is specified, use the window with this number or
5988 window ID instead of the current window.
5989
5990 Can also be used as a |method|: >
5991 GetMatch()->matchdelete()
5992
5993matchend({expr}, {pat} [, {start} [, {count}]]) *matchend()*
5994 Same as |match()|, but return the index of first character
5995 after the match. Example: >
5996 :echo matchend("testing", "ing")
5997< results in "7".
5998 *strspn()* *strcspn()*
5999 Vim doesn't have a strspn() or strcspn() function, but you can
6000 do it with matchend(): >
6001 :let span = matchend(line, '[a-zA-Z]')
6002 :let span = matchend(line, '[^a-zA-Z]')
6003< Except that -1 is returned when there are no matches.
6004
6005 The {start}, if given, has the same meaning as for |match()|. >
6006 :echo matchend("testing", "ing", 2)
6007< results in "7". >
6008 :echo matchend("testing", "ing", 5)
6009< result is "-1".
6010 When {expr} is a |List| the result is equal to |match()|.
6011
6012 Can also be used as a |method|: >
6013 GetText()->matchend('word')
6014
6015
6016matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
6017 If {list} is a list of strings, then returns a |List| with all
6018 the strings in {list} that fuzzy match {str}. The strings in
6019 the returned list are sorted based on the matching score.
6020
6021 The optional {dict} argument always supports the following
6022 items:
zeertzjq9af2bc02022-05-11 14:15:37 +01006023 matchseq When this item is present return only matches
6024 that contain the characters in {str} in the
6025 given sequence.
Kazuyuki Miyagi47f1a552022-06-17 18:30:03 +01006026 limit Maximum number of matches in {list} to be
6027 returned. Zero means no limit.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006028
6029 If {list} is a list of dictionaries, then the optional {dict}
6030 argument supports the following additional items:
Yasuhiro Matsumoto9029a6e2022-04-16 12:35:35 +01006031 key Key of the item which is fuzzy matched against
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006032 {str}. The value of this item should be a
6033 string.
6034 text_cb |Funcref| that will be called for every item
6035 in {list} to get the text for fuzzy matching.
6036 This should accept a dictionary item as the
6037 argument and return the text for that item to
6038 use for fuzzy matching.
6039
6040 {str} is treated as a literal string and regular expression
6041 matching is NOT supported. The maximum supported {str} length
6042 is 256.
6043
6044 When {str} has multiple words each separated by white space,
6045 then the list of strings that have all the words is returned.
6046
6047 If there are no matching strings or there is an error, then an
6048 empty list is returned. If length of {str} is greater than
6049 256, then returns an empty list.
6050
Yasuhiro Matsumoto9029a6e2022-04-16 12:35:35 +01006051 When {limit} is given, matchfuzzy() will find up to this
6052 number of matches in {list} and return them in sorted order.
6053
Bram Moolenaar1588bc82022-03-08 21:35:07 +00006054 Refer to |fuzzy-matching| for more information about fuzzy
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006055 matching strings.
6056
6057 Example: >
6058 :echo matchfuzzy(["clay", "crow"], "cay")
6059< results in ["clay"]. >
6060 :echo getbufinfo()->map({_, v -> v.name})->matchfuzzy("ndl")
6061< results in a list of buffer names fuzzy matching "ndl". >
6062 :echo getbufinfo()->matchfuzzy("ndl", {'key' : 'name'})
6063< results in a list of buffer information dicts with buffer
6064 names fuzzy matching "ndl". >
6065 :echo getbufinfo()->matchfuzzy("spl",
6066 \ {'text_cb' : {v -> v.name}})
6067< results in a list of buffer information dicts with buffer
6068 names fuzzy matching "spl". >
6069 :echo v:oldfiles->matchfuzzy("test")
6070< results in a list of file names fuzzy matching "test". >
6071 :let l = readfile("buffer.c")->matchfuzzy("str")
6072< results in a list of lines in "buffer.c" fuzzy matching "str". >
6073 :echo ['one two', 'two one']->matchfuzzy('two one')
6074< results in ['two one', 'one two']. >
6075 :echo ['one two', 'two one']->matchfuzzy('two one',
6076 \ {'matchseq': 1})
6077< results in ['two one'].
6078
6079matchfuzzypos({list}, {str} [, {dict}]) *matchfuzzypos()*
6080 Same as |matchfuzzy()|, but returns the list of matched
6081 strings, the list of character positions where characters
6082 in {str} matches and a list of matching scores. You can
6083 use |byteidx()| to convert a character position to a byte
6084 position.
6085
6086 If {str} matches multiple times in a string, then only the
6087 positions for the best match is returned.
6088
6089 If there are no matching strings or there is an error, then a
6090 list with three empty list items is returned.
6091
6092 Example: >
6093 :echo matchfuzzypos(['testing'], 'tsg')
6094< results in [['testing'], [[0, 2, 6]], [99]] >
6095 :echo matchfuzzypos(['clay', 'lacy'], 'la')
6096< results in [['lacy', 'clay'], [[0, 1], [1, 2]], [153, 133]] >
6097 :echo [{'text': 'hello', 'id' : 10}]->matchfuzzypos('ll', {'key' : 'text'})
6098< results in [[{'id': 10, 'text': 'hello'}], [[2, 3]], [127]]
6099
6100matchlist({expr}, {pat} [, {start} [, {count}]]) *matchlist()*
6101 Same as |match()|, but return a |List|. The first item in the
6102 list is the matched string, same as what matchstr() would
6103 return. Following items are submatches, like "\1", "\2", etc.
6104 in |:substitute|. When an optional submatch didn't match an
6105 empty string is used. Example: >
6106 echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)')
6107< Results in: ['acd', 'a', '', 'c', 'd', '', '', '', '', '']
6108 When there is no match an empty list is returned.
6109
6110 You can pass in a List, but that is not very useful.
6111
6112 Can also be used as a |method|: >
6113 GetText()->matchlist('word')
6114
6115matchstr({expr}, {pat} [, {start} [, {count}]]) *matchstr()*
6116 Same as |match()|, but return the matched string. Example: >
6117 :echo matchstr("testing", "ing")
6118< results in "ing".
6119 When there is no match "" is returned.
6120 The {start}, if given, has the same meaning as for |match()|. >
6121 :echo matchstr("testing", "ing", 2)
6122< results in "ing". >
6123 :echo matchstr("testing", "ing", 5)
6124< result is "".
6125 When {expr} is a |List| then the matching item is returned.
6126 The type isn't changed, it's not necessarily a String.
6127
6128 Can also be used as a |method|: >
6129 GetText()->matchstr('word')
6130
6131matchstrpos({expr}, {pat} [, {start} [, {count}]]) *matchstrpos()*
6132 Same as |matchstr()|, but return the matched string, the start
6133 position and the end position of the match. Example: >
6134 :echo matchstrpos("testing", "ing")
6135< results in ["ing", 4, 7].
6136 When there is no match ["", -1, -1] is returned.
6137 The {start}, if given, has the same meaning as for |match()|. >
6138 :echo matchstrpos("testing", "ing", 2)
6139< results in ["ing", 4, 7]. >
6140 :echo matchstrpos("testing", "ing", 5)
6141< result is ["", -1, -1].
6142 When {expr} is a |List| then the matching item, the index
6143 of first item where {pat} matches, the start position and the
6144 end position of the match are returned. >
6145 :echo matchstrpos([1, '__x'], '\a')
6146< result is ["x", 1, 2, 3].
6147 The type isn't changed, it's not necessarily a String.
6148
6149 Can also be used as a |method|: >
6150 GetText()->matchstrpos('word')
6151<
6152
6153 *max()*
6154max({expr}) Return the maximum value of all items in {expr}. Example: >
6155 echo max([apples, pears, oranges])
6156
6157< {expr} can be a |List| or a |Dictionary|. For a Dictionary,
6158 it returns the maximum of all values in the Dictionary.
6159 If {expr} is neither a List nor a Dictionary, or one of the
6160 items in {expr} cannot be used as a Number this results in
6161 an error. An empty |List| or |Dictionary| results in zero.
6162
6163 Can also be used as a |method|: >
6164 mylist->max()
6165
6166
6167menu_info({name} [, {mode}]) *menu_info()*
6168 Return information about the specified menu {name} in
6169 mode {mode}. The menu name should be specified without the
6170 shortcut character ('&'). If {name} is "", then the top-level
6171 menu names are returned.
6172
6173 {mode} can be one of these strings:
6174 "n" Normal
6175 "v" Visual (including Select)
6176 "o" Operator-pending
6177 "i" Insert
6178 "c" Cmd-line
6179 "s" Select
6180 "x" Visual
6181 "t" Terminal-Job
6182 "" Normal, Visual and Operator-pending
6183 "!" Insert and Cmd-line
6184 When {mode} is omitted, the modes for "" are used.
6185
6186 Returns a |Dictionary| containing the following items:
6187 accel menu item accelerator text |menu-text|
6188 display display name (name without '&')
6189 enabled v:true if this menu item is enabled
6190 Refer to |:menu-enable|
6191 icon name of the icon file (for toolbar)
6192 |toolbar-icon|
6193 iconidx index of a built-in icon
6194 modes modes for which the menu is defined. In
6195 addition to the modes mentioned above, these
6196 characters will be used:
6197 " " Normal, Visual and Operator-pending
6198 name menu item name.
6199 noremenu v:true if the {rhs} of the menu item is not
6200 remappable else v:false.
6201 priority menu order priority |menu-priority|
6202 rhs right-hand-side of the menu item. The returned
6203 string has special characters translated like
6204 in the output of the ":menu" command listing.
6205 When the {rhs} of a menu item is empty, then
6206 "<Nop>" is returned.
6207 script v:true if script-local remapping of {rhs} is
6208 allowed else v:false. See |:menu-script|.
6209 shortcut shortcut key (character after '&' in
6210 the menu name) |menu-shortcut|
6211 silent v:true if the menu item is created
6212 with <silent> argument |:menu-silent|
6213 submenus |List| containing the names of
6214 all the submenus. Present only if the menu
6215 item has submenus.
6216
6217 Returns an empty dictionary if the menu item is not found.
6218
6219 Examples: >
6220 :echo menu_info('Edit.Cut')
6221 :echo menu_info('File.Save', 'n')
6222
6223 " Display the entire menu hierarchy in a buffer
6224 func ShowMenu(name, pfx)
6225 let m = menu_info(a:name)
6226 call append(line('$'), a:pfx .. m.display)
6227 for child in m->get('submenus', [])
6228 call ShowMenu(a:name .. '.' .. escape(child, '.'),
6229 \ a:pfx .. ' ')
6230 endfor
6231 endfunc
6232 new
6233 for topmenu in menu_info('').submenus
6234 call ShowMenu(topmenu, '')
6235 endfor
6236<
6237 Can also be used as a |method|: >
6238 GetMenuName()->menu_info('v')
6239
6240
6241< *min()*
6242min({expr}) Return the minimum value of all items in {expr}. Example: >
6243 echo min([apples, pears, oranges])
6244
6245< {expr} can be a |List| or a |Dictionary|. For a Dictionary,
6246 it returns the minimum of all values in the Dictionary.
6247 If {expr} is neither a List nor a Dictionary, or one of the
6248 items in {expr} cannot be used as a Number this results in
6249 an error. An empty |List| or |Dictionary| results in zero.
6250
6251 Can also be used as a |method|: >
6252 mylist->min()
6253
6254< *mkdir()* *E739*
6255mkdir({name} [, {path} [, {prot}]])
6256 Create directory {name}.
6257
Bram Moolenaar6f14da12022-09-07 21:30:44 +01006258 If {path} contains "p" then intermediate directories are
6259 created as necessary. Otherwise it must be "".
6260
6261 If {path} contains "D" then {name} is deleted at the end of
6262 the current function, as with: >
6263 defer delete({name}, 'd')
6264<
6265 If {path} contains "R" then {name} is deleted recursively at
6266 the end of the current function, as with: >
6267 defer delete({name}, 'rf')
6268< Note that when {name} has more than one part and "p" is used
6269 some directories may already exist. Only the first one that
6270 is created and what it contains is scheduled to be deleted.
6271 E.g. when using: >
6272 call mkdir('subdir/tmp/autoload', 'pR')
6273< and "subdir" already exists then "subdir/tmp" will be
6274 scheduled for deletion, like with: >
6275 defer delete('subdir/tmp', 'rf')
6276< Note that if scheduling the defer fails the directory is not
6277 deleted. This should only happen when out of memory.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006278
6279 If {prot} is given it is used to set the protection bits of
6280 the new directory. The default is 0o755 (rwxr-xr-x: r/w for
6281 the user, readable for others). Use 0o700 to make it
6282 unreadable for others. This is only used for the last part of
6283 {name}. Thus if you create /tmp/foo/bar then /tmp/foo will be
6284 created with 0o755.
6285 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006286 :call mkdir($HOME .. "/tmp/foo/bar", "p", 0o700)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006287
6288< This function is not available in the |sandbox|.
6289
6290 There is no error if the directory already exists and the "p"
6291 flag is passed (since patch 8.0.1708). However, without the
6292 "p" option the call will fail.
6293
6294 The function result is a Number, which is TRUE if the call was
6295 successful or FALSE if the directory creation failed or partly
6296 failed.
6297
6298 Not available on all systems. To check use: >
6299 :if exists("*mkdir")
6300
6301< Can also be used as a |method|: >
6302 GetName()->mkdir()
6303<
6304 *mode()*
6305mode([expr]) Return a string that indicates the current mode.
6306 If [expr] is supplied and it evaluates to a non-zero Number or
6307 a non-empty String (|non-zero-arg|), then the full mode is
6308 returned, otherwise only the first letter is returned.
6309 Also see |state()|.
6310
6311 n Normal
6312 no Operator-pending
6313 nov Operator-pending (forced characterwise |o_v|)
6314 noV Operator-pending (forced linewise |o_V|)
6315 noCTRL-V Operator-pending (forced blockwise |o_CTRL-V|);
6316 CTRL-V is one character
6317 niI Normal using |i_CTRL-O| in |Insert-mode|
6318 niR Normal using |i_CTRL-O| in |Replace-mode|
6319 niV Normal using |i_CTRL-O| in |Virtual-Replace-mode|
6320 nt Terminal-Normal (insert goes to Terminal-Job mode)
6321 v Visual by character
6322 vs Visual by character using |v_CTRL-O| in Select mode
6323 V Visual by line
6324 Vs Visual by line using |v_CTRL-O| in Select mode
6325 CTRL-V Visual blockwise
6326 CTRL-Vs Visual blockwise using |v_CTRL-O| in Select mode
6327 s Select by character
6328 S Select by line
6329 CTRL-S Select blockwise
6330 i Insert
6331 ic Insert mode completion |compl-generic|
6332 ix Insert mode |i_CTRL-X| completion
6333 R Replace |R|
6334 Rc Replace mode completion |compl-generic|
6335 Rx Replace mode |i_CTRL-X| completion
6336 Rv Virtual Replace |gR|
6337 Rvc Virtual Replace mode completion |compl-generic|
6338 Rvx Virtual Replace mode |i_CTRL-X| completion
6339 c Command-line editing
6340 cv Vim Ex mode |gQ|
6341 ce Normal Ex mode |Q|
6342 r Hit-enter prompt
6343 rm The -- more -- prompt
6344 r? A |:confirm| query of some sort
6345 ! Shell or external command is executing
6346 t Terminal-Job mode: keys go to the job
6347
6348 This is useful in the 'statusline' option or when used
6349 with |remote_expr()| In most other places it always returns
6350 "c" or "n".
6351 Note that in the future more modes and more specific modes may
6352 be added. It's better not to compare the whole string but only
6353 the leading character(s).
6354 Also see |visualmode()|.
6355
6356 Can also be used as a |method|: >
6357 DoFull()->mode()
6358
6359mzeval({expr}) *mzeval()*
6360 Evaluate MzScheme expression {expr} and return its result
6361 converted to Vim data structures.
6362 Numbers and strings are returned as they are.
6363 Pairs (including lists and improper lists) and vectors are
6364 returned as Vim |Lists|.
6365 Hash tables are represented as Vim |Dictionary| type with keys
6366 converted to strings.
6367 All other types are converted to string with display function.
6368 Examples: >
6369 :mz (define l (list 1 2 3))
6370 :mz (define h (make-hash)) (hash-set! h "list" l)
6371 :echo mzeval("l")
6372 :echo mzeval("h")
6373<
6374 Note that in a `:def` function local variables are not visible
6375 to {expr}.
6376
6377 Can also be used as a |method|: >
6378 GetExpr()->mzeval()
6379<
6380 {only available when compiled with the |+mzscheme| feature}
6381
6382nextnonblank({lnum}) *nextnonblank()*
6383 Return the line number of the first line at or below {lnum}
6384 that is not blank. Example: >
6385 if getline(nextnonblank(1)) =~ "Java"
6386< When {lnum} is invalid or there is no non-blank line at or
6387 below it, zero is returned.
6388 {lnum} is used like with |getline()|.
6389 See also |prevnonblank()|.
6390
6391 Can also be used as a |method|: >
6392 GetLnum()->nextnonblank()
6393
6394nr2char({expr} [, {utf8}]) *nr2char()*
6395 Return a string with a single character, which has the number
6396 value {expr}. Examples: >
6397 nr2char(64) returns "@"
6398 nr2char(32) returns " "
6399< When {utf8} is omitted or zero, the current 'encoding' is used.
6400 Example for "utf-8": >
6401 nr2char(300) returns I with bow character
6402< When {utf8} is TRUE, always return UTF-8 characters.
6403 Note that a NUL character in the file is specified with
6404 nr2char(10), because NULs are represented with newline
6405 characters. nr2char(0) is a real NUL and terminates the
6406 string, thus results in an empty string.
6407 To turn a list of character numbers into a string: >
6408 let list = [65, 66, 67]
6409 let str = join(map(list, {_, val -> nr2char(val)}), '')
6410< Result: "ABC"
6411
6412 Can also be used as a |method|: >
6413 GetNumber()->nr2char()
6414
6415or({expr}, {expr}) *or()*
6416 Bitwise OR on the two arguments. The arguments are converted
6417 to a number. A List, Dict or Float argument causes an error.
Bram Moolenaar5a6ec102022-05-27 21:58:00 +01006418 Also see `and()` and `xor()`.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006419 Example: >
6420 :let bits = or(bits, 0x80)
6421< Can also be used as a |method|: >
6422 :let bits = bits->or(0x80)
6423
Bram Moolenaar5a6ec102022-05-27 21:58:00 +01006424< Rationale: The reason this is a function and not using the "|"
6425 character like many languages, is that Vi has always used "|"
6426 to separate commands. In many places it would not be clear if
6427 "|" is an operator or a command separator.
6428
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006429
6430pathshorten({path} [, {len}]) *pathshorten()*
6431 Shorten directory names in the path {path} and return the
6432 result. The tail, the file name, is kept as-is. The other
6433 components in the path are reduced to {len} letters in length.
6434 If {len} is omitted or smaller than 1 then 1 is used (single
6435 letters). Leading '~' and '.' characters are kept. Examples: >
6436 :echo pathshorten('~/.vim/autoload/myfile.vim')
6437< ~/.v/a/myfile.vim ~
6438>
6439 :echo pathshorten('~/.vim/autoload/myfile.vim', 2)
6440< ~/.vi/au/myfile.vim ~
6441 It doesn't matter if the path exists or not.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01006442 Returns an empty string on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006443
6444 Can also be used as a |method|: >
6445 GetDirectories()->pathshorten()
6446
6447perleval({expr}) *perleval()*
6448 Evaluate Perl expression {expr} in scalar context and return
6449 its result converted to Vim data structures. If value can't be
6450 converted, it is returned as a string Perl representation.
6451 Note: If you want an array or hash, {expr} must return a
6452 reference to it.
6453 Example: >
6454 :echo perleval('[1 .. 4]')
6455< [1, 2, 3, 4]
6456
6457 Note that in a `:def` function local variables are not visible
6458 to {expr}.
6459
6460 Can also be used as a |method|: >
6461 GetExpr()->perleval()
6462
6463< {only available when compiled with the |+perl| feature}
6464
6465
6466popup_ functions are documented here: |popup-functions|
6467
6468
6469pow({x}, {y}) *pow()*
6470 Return the power of {x} to the exponent {y} as a |Float|.
6471 {x} and {y} must evaluate to a |Float| or a |Number|.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01006472 Returns 0.0 if {x} or {y} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006473 Examples: >
6474 :echo pow(3, 3)
6475< 27.0 >
6476 :echo pow(2, 16)
6477< 65536.0 >
6478 :echo pow(32, 0.20)
6479< 2.0
6480
6481 Can also be used as a |method|: >
6482 Compute()->pow(3)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006483
6484prevnonblank({lnum}) *prevnonblank()*
6485 Return the line number of the first line at or above {lnum}
6486 that is not blank. Example: >
6487 let ind = indent(prevnonblank(v:lnum - 1))
6488< When {lnum} is invalid or there is no non-blank line at or
6489 above it, zero is returned.
6490 {lnum} is used like with |getline()|.
6491 Also see |nextnonblank()|.
6492
6493 Can also be used as a |method|: >
6494 GetLnum()->prevnonblank()
6495
6496printf({fmt}, {expr1} ...) *printf()*
6497 Return a String with {fmt}, where "%" items are replaced by
6498 the formatted form of their respective arguments. Example: >
6499 printf("%4d: E%d %.30s", lnum, errno, msg)
6500< May result in:
6501 " 99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~
6502
6503 When used as a |method| the base is passed as the second
6504 argument: >
6505 Compute()->printf("result: %d")
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01006506<
6507 You can use `call()` to pass the items as a list.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006508
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01006509 Often used items are:
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006510 %s string
6511 %6S string right-aligned in 6 display cells
6512 %6s string right-aligned in 6 bytes
6513 %.9s string truncated to 9 bytes
6514 %c single byte
6515 %d decimal number
6516 %5d decimal number padded with spaces to 5 characters
6517 %x hex number
6518 %04x hex number padded with zeros to at least 4 characters
6519 %X hex number using upper case letters
6520 %o octal number
6521 %08b binary number padded with zeros to at least 8 chars
6522 %f floating point number as 12.23, inf, -inf or nan
6523 %F floating point number as 12.23, INF, -INF or NAN
6524 %e floating point number as 1.23e3, inf, -inf or nan
6525 %E floating point number as 1.23E3, INF, -INF or NAN
6526 %g floating point number, as %f or %e depending on value
6527 %G floating point number, as %F or %E depending on value
6528 %% the % character itself
6529
6530 Conversion specifications start with '%' and end with the
6531 conversion type. All other characters are copied unchanged to
6532 the result.
6533
6534 The "%" starts a conversion specification. The following
6535 arguments appear in sequence:
6536
6537 % [flags] [field-width] [.precision] type
6538
6539 flags
6540 Zero or more of the following flags:
6541
6542 # The value should be converted to an "alternate
6543 form". For c, d, and s conversions, this option
6544 has no effect. For o conversions, the precision
6545 of the number is increased to force the first
6546 character of the output string to a zero (except
6547 if a zero value is printed with an explicit
6548 precision of zero).
6549 For b and B conversions, a non-zero result has
6550 the string "0b" (or "0B" for B conversions)
6551 prepended to it.
6552 For x and X conversions, a non-zero result has
6553 the string "0x" (or "0X" for X conversions)
6554 prepended to it.
6555
6556 0 (zero) Zero padding. For all conversions the converted
6557 value is padded on the left with zeros rather
6558 than blanks. If a precision is given with a
6559 numeric conversion (d, b, B, o, x, and X), the 0
6560 flag is ignored.
6561
6562 - A negative field width flag; the converted value
6563 is to be left adjusted on the field boundary.
6564 The converted value is padded on the right with
6565 blanks, rather than on the left with blanks or
6566 zeros. A - overrides a 0 if both are given.
6567
6568 ' ' (space) A blank should be left before a positive
6569 number produced by a signed conversion (d).
6570
6571 + A sign must always be placed before a number
6572 produced by a signed conversion. A + overrides
6573 a space if both are used.
6574
6575 field-width
6576 An optional decimal digit string specifying a minimum
6577 field width. If the converted value has fewer bytes
6578 than the field width, it will be padded with spaces on
6579 the left (or right, if the left-adjustment flag has
6580 been given) to fill out the field width. For the S
6581 conversion the count is in cells.
6582
6583 .precision
6584 An optional precision, in the form of a period '.'
6585 followed by an optional digit string. If the digit
6586 string is omitted, the precision is taken as zero.
6587 This gives the minimum number of digits to appear for
6588 d, o, x, and X conversions, the maximum number of
6589 bytes to be printed from a string for s conversions,
6590 or the maximum number of cells to be printed from a
6591 string for S conversions.
6592 For floating point it is the number of digits after
6593 the decimal point.
6594
6595 type
6596 A character that specifies the type of conversion to
6597 be applied, see below.
6598
6599 A field width or precision, or both, may be indicated by an
6600 asterisk '*' instead of a digit string. In this case, a
6601 Number argument supplies the field width or precision. A
6602 negative field width is treated as a left adjustment flag
6603 followed by a positive field width; a negative precision is
6604 treated as though it were missing. Example: >
6605 :echo printf("%d: %.*s", nr, width, line)
6606< This limits the length of the text used from "line" to
6607 "width" bytes.
6608
6609 The conversion specifiers and their meanings are:
6610
6611 *printf-d* *printf-b* *printf-B* *printf-o*
6612 *printf-x* *printf-X*
6613 dbBoxX The Number argument is converted to signed decimal
6614 (d), unsigned binary (b and B), unsigned octal (o), or
6615 unsigned hexadecimal (x and X) notation. The letters
6616 "abcdef" are used for x conversions; the letters
6617 "ABCDEF" are used for X conversions.
6618 The precision, if any, gives the minimum number of
6619 digits that must appear; if the converted value
6620 requires fewer digits, it is padded on the left with
6621 zeros.
6622 In no case does a non-existent or small field width
6623 cause truncation of a numeric field; if the result of
6624 a conversion is wider than the field width, the field
6625 is expanded to contain the conversion result.
6626 The 'h' modifier indicates the argument is 16 bits.
6627 The 'l' modifier indicates the argument is 32 bits.
6628 The 'L' modifier indicates the argument is 64 bits.
6629 Generally, these modifiers are not useful. They are
6630 ignored when type is known from the argument.
6631
6632 i alias for d
6633 D alias for ld
6634 U alias for lu
6635 O alias for lo
6636
6637 *printf-c*
6638 c The Number argument is converted to a byte, and the
6639 resulting character is written.
6640
6641 *printf-s*
6642 s The text of the String argument is used. If a
6643 precision is specified, no more bytes than the number
6644 specified are used.
6645 If the argument is not a String type, it is
6646 automatically converted to text with the same format
6647 as ":echo".
6648 *printf-S*
6649 S The text of the String argument is used. If a
6650 precision is specified, no more display cells than the
6651 number specified are used.
6652
6653 *printf-f* *E807*
6654 f F The Float argument is converted into a string of the
6655 form 123.456. The precision specifies the number of
6656 digits after the decimal point. When the precision is
6657 zero the decimal point is omitted. When the precision
6658 is not specified 6 is used. A really big number
6659 (out of range or dividing by zero) results in "inf"
6660 or "-inf" with %f (INF or -INF with %F).
6661 "0.0 / 0.0" results in "nan" with %f (NAN with %F).
6662 Example: >
6663 echo printf("%.2f", 12.115)
6664< 12.12
6665 Note that roundoff depends on the system libraries.
6666 Use |round()| when in doubt.
6667
6668 *printf-e* *printf-E*
6669 e E The Float argument is converted into a string of the
6670 form 1.234e+03 or 1.234E+03 when using 'E'. The
6671 precision specifies the number of digits after the
6672 decimal point, like with 'f'.
6673
6674 *printf-g* *printf-G*
6675 g G The Float argument is converted like with 'f' if the
6676 value is between 0.001 (inclusive) and 10000000.0
6677 (exclusive). Otherwise 'e' is used for 'g' and 'E'
6678 for 'G'. When no precision is specified superfluous
6679 zeroes and '+' signs are removed, except for the zero
6680 immediately after the decimal point. Thus 10000000.0
6681 results in 1.0e7.
6682
6683 *printf-%*
6684 % A '%' is written. No argument is converted. The
6685 complete conversion specification is "%%".
6686
6687 When a Number argument is expected a String argument is also
6688 accepted and automatically converted.
6689 When a Float or String argument is expected a Number argument
6690 is also accepted and automatically converted.
6691 Any other argument type results in an error message.
6692
6693 *E766* *E767*
6694 The number of {exprN} arguments must exactly match the number
6695 of "%" items. If there are not sufficient or too many
6696 arguments an error is given. Up to 18 arguments can be used.
6697
6698
6699prompt_getprompt({buf}) *prompt_getprompt()*
6700 Returns the effective prompt text for buffer {buf}. {buf} can
6701 be a buffer name or number. See |prompt-buffer|.
6702
6703 If the buffer doesn't exist or isn't a prompt buffer, an empty
6704 string is returned.
6705
6706 Can also be used as a |method|: >
6707 GetBuffer()->prompt_getprompt()
6708
6709< {only available when compiled with the |+channel| feature}
6710
6711
6712prompt_setcallback({buf}, {expr}) *prompt_setcallback()*
6713 Set prompt callback for buffer {buf} to {expr}. When {expr}
6714 is an empty string the callback is removed. This has only
6715 effect if {buf} has 'buftype' set to "prompt".
6716
6717 The callback is invoked when pressing Enter. The current
6718 buffer will always be the prompt buffer. A new line for a
6719 prompt is added before invoking the callback, thus the prompt
6720 for which the callback was invoked will be in the last but one
6721 line.
6722 If the callback wants to add text to the buffer, it must
6723 insert it above the last line, since that is where the current
6724 prompt is. This can also be done asynchronously.
6725 The callback is invoked with one argument, which is the text
6726 that was entered at the prompt. This can be an empty string
6727 if the user only typed Enter.
6728 Example: >
6729 call prompt_setcallback(bufnr(), function('s:TextEntered'))
6730 func s:TextEntered(text)
6731 if a:text == 'exit' || a:text == 'quit'
6732 stopinsert
6733 close
6734 else
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006735 call append(line('$') - 1, 'Entered: "' .. a:text .. '"')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006736 " Reset 'modified' to allow the buffer to be closed.
6737 set nomodified
6738 endif
6739 endfunc
6740
6741< Can also be used as a |method|: >
6742 GetBuffer()->prompt_setcallback(callback)
6743
6744< {only available when compiled with the |+channel| feature}
6745
6746prompt_setinterrupt({buf}, {expr}) *prompt_setinterrupt()*
6747 Set a callback for buffer {buf} to {expr}. When {expr} is an
6748 empty string the callback is removed. This has only effect if
6749 {buf} has 'buftype' set to "prompt".
6750
6751 This callback will be invoked when pressing CTRL-C in Insert
6752 mode. Without setting a callback Vim will exit Insert mode,
6753 as in any buffer.
6754
6755 Can also be used as a |method|: >
6756 GetBuffer()->prompt_setinterrupt(callback)
6757
6758< {only available when compiled with the |+channel| feature}
6759
6760prompt_setprompt({buf}, {text}) *prompt_setprompt()*
6761 Set prompt for buffer {buf} to {text}. You most likely want
6762 {text} to end in a space.
6763 The result is only visible if {buf} has 'buftype' set to
6764 "prompt". Example: >
6765 call prompt_setprompt(bufnr(), 'command: ')
6766<
6767 Can also be used as a |method|: >
6768 GetBuffer()->prompt_setprompt('command: ')
6769
6770< {only available when compiled with the |+channel| feature}
6771
6772prop_ functions are documented here: |text-prop-functions|
6773
6774pum_getpos() *pum_getpos()*
6775 If the popup menu (see |ins-completion-menu|) is not visible,
6776 returns an empty |Dictionary|, otherwise, returns a
6777 |Dictionary| with the following keys:
6778 height nr of items visible
6779 width screen cells
6780 row top screen row (0 first row)
6781 col leftmost screen column (0 first col)
6782 size total nr of items
6783 scrollbar |TRUE| if scrollbar is visible
6784
6785 The values are the same as in |v:event| during
6786 |CompleteChanged|.
6787
6788pumvisible() *pumvisible()*
6789 Returns non-zero when the popup menu is visible, zero
6790 otherwise. See |ins-completion-menu|.
6791 This can be used to avoid some things that would remove the
6792 popup menu.
6793
6794py3eval({expr}) *py3eval()*
6795 Evaluate Python expression {expr} and return its result
6796 converted to Vim data structures.
6797 Numbers and strings are returned as they are (strings are
6798 copied though, Unicode strings are additionally converted to
6799 'encoding').
6800 Lists are represented as Vim |List| type.
6801 Dictionaries are represented as Vim |Dictionary| type with
6802 keys converted to strings.
6803 Note that in a `:def` function local variables are not visible
6804 to {expr}.
6805
6806 Can also be used as a |method|: >
6807 GetExpr()->py3eval()
6808
6809< {only available when compiled with the |+python3| feature}
6810
6811 *E858* *E859*
6812pyeval({expr}) *pyeval()*
6813 Evaluate Python expression {expr} and return its result
6814 converted to Vim data structures.
6815 Numbers and strings are returned as they are (strings are
6816 copied though).
6817 Lists are represented as Vim |List| type.
6818 Dictionaries are represented as Vim |Dictionary| type,
6819 non-string keys result in error.
6820 Note that in a `:def` function local variables are not visible
6821 to {expr}.
6822
6823 Can also be used as a |method|: >
6824 GetExpr()->pyeval()
6825
6826< {only available when compiled with the |+python| feature}
6827
6828pyxeval({expr}) *pyxeval()*
6829 Evaluate Python expression {expr} and return its result
6830 converted to Vim data structures.
6831 Uses Python 2 or 3, see |python_x| and 'pyxversion'.
6832 See also: |pyeval()|, |py3eval()|
6833
6834 Can also be used as a |method|: >
6835 GetExpr()->pyxeval()
6836
6837< {only available when compiled with the |+python| or the
6838 |+python3| feature}
6839
6840rand([{expr}]) *rand()* *random*
6841 Return a pseudo-random Number generated with an xoshiro128**
6842 algorithm using seed {expr}. The returned number is 32 bits,
6843 also on 64 bits systems, for consistency.
6844 {expr} can be initialized by |srand()| and will be updated by
6845 rand(). If {expr} is omitted, an internal seed value is used
6846 and updated.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01006847 Returns -1 if {expr} is invalid.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006848
6849 Examples: >
6850 :echo rand()
6851 :let seed = srand()
6852 :echo rand(seed)
6853 :echo rand(seed) % 16 " random number 0 - 15
6854<
6855
6856 *E726* *E727*
6857range({expr} [, {max} [, {stride}]]) *range()*
6858 Returns a |List| with Numbers:
6859 - If only {expr} is specified: [0, 1, ..., {expr} - 1]
6860 - If {max} is specified: [{expr}, {expr} + 1, ..., {max}]
6861 - If {stride} is specified: [{expr}, {expr} + {stride}, ...,
6862 {max}] (increasing {expr} with {stride} each time, not
6863 producing a value past {max}).
6864 When the maximum is one before the start the result is an
6865 empty list. When the maximum is more than one before the
6866 start this is an error.
6867 Examples: >
6868 range(4) " [0, 1, 2, 3]
6869 range(2, 4) " [2, 3, 4]
6870 range(2, 9, 3) " [2, 5, 8]
6871 range(2, -2, -1) " [2, 1, 0, -1, -2]
6872 range(0) " []
6873 range(2, 0) " error!
6874<
6875 Can also be used as a |method|: >
6876 GetExpr()->range()
6877<
6878
K.Takata11df3ae2022-10-19 14:02:40 +01006879readblob({fname} [, {offset} [, {size}]]) *readblob()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006880 Read file {fname} in binary mode and return a |Blob|.
K.Takata11df3ae2022-10-19 14:02:40 +01006881 If {offset} is specified, read the file from the specified
6882 offset. If it is a negative value, it is used as an offset
6883 from the end of the file. E.g., to read the last 12 bytes: >
6884 readblob('file.bin', -12)
6885< If {size} is specified, only the specified size will be read.
6886 E.g. to read the first 100 bytes of a file: >
6887 readblob('file.bin', 0, 100)
6888< If {size} is -1 or omitted, the whole data starting from
6889 {offset} will be read.
K.Takata43625762022-10-20 13:28:51 +01006890 This can be also used to read the data from a character device
6891 on Unix when {size} is explicitly set. Only if the device
6892 supports seeking {offset} can be used. Otherwise it should be
6893 zero. E.g. to read 10 bytes from a serial console: >
6894 readblob('/dev/ttyS0', 0, 10)
6895< When the file can't be opened an error message is given and
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006896 the result is an empty |Blob|.
Bram Moolenaar5b2a3d72022-10-21 11:25:30 +01006897 When the offset is beyond the end of the file the result is an
6898 empty blob.
6899 When trying to read more bytes than are available the result
6900 is truncated.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006901 Also see |readfile()| and |writefile()|.
6902
6903
6904readdir({directory} [, {expr} [, {dict}]]) *readdir()*
6905 Return a list with file and directory names in {directory}.
6906 You can also use |glob()| if you don't need to do complicated
6907 things, such as limiting the number of matches.
6908 The list will be sorted (case sensitive), see the {dict}
6909 argument below for changing the sort order.
6910
6911 When {expr} is omitted all entries are included.
6912 When {expr} is given, it is evaluated to check what to do:
6913 If {expr} results in -1 then no further entries will
6914 be handled.
6915 If {expr} results in 0 then this entry will not be
6916 added to the list.
6917 If {expr} results in 1 then this entry will be added
6918 to the list.
6919 The entries "." and ".." are always excluded.
6920 Each time {expr} is evaluated |v:val| is set to the entry name.
6921 When {expr} is a function the name is passed as the argument.
6922 For example, to get a list of files ending in ".txt": >
6923 readdir(dirname, {n -> n =~ '.txt$'})
6924< To skip hidden and backup files: >
6925 readdir(dirname, {n -> n !~ '^\.\|\~$'})
Bram Moolenaar6f4754b2022-01-23 12:07:04 +00006926< *E857*
6927 The optional {dict} argument allows for further custom
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006928 values. Currently this is used to specify if and how sorting
6929 should be performed. The dict can have the following members:
6930
6931 sort How to sort the result returned from the system.
6932 Valid values are:
6933 "none" do not sort (fastest method)
6934 "case" sort case sensitive (byte value of
6935 each character, technically, using
6936 strcmp()) (default)
6937 "icase" sort case insensitive (technically
6938 using strcasecmp())
6939 "collate" sort using the collation order
6940 of the "POSIX" or "C" |locale|
6941 (technically using strcoll())
6942 Other values are silently ignored.
6943
6944 For example, to get a list of all files in the current
6945 directory without sorting the individual entries: >
6946 readdir('.', '1', #{sort: 'none'})
6947< If you want to get a directory tree: >
6948 function! s:tree(dir)
6949 return {a:dir : map(readdir(a:dir),
6950 \ {_, x -> isdirectory(x) ?
Bram Moolenaarc51cf032022-02-26 12:25:45 +00006951 \ {x : s:tree(a:dir .. '/' .. x)} : x})}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006952 endfunction
6953 echo s:tree(".")
6954<
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01006955 Returns an empty List on error.
6956
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00006957 Can also be used as a |method|: >
6958 GetDirName()->readdir()
6959<
6960readdirex({directory} [, {expr} [, {dict}]]) *readdirex()*
6961 Extended version of |readdir()|.
6962 Return a list of Dictionaries with file and directory
6963 information in {directory}.
6964 This is useful if you want to get the attributes of file and
6965 directory at the same time as getting a list of a directory.
6966 This is much faster than calling |readdir()| then calling
6967 |getfperm()|, |getfsize()|, |getftime()| and |getftype()| for
6968 each file and directory especially on MS-Windows.
6969 The list will by default be sorted by name (case sensitive),
6970 the sorting can be changed by using the optional {dict}
6971 argument, see |readdir()|.
6972
6973 The Dictionary for file and directory information has the
6974 following items:
6975 group Group name of the entry. (Only on Unix)
6976 name Name of the entry.
6977 perm Permissions of the entry. See |getfperm()|.
6978 size Size of the entry. See |getfsize()|.
6979 time Timestamp of the entry. See |getftime()|.
6980 type Type of the entry.
6981 On Unix, almost same as |getftype()| except:
6982 Symlink to a dir "linkd"
6983 Other symlink "link"
6984 On MS-Windows:
6985 Normal file "file"
6986 Directory "dir"
6987 Junction "junction"
6988 Symlink to a dir "linkd"
6989 Other symlink "link"
6990 Other reparse point "reparse"
6991 user User name of the entry's owner. (Only on Unix)
6992 On Unix, if the entry is a symlink, the Dictionary includes
6993 the information of the target (except the "type" item).
6994 On MS-Windows, it includes the information of the symlink
6995 itself because of performance reasons.
6996
6997 When {expr} is omitted all entries are included.
6998 When {expr} is given, it is evaluated to check what to do:
6999 If {expr} results in -1 then no further entries will
7000 be handled.
7001 If {expr} results in 0 then this entry will not be
7002 added to the list.
7003 If {expr} results in 1 then this entry will be added
7004 to the list.
7005 The entries "." and ".." are always excluded.
7006 Each time {expr} is evaluated |v:val| is set to a |Dictionary|
7007 of the entry.
7008 When {expr} is a function the entry is passed as the argument.
7009 For example, to get a list of files ending in ".txt": >
7010 readdirex(dirname, {e -> e.name =~ '.txt$'})
7011<
7012 For example, to get a list of all files in the current
7013 directory without sorting the individual entries: >
7014 readdirex(dirname, '1', #{sort: 'none'})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007015<
7016 Can also be used as a |method|: >
7017 GetDirName()->readdirex()
7018<
7019
7020 *readfile()*
7021readfile({fname} [, {type} [, {max}]])
7022 Read file {fname} and return a |List|, each line of the file
7023 as an item. Lines are broken at NL characters. Macintosh
7024 files separated with CR will result in a single long line
7025 (unless a NL appears somewhere).
7026 All NUL characters are replaced with a NL character.
7027 When {type} contains "b" binary mode is used:
7028 - When the last line ends in a NL an extra empty list item is
7029 added.
7030 - No CR characters are removed.
7031 Otherwise:
7032 - CR characters that appear before a NL are removed.
7033 - Whether the last line ends in a NL or not does not matter.
7034 - When 'encoding' is Unicode any UTF-8 byte order mark is
7035 removed from the text.
7036 When {max} is given this specifies the maximum number of lines
7037 to be read. Useful if you only want to check the first ten
7038 lines of a file: >
7039 :for line in readfile(fname, '', 10)
7040 : if line =~ 'Date' | echo line | endif
7041 :endfor
7042< When {max} is negative -{max} lines from the end of the file
7043 are returned, or as many as there are.
7044 When {max} is zero the result is an empty list.
7045 Note that without {max} the whole file is read into memory.
7046 Also note that there is no recognition of encoding. Read a
7047 file into a buffer if you need to.
7048 Deprecated (use |readblob()| instead): When {type} contains
7049 "B" a |Blob| is returned with the binary data of the file
7050 unmodified.
7051 When the file can't be opened an error message is given and
7052 the result is an empty list.
7053 Also see |writefile()|.
7054
7055 Can also be used as a |method|: >
7056 GetFileName()->readfile()
7057
7058reduce({object}, {func} [, {initial}]) *reduce()* *E998*
7059 {func} is called for every item in {object}, which can be a
7060 |String|, |List| or a |Blob|. {func} is called with two
7061 arguments: the result so far and current item. After
Bram Moolenaarf10911e2022-01-29 22:20:48 +00007062 processing all items the result is returned. *E1132*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007063
7064 {initial} is the initial result. When omitted, the first item
7065 in {object} is used and {func} is first called for the second
7066 item. If {initial} is not given and {object} is empty no
7067 result can be computed, an E998 error is given.
7068
7069 Examples: >
7070 echo reduce([1, 3, 5], { acc, val -> acc + val })
7071 echo reduce(['x', 'y'], { acc, val -> acc .. val }, 'a')
7072 echo reduce(0z1122, { acc, val -> 2 * acc + val })
7073 echo reduce('xyz', { acc, val -> acc .. ',' .. val })
7074<
7075 Can also be used as a |method|: >
7076 echo mylist->reduce({ acc, val -> acc + val }, 0)
7077
7078
7079reg_executing() *reg_executing()*
7080 Returns the single letter name of the register being executed.
7081 Returns an empty string when no register is being executed.
7082 See |@|.
7083
7084reg_recording() *reg_recording()*
7085 Returns the single letter name of the register being recorded.
7086 Returns an empty string when not recording. See |q|.
7087
Bram Moolenaarf269eab2022-10-03 18:04:35 +01007088reltime()
7089reltime({start})
7090reltime({start}, {end}) *reltime()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007091 Return an item that represents a time value. The item is a
7092 list with items that depend on the system. In Vim 9 script
7093 list<any> can be used.
7094 The item can be passed to |reltimestr()| to convert it to a
Bram Moolenaarf269eab2022-10-03 18:04:35 +01007095 string or |reltimefloat()| to convert to a Float. For
7096 example, to see the time spent in function Work(): >
7097 var startTime = reltime()
7098 Work()
7099 echo startTime->reltime()->reltimestr()
7100<
Bram Moolenaar016188f2022-06-06 20:52:59 +01007101 Without an argument reltime() returns the current time (the
Bram Moolenaareb490412022-06-28 13:44:46 +01007102 representation is system-dependent, it can not be used as the
Bram Moolenaar016188f2022-06-06 20:52:59 +01007103 wall-clock time, see |localtime()| for that).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007104 With one argument is returns the time passed since the time
7105 specified in the argument.
7106 With two arguments it returns the time passed between {start}
7107 and {end}.
7108
7109 The {start} and {end} arguments must be values returned by
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007110 reltime(). If there is an error an empty List is returned in
7111 legacy script, in Vim9 script an error is given.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007112
7113 Can also be used as a |method|: >
7114 GetStart()->reltime()
7115<
7116 {only available when compiled with the |+reltime| feature}
7117
7118reltimefloat({time}) *reltimefloat()*
7119 Return a Float that represents the time value of {time}.
7120 Example: >
7121 let start = reltime()
7122 call MyFunction()
7123 let seconds = reltimefloat(reltime(start))
7124< See the note of reltimestr() about overhead.
7125 Also see |profiling|.
7126 If there is an error 0.0 is returned in legacy script, in Vim9
7127 script an error is given.
7128
7129 Can also be used as a |method|: >
7130 reltime(start)->reltimefloat()
7131
7132< {only available when compiled with the |+reltime| feature}
7133
7134reltimestr({time}) *reltimestr()*
7135 Return a String that represents the time value of {time}.
7136 This is the number of seconds, a dot and the number of
7137 microseconds. Example: >
7138 let start = reltime()
7139 call MyFunction()
7140 echo reltimestr(reltime(start))
7141< Note that overhead for the commands will be added to the time.
7142 The accuracy depends on the system.
7143 Leading spaces are used to make the string align nicely. You
7144 can use split() to remove it. >
7145 echo split(reltimestr(reltime(start)))[0]
7146< Also see |profiling|.
7147 If there is an error an empty string is returned in legacy
7148 script, in Vim9 script an error is given.
7149
7150 Can also be used as a |method|: >
7151 reltime(start)->reltimestr()
7152
7153< {only available when compiled with the |+reltime| feature}
7154
7155 *remote_expr()* *E449*
7156remote_expr({server}, {string} [, {idvar} [, {timeout}]])
Bram Moolenaar944697a2022-02-20 19:48:20 +00007157 Send the {string} to {server}. The {server} argument is a
7158 string, also see |{server}|.
7159
7160 The string is sent as an expression and the result is returned
7161 after evaluation. The result must be a String or a |List|. A
7162 |List| is turned into a String by joining the items with a
7163 line break in between (not at the end), like with join(expr,
7164 "\n").
7165
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007166 If {idvar} is present and not empty, it is taken as the name
7167 of a variable and a {serverid} for later use with
7168 |remote_read()| is stored there.
Bram Moolenaar944697a2022-02-20 19:48:20 +00007169
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007170 If {timeout} is given the read times out after this many
7171 seconds. Otherwise a timeout of 600 seconds is used.
Bram Moolenaar944697a2022-02-20 19:48:20 +00007172
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007173 See also |clientserver| |RemoteReply|.
7174 This function is not available in the |sandbox|.
7175 {only available when compiled with the |+clientserver| feature}
7176 Note: Any errors will cause a local error message to be issued
7177 and the result will be the empty string.
7178
7179 Variables will be evaluated in the global namespace,
7180 independent of a function currently being active. Except
7181 when in debug mode, then local function variables and
7182 arguments can be evaluated.
7183
7184 Examples: >
7185 :echo remote_expr("gvim", "2+2")
7186 :echo remote_expr("gvim1", "b:current_syntax")
7187<
7188 Can also be used as a |method|: >
7189 ServerName()->remote_expr(expr)
7190
7191remote_foreground({server}) *remote_foreground()*
7192 Move the Vim server with the name {server} to the foreground.
Bram Moolenaar944697a2022-02-20 19:48:20 +00007193 The {server} argument is a string, also see |{server}|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007194 This works like: >
7195 remote_expr({server}, "foreground()")
7196< Except that on Win32 systems the client does the work, to work
7197 around the problem that the OS doesn't always allow the server
7198 to bring itself to the foreground.
7199 Note: This does not restore the window if it was minimized,
7200 like foreground() does.
7201 This function is not available in the |sandbox|.
7202
7203 Can also be used as a |method|: >
7204 ServerName()->remote_foreground()
7205
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01007206< {only in the Win32, Motif and GTK GUI versions and the
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007207 Win32 console version}
7208
7209
7210remote_peek({serverid} [, {retvar}]) *remote_peek()*
7211 Returns a positive number if there are available strings
7212 from {serverid}. Copies any reply string into the variable
7213 {retvar} if specified. {retvar} must be a string with the
7214 name of a variable.
7215 Returns zero if none are available.
7216 Returns -1 if something is wrong.
7217 See also |clientserver|.
7218 This function is not available in the |sandbox|.
7219 {only available when compiled with the |+clientserver| feature}
7220 Examples: >
Bram Moolenaarf269eab2022-10-03 18:04:35 +01007221 :let repl = ""
7222 :echo "PEEK: " .. remote_peek(id, "repl") .. ": " .. repl
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007223
7224< Can also be used as a |method|: >
7225 ServerId()->remote_peek()
7226
7227remote_read({serverid}, [{timeout}]) *remote_read()*
7228 Return the oldest available reply from {serverid} and consume
7229 it. Unless a {timeout} in seconds is given, it blocks until a
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007230 reply is available. Returns an empty string, if a reply is
7231 not available or on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007232 See also |clientserver|.
7233 This function is not available in the |sandbox|.
7234 {only available when compiled with the |+clientserver| feature}
7235 Example: >
7236 :echo remote_read(id)
7237
7238< Can also be used as a |method|: >
7239 ServerId()->remote_read()
7240<
7241 *remote_send()* *E241*
7242remote_send({server}, {string} [, {idvar}])
Bram Moolenaar944697a2022-02-20 19:48:20 +00007243 Send the {string} to {server}. The {server} argument is a
7244 string, also see |{server}|.
7245
7246 The string is sent as input keys and the function returns
7247 immediately. At the Vim server the keys are not mapped
7248 |:map|.
7249
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007250 If {idvar} is present, it is taken as the name of a variable
7251 and a {serverid} for later use with remote_read() is stored
7252 there.
Bram Moolenaar944697a2022-02-20 19:48:20 +00007253
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007254 See also |clientserver| |RemoteReply|.
7255 This function is not available in the |sandbox|.
7256 {only available when compiled with the |+clientserver| feature}
7257
7258 Note: Any errors will be reported in the server and may mess
7259 up the display.
7260 Examples: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007261 :echo remote_send("gvim", ":DropAndReply " .. file, "serverid") ..
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007262 \ remote_read(serverid)
7263
7264 :autocmd NONE RemoteReply *
7265 \ echo remote_read(expand("<amatch>"))
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007266 :echo remote_send("gvim", ":sleep 10 | echo " ..
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007267 \ 'server2client(expand("<client>"), "HELLO")<CR>')
7268<
7269 Can also be used as a |method|: >
7270 ServerName()->remote_send(keys)
7271<
7272 *remote_startserver()* *E941* *E942*
7273remote_startserver({name})
7274 Become the server {name}. This fails if already running as a
7275 server, when |v:servername| is not empty.
7276
7277 Can also be used as a |method|: >
7278 ServerName()->remote_startserver()
7279
7280< {only available when compiled with the |+clientserver| feature}
7281
Bram Moolenaarf269eab2022-10-03 18:04:35 +01007282remove({list}, {idx})
7283remove({list}, {idx}, {end}) *remove()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007284 Without {end}: Remove the item at {idx} from |List| {list} and
7285 return the item.
7286 With {end}: Remove items from {idx} to {end} (inclusive) and
7287 return a |List| with these items. When {idx} points to the same
7288 item as {end} a list with one item is returned. When {end}
7289 points to an item before {idx} this is an error.
7290 See |list-index| for possible values of {idx} and {end}.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007291 Returns zero on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007292 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007293 :echo "last item: " .. remove(mylist, -1)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007294 :call remove(mylist, 0, 9)
7295<
7296 Use |delete()| to remove a file.
7297
7298 Can also be used as a |method|: >
7299 mylist->remove(idx)
7300
Bram Moolenaarf269eab2022-10-03 18:04:35 +01007301remove({blob}, {idx})
7302remove({blob}, {idx}, {end})
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007303 Without {end}: Remove the byte at {idx} from |Blob| {blob} and
7304 return the byte.
7305 With {end}: Remove bytes from {idx} to {end} (inclusive) and
7306 return a |Blob| with these bytes. When {idx} points to the same
7307 byte as {end} a |Blob| with one byte is returned. When {end}
7308 points to a byte before {idx} this is an error.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007309 Returns zero on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007310 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007311 :echo "last byte: " .. remove(myblob, -1)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007312 :call remove(mylist, 0, 9)
7313
7314remove({dict}, {key})
7315 Remove the entry from {dict} with key {key} and return it.
7316 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007317 :echo "removed " .. remove(dict, "one")
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007318< If there is no {key} in {dict} this is an error.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007319 Returns zero on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007320
7321rename({from}, {to}) *rename()*
7322 Rename the file by the name {from} to the name {to}. This
7323 should also work to move files across file systems. The
7324 result is a Number, which is 0 if the file was renamed
7325 successfully, and non-zero when the renaming failed.
7326 NOTE: If {to} exists it is overwritten without warning.
7327 This function is not available in the |sandbox|.
7328
7329 Can also be used as a |method|: >
7330 GetOldName()->rename(newname)
7331
7332repeat({expr}, {count}) *repeat()*
7333 Repeat {expr} {count} times and return the concatenated
7334 result. Example: >
7335 :let separator = repeat('-', 80)
7336< When {count} is zero or negative the result is empty.
Bakudankun375141e2022-09-09 18:46:47 +01007337 When {expr} is a |List| or a |Blob| the result is {expr}
7338 concatenated {count} times. Example: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007339 :let longlist = repeat(['a', 'b'], 3)
7340< Results in ['a', 'b', 'a', 'b', 'a', 'b'].
7341
7342 Can also be used as a |method|: >
7343 mylist->repeat(count)
7344
7345resolve({filename}) *resolve()* *E655*
7346 On MS-Windows, when {filename} is a shortcut (a .lnk file),
7347 returns the path the shortcut points to in a simplified form.
7348 When {filename} is a symbolic link or junction point, return
7349 the full path to the target. If the target of junction is
7350 removed, return {filename}.
7351 On Unix, repeat resolving symbolic links in all path
7352 components of {filename} and return the simplified result.
7353 To cope with link cycles, resolving of symbolic links is
7354 stopped after 100 iterations.
7355 On other systems, return the simplified {filename}.
7356 The simplification step is done as by |simplify()|.
7357 resolve() keeps a leading path component specifying the
7358 current directory (provided the result is still a relative
7359 path name) and also keeps a trailing path separator.
7360
7361 Can also be used as a |method|: >
7362 GetName()->resolve()
7363
7364reverse({object}) *reverse()*
7365 Reverse the order of items in {object} in-place.
7366 {object} can be a |List| or a |Blob|.
7367 Returns {object}.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007368 Returns zero if {object} is not a List or a Blob.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007369 If you want an object to remain unmodified make a copy first: >
7370 :let revlist = reverse(copy(mylist))
7371< Can also be used as a |method|: >
7372 mylist->reverse()
7373
7374round({expr}) *round()*
7375 Round off {expr} to the nearest integral value and return it
7376 as a |Float|. If {expr} lies halfway between two integral
7377 values, then use the larger one (away from zero).
7378 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007379 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007380 Examples: >
7381 echo round(0.456)
7382< 0.0 >
7383 echo round(4.5)
7384< 5.0 >
7385 echo round(-4.5)
7386< -5.0
7387
7388 Can also be used as a |method|: >
7389 Compute()->round()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007390
7391rubyeval({expr}) *rubyeval()*
7392 Evaluate Ruby expression {expr} and return its result
7393 converted to Vim data structures.
7394 Numbers, floats and strings are returned as they are (strings
7395 are copied though).
7396 Arrays are represented as Vim |List| type.
7397 Hashes are represented as Vim |Dictionary| type.
7398 Other objects are represented as strings resulted from their
7399 "Object#to_s" method.
7400 Note that in a `:def` function local variables are not visible
7401 to {expr}.
7402
7403 Can also be used as a |method|: >
7404 GetRubyExpr()->rubyeval()
7405
7406< {only available when compiled with the |+ruby| feature}
7407
7408screenattr({row}, {col}) *screenattr()*
7409 Like |screenchar()|, but return the attribute. This is a rather
7410 arbitrary number that can only be used to compare to the
7411 attribute at other positions.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007412 Returns -1 when row or col is out of range.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007413
7414 Can also be used as a |method|: >
7415 GetRow()->screenattr(col)
7416
7417screenchar({row}, {col}) *screenchar()*
7418 The result is a Number, which is the character at position
7419 [row, col] on the screen. This works for every possible
7420 screen position, also status lines, window separators and the
7421 command line. The top left position is row one, column one
7422 The character excludes composing characters. For double-byte
7423 encodings it may only be the first byte.
7424 This is mainly to be used for testing.
7425 Returns -1 when row or col is out of range.
7426
7427 Can also be used as a |method|: >
7428 GetRow()->screenchar(col)
7429
7430screenchars({row}, {col}) *screenchars()*
7431 The result is a |List| of Numbers. The first number is the same
7432 as what |screenchar()| returns. Further numbers are
7433 composing characters on top of the base character.
7434 This is mainly to be used for testing.
7435 Returns an empty List when row or col is out of range.
7436
7437 Can also be used as a |method|: >
7438 GetRow()->screenchars(col)
7439
7440screencol() *screencol()*
7441 The result is a Number, which is the current screen column of
7442 the cursor. The leftmost column has number 1.
7443 This function is mainly used for testing.
7444
7445 Note: Always returns the current screen column, thus if used
7446 in a command (e.g. ":echo screencol()") it will return the
7447 column inside the command line, which is 1 when the command is
7448 executed. To get the cursor position in the file use one of
7449 the following mappings: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007450 nnoremap <expr> GG ":echom " .. screencol() .. "\n"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007451 nnoremap <silent> GG :echom screencol()<CR>
7452 nnoremap GG <Cmd>echom screencol()<CR>
7453<
7454screenpos({winid}, {lnum}, {col}) *screenpos()*
7455 The result is a Dict with the screen position of the text
7456 character in window {winid} at buffer line {lnum} and column
7457 {col}. {col} is a one-based byte index.
7458 The Dict has these members:
7459 row screen row
7460 col first screen column
7461 endcol last screen column
7462 curscol cursor screen column
7463 If the specified position is not visible, all values are zero.
7464 The "endcol" value differs from "col" when the character
7465 occupies more than one screen cell. E.g. for a Tab "col" can
7466 be 1 and "endcol" can be 8.
7467 The "curscol" value is where the cursor would be placed. For
7468 a Tab it would be the same as "endcol", while for a double
7469 width character it would be the same as "col".
7470 The |conceal| feature is ignored here, the column numbers are
7471 as if 'conceallevel' is zero. You can set the cursor to the
7472 right position and use |screencol()| to get the value with
7473 |conceal| taken into account.
Bram Moolenaar944697a2022-02-20 19:48:20 +00007474 If the position is in a closed fold the screen position of the
7475 first character is returned, {col} is not used.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01007476 Returns an empty Dict if {winid} is invalid.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007477
7478 Can also be used as a |method|: >
7479 GetWinid()->screenpos(lnum, col)
7480
7481screenrow() *screenrow()*
7482 The result is a Number, which is the current screen row of the
7483 cursor. The top line has number one.
7484 This function is mainly used for testing.
7485 Alternatively you can use |winline()|.
7486
7487 Note: Same restrictions as with |screencol()|.
7488
7489screenstring({row}, {col}) *screenstring()*
7490 The result is a String that contains the base character and
7491 any composing characters at position [row, col] on the screen.
7492 This is like |screenchars()| but returning a String with the
7493 characters.
7494 This is mainly to be used for testing.
7495 Returns an empty String when row or col is out of range.
7496
7497 Can also be used as a |method|: >
7498 GetRow()->screenstring(col)
7499<
7500 *search()*
7501search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
7502 Search for regexp pattern {pattern}. The search starts at the
7503 cursor position (you can use |cursor()| to set it).
7504
7505 When a match has been found its line number is returned.
7506 If there is no match a 0 is returned and the cursor doesn't
7507 move. No error message is given.
7508
7509 {flags} is a String, which can contain these character flags:
7510 'b' search Backward instead of forward
7511 'c' accept a match at the Cursor position
7512 'e' move to the End of the match
7513 'n' do Not move the cursor
7514 'p' return number of matching sub-Pattern (see below)
7515 's' Set the ' mark at the previous location of the cursor
7516 'w' Wrap around the end of the file
7517 'W' don't Wrap around the end of the file
7518 'z' start searching at the cursor column instead of zero
7519 If neither 'w' or 'W' is given, the 'wrapscan' option applies.
7520
7521 If the 's' flag is supplied, the ' mark is set, only if the
7522 cursor is moved. The 's' flag cannot be combined with the 'n'
7523 flag.
7524
7525 'ignorecase', 'smartcase' and 'magic' are used.
7526
7527 When the 'z' flag is not given, forward searching always
7528 starts in column zero and then matches before the cursor are
7529 skipped. When the 'c' flag is present in 'cpo' the next
7530 search starts after the match. Without the 'c' flag the next
Bram Moolenaarfd999452022-08-24 18:30:14 +01007531 search starts one column after the start of the match. This
7532 matters for overlapping matches. See |cpo-c|. You can also
7533 insert "\ze" to change where the match ends, see |/\ze|.
7534
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007535 When searching backwards and the 'z' flag is given then the
7536 search starts in column zero, thus no match in the current
7537 line will be found (unless wrapping around the end of the
7538 file).
7539
7540 When the {stopline} argument is given then the search stops
7541 after searching this line. This is useful to restrict the
7542 search to a range of lines. Examples: >
7543 let match = search('(', 'b', line("w0"))
7544 let end = search('END', '', line("w$"))
7545< When {stopline} is used and it is not zero this also implies
7546 that the search does not wrap around the end of the file.
7547 A zero value is equal to not giving the argument.
Bram Moolenaar2ecbe532022-07-29 21:36:21 +01007548 *E1285* *E1286* *E1287* *E1288* *E1289*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007549 When the {timeout} argument is given the search stops when
7550 more than this many milliseconds have passed. Thus when
7551 {timeout} is 500 the search stops after half a second.
7552 The value must not be negative. A zero value is like not
7553 giving the argument.
7554 {only available when compiled with the |+reltime| feature}
7555
7556 If the {skip} expression is given it is evaluated with the
7557 cursor positioned on the start of a match. If it evaluates to
7558 non-zero this match is skipped. This can be used, for
7559 example, to skip a match in a comment or a string.
7560 {skip} can be a string, which is evaluated as an expression, a
7561 function reference or a lambda.
7562 When {skip} is omitted or empty, every match is accepted.
7563 When evaluating {skip} causes an error the search is aborted
7564 and -1 returned.
7565 *search()-sub-match*
7566 With the 'p' flag the returned value is one more than the
7567 first sub-match in \(\). One if none of them matched but the
7568 whole pattern did match.
7569 To get the column number too use |searchpos()|.
7570
7571 The cursor will be positioned at the match, unless the 'n'
7572 flag is used.
7573
7574 Example (goes over all files in the argument list): >
7575 :let n = 1
7576 :while n <= argc() " loop over all files in arglist
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007577 : exe "argument " .. n
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007578 : " start at the last char in the file and wrap for the
7579 : " first search to find match at start of file
7580 : normal G$
7581 : let flags = "w"
7582 : while search("foo", flags) > 0
7583 : s/foo/bar/g
7584 : let flags = "W"
7585 : endwhile
7586 : update " write the file if modified
7587 : let n = n + 1
7588 :endwhile
7589<
7590 Example for using some flags: >
7591 :echo search('\<if\|\(else\)\|\(endif\)', 'ncpe')
7592< This will search for the keywords "if", "else", and "endif"
7593 under or after the cursor. Because of the 'p' flag, it
7594 returns 1, 2, or 3 depending on which keyword is found, or 0
7595 if the search fails. With the cursor on the first word of the
7596 line:
7597 if (foo == 0) | let foo = foo + 1 | endif ~
7598 the function returns 1. Without the 'c' flag, the function
7599 finds the "endif" and returns 3. The same thing happens
7600 without the 'e' flag if the cursor is on the "f" of "if".
7601 The 'n' flag tells the function not to move the cursor.
7602
7603 Can also be used as a |method|: >
7604 GetPattern()->search()
7605
7606searchcount([{options}]) *searchcount()*
7607 Get or update the last search count, like what is displayed
7608 without the "S" flag in 'shortmess'. This works even if
7609 'shortmess' does contain the "S" flag.
7610
7611 This returns a |Dictionary|. The dictionary is empty if the
7612 previous pattern was not set and "pattern" was not specified.
7613
7614 key type meaning ~
7615 current |Number| current position of match;
7616 0 if the cursor position is
7617 before the first match
7618 exact_match |Boolean| 1 if "current" is matched on
7619 "pos", otherwise 0
7620 total |Number| total count of matches found
7621 incomplete |Number| 0: search was fully completed
7622 1: recomputing was timed out
7623 2: max count exceeded
7624
7625 For {options} see further down.
7626
7627 To get the last search count when |n| or |N| was pressed, call
7628 this function with `recompute: 0` . This sometimes returns
7629 wrong information because |n| and |N|'s maximum count is 99.
7630 If it exceeded 99 the result must be max count + 1 (100). If
7631 you want to get correct information, specify `recompute: 1`: >
7632
7633 " result == maxcount + 1 (100) when many matches
7634 let result = searchcount(#{recompute: 0})
7635
7636 " Below returns correct result (recompute defaults
7637 " to 1)
7638 let result = searchcount()
7639<
Bram Moolenaarb529cfb2022-07-25 15:42:07 +01007640 The function is useful to add the count to 'statusline': >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007641 function! LastSearchCount() abort
7642 let result = searchcount(#{recompute: 0})
7643 if empty(result)
7644 return ''
7645 endif
7646 if result.incomplete ==# 1 " timed out
7647 return printf(' /%s [?/??]', @/)
7648 elseif result.incomplete ==# 2 " max count exceeded
7649 if result.total > result.maxcount &&
7650 \ result.current > result.maxcount
7651 return printf(' /%s [>%d/>%d]', @/,
7652 \ result.current, result.total)
7653 elseif result.total > result.maxcount
7654 return printf(' /%s [%d/>%d]', @/,
7655 \ result.current, result.total)
7656 endif
7657 endif
7658 return printf(' /%s [%d/%d]', @/,
7659 \ result.current, result.total)
7660 endfunction
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007661 let &statusline ..= '%{LastSearchCount()}'
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007662
7663 " Or if you want to show the count only when
7664 " 'hlsearch' was on
Bram Moolenaarc51cf032022-02-26 12:25:45 +00007665 " let &statusline ..=
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007666 " \ '%{v:hlsearch ? LastSearchCount() : ""}'
7667<
7668 You can also update the search count, which can be useful in a
7669 |CursorMoved| or |CursorMovedI| autocommand: >
7670
7671 autocmd CursorMoved,CursorMovedI *
7672 \ let s:searchcount_timer = timer_start(
7673 \ 200, function('s:update_searchcount'))
7674 function! s:update_searchcount(timer) abort
7675 if a:timer ==# s:searchcount_timer
7676 call searchcount(#{
7677 \ recompute: 1, maxcount: 0, timeout: 100})
7678 redrawstatus
7679 endif
7680 endfunction
7681<
7682 This can also be used to count matched texts with specified
7683 pattern in the current buffer using "pattern": >
7684
7685 " Count '\<foo\>' in this buffer
7686 " (Note that it also updates search count)
7687 let result = searchcount(#{pattern: '\<foo\>'})
7688
7689 " To restore old search count by old pattern,
7690 " search again
7691 call searchcount()
7692<
7693 {options} must be a |Dictionary|. It can contain:
7694 key type meaning ~
7695 recompute |Boolean| if |TRUE|, recompute the count
7696 like |n| or |N| was executed.
7697 otherwise returns the last
7698 computed result (when |n| or
7699 |N| was used when "S" is not
7700 in 'shortmess', or this
7701 function was called).
7702 (default: |TRUE|)
7703 pattern |String| recompute if this was given
7704 and different with |@/|.
7705 this works as same as the
7706 below command is executed
7707 before calling this function >
7708 let @/ = pattern
7709< (default: |@/|)
7710 timeout |Number| 0 or negative number is no
7711 timeout. timeout milliseconds
7712 for recomputing the result
7713 (default: 0)
7714 maxcount |Number| 0 or negative number is no
7715 limit. max count of matched
7716 text while recomputing the
7717 result. if search exceeded
7718 total count, "total" value
7719 becomes `maxcount + 1`
7720 (default: 99)
7721 pos |List| `[lnum, col, off]` value
7722 when recomputing the result.
7723 this changes "current" result
7724 value. see |cursor()|,
7725 |getpos()|
7726 (default: cursor's position)
7727
7728 Can also be used as a |method|: >
7729 GetSearchOpts()->searchcount()
7730<
7731searchdecl({name} [, {global} [, {thisblock}]]) *searchdecl()*
7732 Search for the declaration of {name}.
7733
7734 With a non-zero {global} argument it works like |gD|, find
7735 first match in the file. Otherwise it works like |gd|, find
7736 first match in the function.
7737
7738 With a non-zero {thisblock} argument matches in a {} block
7739 that ends before the cursor position are ignored. Avoids
7740 finding variable declarations only valid in another scope.
7741
7742 Moves the cursor to the found match.
7743 Returns zero for success, non-zero for failure.
7744 Example: >
7745 if searchdecl('myvar') == 0
7746 echo getline('.')
7747 endif
7748<
7749 Can also be used as a |method|: >
7750 GetName()->searchdecl()
7751<
7752 *searchpair()*
7753searchpair({start}, {middle}, {end} [, {flags} [, {skip}
7754 [, {stopline} [, {timeout}]]]])
7755 Search for the match of a nested start-end pair. This can be
7756 used to find the "endif" that matches an "if", while other
7757 if/endif pairs in between are ignored.
7758 The search starts at the cursor. The default is to search
7759 forward, include 'b' in {flags} to search backward.
7760 If a match is found, the cursor is positioned at it and the
7761 line number is returned. If no match is found 0 or -1 is
7762 returned and the cursor doesn't move. No error message is
7763 given.
7764
7765 {start}, {middle} and {end} are patterns, see |pattern|. They
7766 must not contain \( \) pairs. Use of \%( \) is allowed. When
7767 {middle} is not empty, it is found when searching from either
7768 direction, but only when not in a nested start-end pair. A
7769 typical use is: >
7770 searchpair('\<if\>', '\<else\>', '\<endif\>')
7771< By leaving {middle} empty the "else" is skipped.
7772
7773 {flags} 'b', 'c', 'n', 's', 'w' and 'W' are used like with
7774 |search()|. Additionally:
7775 'r' Repeat until no more matches found; will find the
7776 outer pair. Implies the 'W' flag.
7777 'm' Return number of matches instead of line number with
7778 the match; will be > 1 when 'r' is used.
7779 Note: it's nearly always a good idea to use the 'W' flag, to
7780 avoid wrapping around the end of the file.
7781
7782 When a match for {start}, {middle} or {end} is found, the
7783 {skip} expression is evaluated with the cursor positioned on
7784 the start of the match. It should return non-zero if this
7785 match is to be skipped. E.g., because it is inside a comment
7786 or a string.
7787 When {skip} is omitted or empty, every match is accepted.
7788 When evaluating {skip} causes an error the search is aborted
7789 and -1 returned.
7790 {skip} can be a string, a lambda, a funcref or a partial.
7791 Anything else makes the function fail.
7792 In a `:def` function when the {skip} argument is a string
7793 constant it is compiled into instructions.
7794
7795 For {stopline} and {timeout} see |search()|.
7796
7797 The value of 'ignorecase' is used. 'magic' is ignored, the
7798 patterns are used like it's on.
7799
7800 The search starts exactly at the cursor. A match with
7801 {start}, {middle} or {end} at the next character, in the
7802 direction of searching, is the first one found. Example: >
7803 if 1
7804 if 2
7805 endif 2
7806 endif 1
7807< When starting at the "if 2", with the cursor on the "i", and
7808 searching forwards, the "endif 2" is found. When starting on
7809 the character just before the "if 2", the "endif 1" will be
7810 found. That's because the "if 2" will be found first, and
7811 then this is considered to be a nested if/endif from "if 2" to
7812 "endif 2".
7813 When searching backwards and {end} is more than one character,
7814 it may be useful to put "\zs" at the end of the pattern, so
7815 that when the cursor is inside a match with the end it finds
7816 the matching start.
7817
7818 Example, to find the "endif" command in a Vim script: >
7819
7820 :echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W',
7821 \ 'getline(".") =~ "^\\s*\""')
7822
7823< The cursor must be at or after the "if" for which a match is
7824 to be found. Note that single-quote strings are used to avoid
7825 having to double the backslashes. The skip expression only
7826 catches comments at the start of a line, not after a command.
7827 Also, a word "en" or "if" halfway a line is considered a
7828 match.
7829 Another example, to search for the matching "{" of a "}": >
7830
7831 :echo searchpair('{', '', '}', 'bW')
7832
7833< This works when the cursor is at or before the "}" for which a
7834 match is to be found. To reject matches that syntax
7835 highlighting recognized as strings: >
7836
7837 :echo searchpair('{', '', '}', 'bW',
7838 \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
7839<
7840 *searchpairpos()*
7841searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
7842 [, {stopline} [, {timeout}]]]])
7843 Same as |searchpair()|, but returns a |List| with the line and
7844 column position of the match. The first element of the |List|
7845 is the line number and the second element is the byte index of
7846 the column position of the match. If no match is found,
7847 returns [0, 0]. >
7848
7849 :let [lnum,col] = searchpairpos('{', '', '}', 'n')
7850<
7851 See |match-parens| for a bigger and more useful example.
7852
7853 *searchpos()*
7854searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
7855 Same as |search()|, but returns a |List| with the line and
7856 column position of the match. The first element of the |List|
7857 is the line number and the second element is the byte index of
7858 the column position of the match. If no match is found,
7859 returns [0, 0].
7860 Example: >
7861 :let [lnum, col] = searchpos('mypattern', 'n')
7862
7863< When the 'p' flag is given then there is an extra item with
7864 the sub-pattern match number |search()-sub-match|. Example: >
7865 :let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np')
7866< In this example "submatch" is 2 when a lowercase letter is
7867 found |/\l|, 3 when an uppercase letter is found |/\u|.
7868
7869 Can also be used as a |method|: >
7870 GetPattern()->searchpos()
7871
7872server2client({clientid}, {string}) *server2client()*
7873 Send a reply string to {clientid}. The most recent {clientid}
7874 that sent a string can be retrieved with expand("<client>").
7875 {only available when compiled with the |+clientserver| feature}
7876 Returns zero for success, -1 for failure.
7877 Note:
7878 This id has to be stored before the next command can be
7879 received. I.e. before returning from the received command and
7880 before calling any commands that waits for input.
7881 See also |clientserver|.
7882 Example: >
7883 :echo server2client(expand("<client>"), "HELLO")
7884
7885< Can also be used as a |method|: >
7886 GetClientId()->server2client(string)
7887<
7888serverlist() *serverlist()*
7889 Return a list of available server names, one per line.
7890 When there are no servers or the information is not available
7891 an empty string is returned. See also |clientserver|.
7892 {only available when compiled with the |+clientserver| feature}
7893 Example: >
7894 :echo serverlist()
7895<
7896setbufline({buf}, {lnum}, {text}) *setbufline()*
7897 Set line {lnum} to {text} in buffer {buf}. This works like
7898 |setline()| for the specified buffer.
7899
7900 This function works only for loaded buffers. First call
7901 |bufload()| if needed.
7902
7903 To insert lines use |appendbufline()|.
7904 Any text properties in {lnum} are cleared.
7905
Bram Moolenaarcd9c8d42022-11-05 23:46:43 +00007906 {text} can be a string to set one line, or a List of strings
7907 to set multiple lines. If the List extends below the last
7908 line then those lines are added. If the List is empty then
7909 nothing is changed and zero is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007910
7911 For the use of {buf}, see |bufname()| above.
7912
7913 {lnum} is used like with |setline()|.
7914 Use "$" to refer to the last line in buffer {buf}.
7915 When {lnum} is just below the last line the {text} will be
7916 added below the last line.
7917
7918 When {buf} is not a valid buffer, the buffer is not loaded or
7919 {lnum} is not valid then 1 is returned. In |Vim9| script an
7920 error is given.
7921 On success 0 is returned.
7922
7923 Can also be used as a |method|, the base is passed as the
7924 third argument: >
7925 GetText()->setbufline(buf, lnum)
7926
7927setbufvar({buf}, {varname}, {val}) *setbufvar()*
7928 Set option or local variable {varname} in buffer {buf} to
7929 {val}.
7930 This also works for a global or local window option, but it
7931 doesn't work for a global or local window variable.
7932 For a local window option the global value is unchanged.
7933 For the use of {buf}, see |bufname()| above.
7934 The {varname} argument is a string.
7935 Note that the variable name without "b:" must be used.
7936 Examples: >
7937 :call setbufvar(1, "&mod", 1)
7938 :call setbufvar("todo", "myvar", "foobar")
7939< This function is not available in the |sandbox|.
7940
7941 Can also be used as a |method|, the base is passed as the
7942 third argument: >
7943 GetValue()->setbufvar(buf, varname)
7944
7945
7946setcellwidths({list}) *setcellwidths()*
7947 Specify overrides for cell widths of character ranges. This
Bram Moolenaarb59ae592022-11-23 23:46:31 +00007948 tells Vim how wide characters are when displayed in the
7949 terminal, counted in screen cells. The values override
7950 'ambiwidth'. Example: >
7951 call setcellwidths([
7952 \ [0x111, 0x111, 1],
7953 \ [0x2194, 0x2199, 2],
7954 \ ])
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007955
Bram Moolenaarb59ae592022-11-23 23:46:31 +00007956< The {list} argument is a List of Lists with each three
7957 numbers: [{low}, {high}, {width}]. *E1109* *E1110*
7958 {low} and {high} can be the same, in which case this refers to
7959 one character. Otherwise it is the range of characters from
7960 {low} to {high} (inclusive). *E1111* *E1114*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007961 Only characters with value 0x100 and higher can be used.
7962
Bram Moolenaarb59ae592022-11-23 23:46:31 +00007963 {width} must be either 1 or 2, indicating the character width
7964 in screen cells. *E1112*
7965 An error is given if the argument is invalid, also when a
7966 range overlaps with another. *E1113*
7967
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007968 If the new value causes 'fillchars' or 'listchars' to become
7969 invalid it is rejected and an error is given.
7970
Bram Moolenaarb59ae592022-11-23 23:46:31 +00007971 To clear the overrides pass an empty {list}: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007972 setcellwidths([]);
Bram Moolenaarb59ae592022-11-23 23:46:31 +00007973
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007974< You can use the script $VIMRUNTIME/tools/emoji_list.vim to see
Bram Moolenaarb59ae592022-11-23 23:46:31 +00007975 the effect for known emoji characters. Move the cursor
7976 through the text to check if the cell widths of your terminal
7977 match with what Vim knows about each emoji. If it doesn't
7978 look right you need to adjust the {list} argument.
7979
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00007980
7981setcharpos({expr}, {list}) *setcharpos()*
7982 Same as |setpos()| but uses the specified column number as the
7983 character index instead of the byte index in the line.
7984
7985 Example:
7986 With the text "여보세요" in line 8: >
7987 call setcharpos('.', [0, 8, 4, 0])
7988< positions the cursor on the fourth character '요'. >
7989 call setpos('.', [0, 8, 4, 0])
7990< positions the cursor on the second character '보'.
7991
7992 Can also be used as a |method|: >
7993 GetPosition()->setcharpos('.')
7994
7995setcharsearch({dict}) *setcharsearch()*
7996 Set the current character search information to {dict},
7997 which contains one or more of the following entries:
7998
7999 char character which will be used for a subsequent
8000 |,| or |;| command; an empty string clears the
8001 character search
8002 forward direction of character search; 1 for forward,
8003 0 for backward
8004 until type of character search; 1 for a |t| or |T|
8005 character search, 0 for an |f| or |F|
8006 character search
8007
8008 This can be useful to save/restore a user's character search
8009 from a script: >
8010 :let prevsearch = getcharsearch()
8011 :" Perform a command which clobbers user's search
8012 :call setcharsearch(prevsearch)
8013< Also see |getcharsearch()|.
8014
8015 Can also be used as a |method|: >
8016 SavedSearch()->setcharsearch()
8017
Shougo Matsushita07ea5f12022-08-27 12:22:25 +01008018setcmdline({str} [, {pos}]) *setcmdline()*
8019 Set the command line to {str} and set the cursor position to
8020 {pos}.
8021 If {pos} is omitted, the cursor is positioned after the text.
8022 Returns 0 when successful, 1 when not editing the command
8023 line.
8024
8025 Can also be used as a |method|: >
8026 GetText()->setcmdline()
8027
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008028setcmdpos({pos}) *setcmdpos()*
8029 Set the cursor position in the command line to byte position
8030 {pos}. The first position is 1.
8031 Use |getcmdpos()| to obtain the current position.
8032 Only works while editing the command line, thus you must use
8033 |c_CTRL-\_e|, |c_CTRL-R_=| or |c_CTRL-R_CTRL-R| with '='. For
8034 |c_CTRL-\_e| and |c_CTRL-R_CTRL-R| with '=' the position is
8035 set after the command line is set to the expression. For
8036 |c_CTRL-R_=| it is set after evaluating the expression but
8037 before inserting the resulting text.
8038 When the number is too big the cursor is put at the end of the
8039 line. A number smaller than one has undefined results.
Shougo Matsushita07ea5f12022-08-27 12:22:25 +01008040 Returns 0 when successful, 1 when not editing the command
8041 line.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008042
8043 Can also be used as a |method|: >
8044 GetPos()->setcmdpos()
8045
8046setcursorcharpos({lnum}, {col} [, {off}]) *setcursorcharpos()*
8047setcursorcharpos({list})
8048 Same as |cursor()| but uses the specified column number as the
8049 character index instead of the byte index in the line.
8050
8051 Example:
8052 With the text "여보세요" in line 4: >
8053 call setcursorcharpos(4, 3)
8054< positions the cursor on the third character '세'. >
8055 call cursor(4, 3)
8056< positions the cursor on the first character '여'.
8057
8058 Can also be used as a |method|: >
8059 GetCursorPos()->setcursorcharpos()
8060
8061
8062setenv({name}, {val}) *setenv()*
8063 Set environment variable {name} to {val}. Example: >
8064 call setenv('HOME', '/home/myhome')
8065
8066< When {val} is |v:null| the environment variable is deleted.
8067 See also |expr-env|.
8068
8069 Can also be used as a |method|, the base is passed as the
8070 second argument: >
8071 GetPath()->setenv('PATH')
8072
8073setfperm({fname}, {mode}) *setfperm()* *chmod*
8074 Set the file permissions for {fname} to {mode}.
8075 {mode} must be a string with 9 characters. It is of the form
8076 "rwxrwxrwx", where each group of "rwx" flags represent, in
8077 turn, the permissions of the owner of the file, the group the
8078 file belongs to, and other users. A '-' character means the
8079 permission is off, any other character means on. Multi-byte
8080 characters are not supported.
8081
8082 For example "rw-r-----" means read-write for the user,
8083 readable by the group, not accessible by others. "xx-x-----"
8084 would do the same thing.
8085
8086 Returns non-zero for success, zero for failure.
8087
8088 Can also be used as a |method|: >
8089 GetFilename()->setfperm(mode)
8090<
8091 To read permissions see |getfperm()|.
8092
8093
8094setline({lnum}, {text}) *setline()*
8095 Set line {lnum} of the current buffer to {text}. To insert
8096 lines use |append()|. To set lines in another buffer use
8097 |setbufline()|. Any text properties in {lnum} are cleared.
8098
8099 {lnum} is used like with |getline()|.
8100 When {lnum} is just below the last line the {text} will be
8101 added below the last line.
8102 {text} can be any type or a List of any type, each item is
Bram Moolenaarcd9c8d42022-11-05 23:46:43 +00008103 converted to a String. When {text} is an empty List then
8104 nothing is changed and FALSE is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008105
8106 If this succeeds, FALSE is returned. If this fails (most likely
8107 because {lnum} is invalid) TRUE is returned.
8108 In |Vim9| script an error is given if {lnum} is invalid.
8109
8110 Example: >
8111 :call setline(5, strftime("%c"))
8112
8113< When {text} is a |List| then line {lnum} and following lines
8114 will be set to the items in the list. Example: >
8115 :call setline(5, ['aaa', 'bbb', 'ccc'])
8116< This is equivalent to: >
8117 :for [n, l] in [[5, 'aaa'], [6, 'bbb'], [7, 'ccc']]
8118 : call setline(n, l)
8119 :endfor
8120
8121< Note: The '[ and '] marks are not set.
8122
8123 Can also be used as a |method|, the base is passed as the
8124 second argument: >
8125 GetText()->setline(lnum)
8126
8127setloclist({nr}, {list} [, {action} [, {what}]]) *setloclist()*
8128 Create or replace or add to the location list for window {nr}.
8129 {nr} can be the window number or the |window-ID|.
8130 When {nr} is zero the current window is used.
8131
8132 For a location list window, the displayed location list is
8133 modified. For an invalid window number {nr}, -1 is returned.
8134 Otherwise, same as |setqflist()|.
8135 Also see |location-list|.
8136
8137 For {action} see |setqflist-action|.
8138
8139 If the optional {what} dictionary argument is supplied, then
8140 only the items listed in {what} are set. Refer to |setqflist()|
8141 for the list of supported keys in {what}.
8142
8143 Can also be used as a |method|, the base is passed as the
8144 second argument: >
8145 GetLoclist()->setloclist(winnr)
8146
8147setmatches({list} [, {win}]) *setmatches()*
8148 Restores a list of matches saved by |getmatches()| for the
8149 current window. Returns 0 if successful, otherwise -1. All
8150 current matches are cleared before the list is restored. See
8151 example for |getmatches()|.
8152 If {win} is specified, use the window with this number or
8153 window ID instead of the current window.
8154
8155 Can also be used as a |method|: >
8156 GetMatches()->setmatches()
8157<
8158 *setpos()*
8159setpos({expr}, {list})
8160 Set the position for String {expr}. Possible values:
8161 . the cursor
8162 'x mark x
8163
8164 {list} must be a |List| with four or five numbers:
8165 [bufnum, lnum, col, off]
8166 [bufnum, lnum, col, off, curswant]
8167
8168 "bufnum" is the buffer number. Zero can be used for the
8169 current buffer. When setting an uppercase mark "bufnum" is
8170 used for the mark position. For other marks it specifies the
8171 buffer to set the mark in. You can use the |bufnr()| function
8172 to turn a file name into a buffer number.
8173 For setting the cursor and the ' mark "bufnum" is ignored,
8174 since these are associated with a window, not a buffer.
8175 Does not change the jumplist.
8176
8177 "lnum" and "col" are the position in the buffer. The first
8178 column is 1. Use a zero "lnum" to delete a mark. If "col" is
8179 smaller than 1 then 1 is used. To use the character count
8180 instead of the byte count, use |setcharpos()|.
8181
8182 The "off" number is only used when 'virtualedit' is set. Then
8183 it is the offset in screen columns from the start of the
8184 character. E.g., a position within a <Tab> or after the last
8185 character.
8186
8187 The "curswant" number is only used when setting the cursor
8188 position. It sets the preferred column for when moving the
8189 cursor vertically. When the "curswant" number is missing the
8190 preferred column is not set. When it is present and setting a
8191 mark position it is not used.
8192
8193 Note that for '< and '> changing the line number may result in
8194 the marks to be effectively be swapped, so that '< is always
8195 before '>.
8196
8197 Returns 0 when the position could be set, -1 otherwise.
8198 An error message is given if {expr} is invalid.
8199
8200 Also see |setcharpos()|, |getpos()| and |getcurpos()|.
8201
8202 This does not restore the preferred column for moving
8203 vertically; if you set the cursor position with this, |j| and
8204 |k| motions will jump to previous columns! Use |cursor()| to
8205 also set the preferred column. Also see the "curswant" key in
8206 |winrestview()|.
8207
8208 Can also be used as a |method|: >
8209 GetPosition()->setpos('.')
8210
8211setqflist({list} [, {action} [, {what}]]) *setqflist()*
8212 Create or replace or add to the quickfix list.
8213
8214 If the optional {what} dictionary argument is supplied, then
8215 only the items listed in {what} are set. The first {list}
8216 argument is ignored. See below for the supported items in
8217 {what}.
8218 *setqflist-what*
8219 When {what} is not present, the items in {list} are used. Each
8220 item must be a dictionary. Non-dictionary items in {list} are
8221 ignored. Each dictionary item can contain the following
8222 entries:
8223
8224 bufnr buffer number; must be the number of a valid
8225 buffer
8226 filename name of a file; only used when "bufnr" is not
8227 present or it is invalid.
8228 module name of a module; if given it will be used in
8229 quickfix error window instead of the filename.
8230 lnum line number in the file
Bram Moolenaara2baa732022-02-04 16:09:54 +00008231 end_lnum end of lines, if the item spans multiple lines
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008232 pattern search pattern used to locate the error
8233 col column number
8234 vcol when non-zero: "col" is visual column
8235 when zero: "col" is byte index
Bram Moolenaara2baa732022-02-04 16:09:54 +00008236 end_col end column, if the item spans multiple columns
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008237 nr error number
8238 text description of the error
8239 type single-character error type, 'E', 'W', etc.
8240 valid recognized error message
8241
8242 The "col", "vcol", "nr", "type" and "text" entries are
8243 optional. Either "lnum" or "pattern" entry can be used to
8244 locate a matching error line.
8245 If the "filename" and "bufnr" entries are not present or
8246 neither the "lnum" or "pattern" entries are present, then the
8247 item will not be handled as an error line.
8248 If both "pattern" and "lnum" are present then "pattern" will
8249 be used.
8250 If the "valid" entry is not supplied, then the valid flag is
8251 set when "bufnr" is a valid buffer or "filename" exists.
8252 If you supply an empty {list}, the quickfix list will be
8253 cleared.
8254 Note that the list is not exactly the same as what
8255 |getqflist()| returns.
8256
8257 {action} values: *setqflist-action* *E927*
8258 'a' The items from {list} are added to the existing
8259 quickfix list. If there is no existing list, then a
8260 new list is created.
8261
8262 'r' The items from the current quickfix list are replaced
8263 with the items from {list}. This can also be used to
8264 clear the list: >
8265 :call setqflist([], 'r')
8266<
8267 'f' All the quickfix lists in the quickfix stack are
8268 freed.
8269
8270 If {action} is not present or is set to ' ', then a new list
8271 is created. The new quickfix list is added after the current
8272 quickfix list in the stack and all the following lists are
8273 freed. To add a new quickfix list at the end of the stack,
8274 set "nr" in {what} to "$".
8275
8276 The following items can be specified in dictionary {what}:
8277 context quickfix list context. See |quickfix-context|
8278 efm errorformat to use when parsing text from
8279 "lines". If this is not present, then the
8280 'errorformat' option value is used.
8281 See |quickfix-parse|
8282 id quickfix list identifier |quickfix-ID|
8283 idx index of the current entry in the quickfix
8284 list specified by 'id' or 'nr'. If set to '$',
8285 then the last entry in the list is set as the
8286 current entry. See |quickfix-index|
8287 items list of quickfix entries. Same as the {list}
8288 argument.
8289 lines use 'errorformat' to parse a list of lines and
8290 add the resulting entries to the quickfix list
8291 {nr} or {id}. Only a |List| value is supported.
8292 See |quickfix-parse|
8293 nr list number in the quickfix stack; zero
8294 means the current quickfix list and "$" means
8295 the last quickfix list.
8296 quickfixtextfunc
8297 function to get the text to display in the
8298 quickfix window. The value can be the name of
8299 a function or a funcref or a lambda. Refer to
8300 |quickfix-window-function| for an explanation
8301 of how to write the function and an example.
8302 title quickfix list title text. See |quickfix-title|
8303 Unsupported keys in {what} are ignored.
8304 If the "nr" item is not present, then the current quickfix list
8305 is modified. When creating a new quickfix list, "nr" can be
8306 set to a value one greater than the quickfix stack size.
8307 When modifying a quickfix list, to guarantee that the correct
8308 list is modified, "id" should be used instead of "nr" to
8309 specify the list.
8310
8311 Examples (See also |setqflist-examples|): >
8312 :call setqflist([], 'r', {'title': 'My search'})
8313 :call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
8314 :call setqflist([], 'a', {'id':qfid, 'lines':["F1:10:L10"]})
8315<
8316 Returns zero for success, -1 for failure.
8317
8318 This function can be used to create a quickfix list
8319 independent of the 'errorformat' setting. Use a command like
8320 `:cc 1` to jump to the first position.
8321
8322 Can also be used as a |method|, the base is passed as the
8323 second argument: >
8324 GetErrorlist()->setqflist()
8325<
8326 *setreg()*
8327setreg({regname}, {value} [, {options}])
8328 Set the register {regname} to {value}.
8329 If {regname} is "" or "@", the unnamed register '"' is used.
8330 The {regname} argument is a string. In |Vim9-script|
8331 {regname} must be one character.
8332
8333 {value} may be any value returned by |getreg()| or
8334 |getreginfo()|, including a |List| or |Dict|.
8335 If {options} contains "a" or {regname} is upper case,
8336 then the value is appended.
8337
8338 {options} can also contain a register type specification:
8339 "c" or "v" |characterwise| mode
8340 "l" or "V" |linewise| mode
8341 "b" or "<CTRL-V>" |blockwise-visual| mode
8342 If a number immediately follows "b" or "<CTRL-V>" then this is
8343 used as the width of the selection - if it is not specified
8344 then the width of the block is set to the number of characters
8345 in the longest line (counting a <Tab> as 1 character).
8346
8347 If {options} contains no register settings, then the default
8348 is to use character mode unless {value} ends in a <NL> for
8349 string {value} and linewise mode for list {value}. Blockwise
8350 mode is never selected automatically.
8351 Returns zero for success, non-zero for failure.
8352
8353 *E883*
8354 Note: you may not use |List| containing more than one item to
8355 set search and expression registers. Lists containing no
8356 items act like empty strings.
8357
8358 Examples: >
8359 :call setreg(v:register, @*)
8360 :call setreg('*', @%, 'ac')
8361 :call setreg('a', "1\n2\n3", 'b5')
8362 :call setreg('"', { 'points_to': 'a'})
8363
8364< This example shows using the functions to save and restore a
8365 register: >
8366 :let var_a = getreginfo()
8367 :call setreg('a', var_a)
8368< or: >
8369 :let var_a = getreg('a', 1, 1)
8370 :let var_amode = getregtype('a')
8371 ....
8372 :call setreg('a', var_a, var_amode)
8373< Note: you may not reliably restore register value
8374 without using the third argument to |getreg()| as without it
8375 newlines are represented as newlines AND Nul bytes are
8376 represented as newlines as well, see |NL-used-for-Nul|.
8377
8378 You can also change the type of a register by appending
8379 nothing: >
8380 :call setreg('a', '', 'al')
8381
8382< Can also be used as a |method|, the base is passed as the
8383 second argument: >
8384 GetText()->setreg('a')
8385
8386settabvar({tabnr}, {varname}, {val}) *settabvar()*
8387 Set tab-local variable {varname} to {val} in tab page {tabnr}.
8388 |t:var|
8389 The {varname} argument is a string.
8390 Note that autocommands are blocked, side effects may not be
8391 triggered, e.g. when setting 'filetype'.
8392 Note that the variable name without "t:" must be used.
8393 Tabs are numbered starting with one.
8394 This function is not available in the |sandbox|.
8395
8396 Can also be used as a |method|, the base is passed as the
8397 third argument: >
8398 GetValue()->settabvar(tab, name)
8399
8400settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()*
8401 Set option or local variable {varname} in window {winnr} to
8402 {val}.
8403 Tabs are numbered starting with one. For the current tabpage
8404 use |setwinvar()|.
8405 {winnr} can be the window number or the |window-ID|.
8406 When {winnr} is zero the current window is used.
8407 Note that autocommands are blocked, side effects may not be
8408 triggered, e.g. when setting 'filetype' or 'syntax'.
8409 This also works for a global or local buffer option, but it
8410 doesn't work for a global or local buffer variable.
8411 For a local buffer option the global value is unchanged.
8412 Note that the variable name without "w:" must be used.
8413 Examples: >
8414 :call settabwinvar(1, 1, "&list", 0)
8415 :call settabwinvar(3, 2, "myvar", "foobar")
8416< This function is not available in the |sandbox|.
8417
8418 Can also be used as a |method|, the base is passed as the
8419 fourth argument: >
8420 GetValue()->settabwinvar(tab, winnr, name)
8421
8422settagstack({nr}, {dict} [, {action}]) *settagstack()*
8423 Modify the tag stack of the window {nr} using {dict}.
8424 {nr} can be the window number or the |window-ID|.
8425
8426 For a list of supported items in {dict}, refer to
8427 |gettagstack()|. "curidx" takes effect before changing the tag
8428 stack.
8429 *E962*
8430 How the tag stack is modified depends on the {action}
8431 argument:
8432 - If {action} is not present or is set to 'r', then the tag
8433 stack is replaced.
8434 - If {action} is set to 'a', then new entries from {dict} are
8435 pushed (added) onto the tag stack.
8436 - If {action} is set to 't', then all the entries from the
8437 current entry in the tag stack or "curidx" in {dict} are
8438 removed and then new entries are pushed to the stack.
8439
8440 The current index is set to one after the length of the tag
8441 stack after the modification.
8442
8443 Returns zero for success, -1 for failure.
8444
8445 Examples (for more examples see |tagstack-examples|):
8446 Empty the tag stack of window 3: >
8447 call settagstack(3, {'items' : []})
8448
8449< Save and restore the tag stack: >
8450 let stack = gettagstack(1003)
8451 " do something else
8452 call settagstack(1003, stack)
8453 unlet stack
8454<
8455 Can also be used as a |method|, the base is passed as the
8456 second argument: >
8457 GetStack()->settagstack(winnr)
8458
8459setwinvar({winnr}, {varname}, {val}) *setwinvar()*
8460 Like |settabwinvar()| for the current tab page.
8461 Examples: >
8462 :call setwinvar(1, "&list", 0)
8463 :call setwinvar(2, "myvar", "foobar")
8464
8465< Can also be used as a |method|, the base is passed as the
8466 third argument: >
8467 GetValue()->setwinvar(winnr, name)
8468
8469sha256({string}) *sha256()*
8470 Returns a String with 64 hex characters, which is the SHA256
8471 checksum of {string}.
8472
8473 Can also be used as a |method|: >
8474 GetText()->sha256()
8475
8476< {only available when compiled with the |+cryptv| feature}
8477
8478shellescape({string} [, {special}]) *shellescape()*
8479 Escape {string} for use as a shell command argument.
8480 When the 'shell' contains powershell (MS-Windows) or pwsh
Bram Moolenaar944697a2022-02-20 19:48:20 +00008481 (MS-Windows, Linux, and macOS) then it will enclose {string}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008482 in single quotes and will double up all internal single
8483 quotes.
8484 On MS-Windows, when 'shellslash' is not set, it will enclose
8485 {string} in double quotes and double all double quotes within
8486 {string}.
8487 Otherwise it will enclose {string} in single quotes and
8488 replace all "'" with "'\''".
8489
8490 When the {special} argument is present and it's a non-zero
8491 Number or a non-empty String (|non-zero-arg|), then special
8492 items such as "!", "%", "#" and "<cword>" will be preceded by
8493 a backslash. This backslash will be removed again by the |:!|
8494 command.
8495
8496 The "!" character will be escaped (again with a |non-zero-arg|
8497 {special}) when 'shell' contains "csh" in the tail. That is
8498 because for csh and tcsh "!" is used for history replacement
8499 even when inside single quotes.
8500
8501 With a |non-zero-arg| {special} the <NL> character is also
8502 escaped. When 'shell' containing "csh" in the tail it's
8503 escaped a second time.
8504
8505 The "\" character will be escaped when 'shell' contains "fish"
8506 in the tail. That is because for fish "\" is used as an escape
8507 character inside single quotes.
8508
8509 Example of use with a |:!| command: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008510 :exe '!dir ' .. shellescape(expand('<cfile>'), 1)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008511< This results in a directory listing for the file under the
8512 cursor. Example of use with |system()|: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00008513 :call system("chmod +w -- " .. shellescape(expand("%")))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008514< See also |::S|.
8515
8516 Can also be used as a |method|: >
8517 GetCommand()->shellescape()
8518
8519shiftwidth([{col}]) *shiftwidth()*
8520 Returns the effective value of 'shiftwidth'. This is the
8521 'shiftwidth' value unless it is zero, in which case it is the
8522 'tabstop' value. This function was introduced with patch
8523 7.3.694 in 2012, everybody should have it by now (however it
8524 did not allow for the optional {col} argument until 8.1.542).
8525
8526 When there is one argument {col} this is used as column number
8527 for which to return the 'shiftwidth' value. This matters for the
8528 'vartabstop' feature. If the 'vartabstop' setting is enabled and
8529 no {col} argument is given, column 1 will be assumed.
8530
8531 Can also be used as a |method|: >
8532 GetColumn()->shiftwidth()
8533
8534sign_ functions are documented here: |sign-functions-details|
8535
8536
8537simplify({filename}) *simplify()*
8538 Simplify the file name as much as possible without changing
8539 the meaning. Shortcuts (on MS-Windows) or symbolic links (on
8540 Unix) are not resolved. If the first path component in
8541 {filename} designates the current directory, this will be
8542 valid for the result as well. A trailing path separator is
8543 not removed either. On Unix "//path" is unchanged, but
8544 "///path" is simplified to "/path" (this follows the Posix
8545 standard).
8546 Example: >
8547 simplify("./dir/.././/file/") == "./file/"
8548< Note: The combination "dir/.." is only removed if "dir" is
8549 a searchable directory or does not exist. On Unix, it is also
8550 removed when "dir" is a symbolic link within the same
8551 directory. In order to resolve all the involved symbolic
8552 links before simplifying the path name, use |resolve()|.
8553
8554 Can also be used as a |method|: >
8555 GetName()->simplify()
8556
8557sin({expr}) *sin()*
8558 Return the sine of {expr}, measured in radians, as a |Float|.
8559 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008560 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008561 Examples: >
8562 :echo sin(100)
8563< -0.506366 >
8564 :echo sin(-4.01)
8565< 0.763301
8566
8567 Can also be used as a |method|: >
8568 Compute()->sin()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008569
8570
8571sinh({expr}) *sinh()*
8572 Return the hyperbolic sine of {expr} as a |Float| in the range
8573 [-inf, inf].
8574 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008575 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008576 Examples: >
8577 :echo sinh(0.5)
8578< 0.521095 >
8579 :echo sinh(-0.9)
8580< -1.026517
8581
8582 Can also be used as a |method|: >
8583 Compute()->sinh()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008584
8585
8586slice({expr}, {start} [, {end}]) *slice()*
8587 Similar to using a |slice| "expr[start : end]", but "end" is
8588 used exclusive. And for a string the indexes are used as
8589 character indexes instead of byte indexes, like in
8590 |vim9script|. Also, composing characters are not counted.
8591 When {end} is omitted the slice continues to the last item.
8592 When {end} is -1 the last item is omitted.
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008593 Returns an empty value if {start} or {end} are invalid.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008594
8595 Can also be used as a |method|: >
8596 GetList()->slice(offset)
8597
8598
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008599sort({list} [, {how} [, {dict}]]) *sort()* *E702*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008600 Sort the items in {list} in-place. Returns {list}.
8601
8602 If you want a list to remain unmodified make a copy first: >
8603 :let sortedlist = sort(copy(mylist))
8604
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01008605< When {how} is omitted or is a string, then sort() uses the
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008606 string representation of each item to sort on. Numbers sort
8607 after Strings, |Lists| after Numbers. For sorting text in the
8608 current buffer use |:sort|.
8609
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008610 When {how} is given and it is 'i' then case is ignored.
8611 In legacy script, for backwards compatibility, the value one
8612 can be used to ignore case. Zero means to not ignore case.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008613
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008614 When {how} is given and it is 'l' then the current collation
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008615 locale is used for ordering. Implementation details: strcoll()
8616 is used to compare strings. See |:language| check or set the
8617 collation locale. |v:collate| can also be used to check the
8618 current locale. Sorting using the locale typically ignores
8619 case. Example: >
8620 " ö is sorted similarly to o with English locale.
8621 :language collate en_US.UTF8
8622 :echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
8623< ['n', 'o', 'O', 'ö', 'p', 'z'] ~
8624>
8625 " ö is sorted after z with Swedish locale.
8626 :language collate sv_SE.UTF8
8627 :echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
8628< ['n', 'o', 'O', 'p', 'z', 'ö'] ~
8629 This does not work properly on Mac.
8630
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008631 When {how} is given and it is 'n' then all items will be
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008632 sorted numerical (Implementation detail: this uses the
8633 strtod() function to parse numbers, Strings, Lists, Dicts and
8634 Funcrefs will be considered as being 0).
8635
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008636 When {how} is given and it is 'N' then all items will be
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008637 sorted numerical. This is like 'n' but a string containing
8638 digits will be used as the number they represent.
8639
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008640 When {how} is given and it is 'f' then all items will be
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008641 sorted numerical. All values must be a Number or a Float.
8642
Bram Moolenaar2007dd42022-02-23 13:17:47 +00008643 When {how} is a |Funcref| or a function name, this function
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008644 is called to compare items. The function is invoked with two
8645 items as argument and must return zero if they are equal, 1 or
8646 bigger if the first one sorts after the second one, -1 or
8647 smaller if the first one sorts before the second one.
8648
8649 {dict} is for functions with the "dict" attribute. It will be
8650 used to set the local variable "self". |Dictionary-function|
8651
8652 The sort is stable, items which compare equal (as number or as
8653 string) will keep their relative position. E.g., when sorting
8654 on numbers, text strings will sort next to each other, in the
8655 same order as they were originally.
8656
8657 Can also be used as a |method|: >
8658 mylist->sort()
8659
8660< Also see |uniq()|.
8661
8662 Example: >
8663 func MyCompare(i1, i2)
8664 return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
8665 endfunc
8666 eval mylist->sort("MyCompare")
8667< A shorter compare version for this specific simple case, which
8668 ignores overflow: >
8669 func MyCompare(i1, i2)
8670 return a:i1 - a:i2
8671 endfunc
8672< For a simple expression you can use a lambda: >
8673 eval mylist->sort({i1, i2 -> i1 - i2})
8674<
8675sound_clear() *sound_clear()*
8676 Stop playing all sounds.
8677
8678 On some Linux systems you may need the libcanberra-pulse
8679 package, otherwise sound may not stop.
8680
8681 {only available when compiled with the |+sound| feature}
8682
8683 *sound_playevent()*
8684sound_playevent({name} [, {callback}])
8685 Play a sound identified by {name}. Which event names are
8686 supported depends on the system. Often the XDG sound names
8687 are used. On Ubuntu they may be found in
8688 /usr/share/sounds/freedesktop/stereo. Example: >
8689 call sound_playevent('bell')
8690< On MS-Windows, {name} can be SystemAsterisk, SystemDefault,
8691 SystemExclamation, SystemExit, SystemHand, SystemQuestion,
8692 SystemStart, SystemWelcome, etc.
Yee Cheng Chin4314e4f2022-10-08 13:50:05 +01008693 On macOS, {name} refers to files located in
8694 /System/Library/Sounds (e.g. "Tink"). It will also work for
8695 custom installed sounds in folders like ~/Library/Sounds.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008696
8697 When {callback} is specified it is invoked when the sound is
8698 finished. The first argument is the sound ID, the second
8699 argument is the status:
8700 0 sound was played to the end
8701 1 sound was interrupted
8702 2 error occurred after sound started
8703 Example: >
8704 func Callback(id, status)
8705 echomsg "sound " .. a:id .. " finished with " .. a:status
8706 endfunc
8707 call sound_playevent('bell', 'Callback')
8708
8709< MS-Windows: {callback} doesn't work for this function.
8710
8711 Returns the sound ID, which can be passed to `sound_stop()`.
8712 Returns zero if the sound could not be played.
8713
8714 Can also be used as a |method|: >
8715 GetSoundName()->sound_playevent()
8716
8717< {only available when compiled with the |+sound| feature}
8718
8719 *sound_playfile()*
8720sound_playfile({path} [, {callback}])
8721 Like `sound_playevent()` but play sound file {path}. {path}
8722 must be a full path. On Ubuntu you may find files to play
8723 with this command: >
8724 :!find /usr/share/sounds -type f | grep -v index.theme
8725
8726< Can also be used as a |method|: >
8727 GetSoundPath()->sound_playfile()
8728
Bram Moolenaar1588bc82022-03-08 21:35:07 +00008729< {only available when compiled with the |+sound| feature}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008730
8731
8732sound_stop({id}) *sound_stop()*
8733 Stop playing sound {id}. {id} must be previously returned by
8734 `sound_playevent()` or `sound_playfile()`.
8735
8736 On some Linux systems you may need the libcanberra-pulse
8737 package, otherwise sound may not stop.
8738
8739 On MS-Windows, this does not work for event sound started by
8740 `sound_playevent()`. To stop event sounds, use `sound_clear()`.
8741
8742 Can also be used as a |method|: >
8743 soundid->sound_stop()
8744
8745< {only available when compiled with the |+sound| feature}
8746
8747 *soundfold()*
8748soundfold({word})
8749 Return the sound-folded equivalent of {word}. Uses the first
8750 language in 'spelllang' for the current window that supports
8751 soundfolding. 'spell' must be set. When no sound folding is
8752 possible the {word} is returned unmodified.
8753 This can be used for making spelling suggestions. Note that
8754 the method can be quite slow.
8755
8756 Can also be used as a |method|: >
8757 GetWord()->soundfold()
8758<
8759 *spellbadword()*
8760spellbadword([{sentence}])
8761 Without argument: The result is the badly spelled word under
8762 or after the cursor. The cursor is moved to the start of the
8763 bad word. When no bad word is found in the cursor line the
8764 result is an empty string and the cursor doesn't move.
8765
8766 With argument: The result is the first word in {sentence} that
8767 is badly spelled. If there are no spelling mistakes the
8768 result is an empty string.
8769
8770 The return value is a list with two items:
8771 - The badly spelled word or an empty string.
8772 - The type of the spelling error:
8773 "bad" spelling mistake
8774 "rare" rare word
8775 "local" word only valid in another region
8776 "caps" word should start with Capital
8777 Example: >
8778 echo spellbadword("the quik brown fox")
8779< ['quik', 'bad'] ~
8780
8781 The spelling information for the current window and the value
8782 of 'spelllang' are used.
8783
8784 Can also be used as a |method|: >
8785 GetText()->spellbadword()
8786<
8787 *spellsuggest()*
8788spellsuggest({word} [, {max} [, {capital}]])
8789 Return a |List| with spelling suggestions to replace {word}.
8790 When {max} is given up to this number of suggestions are
8791 returned. Otherwise up to 25 suggestions are returned.
8792
8793 When the {capital} argument is given and it's non-zero only
8794 suggestions with a leading capital will be given. Use this
8795 after a match with 'spellcapcheck'.
8796
8797 {word} can be a badly spelled word followed by other text.
8798 This allows for joining two words that were split. The
8799 suggestions also include the following text, thus you can
8800 replace a line.
8801
8802 {word} may also be a good word. Similar words will then be
8803 returned. {word} itself is not included in the suggestions,
8804 although it may appear capitalized.
8805
8806 The spelling information for the current window is used. The
8807 values of 'spelllang' and 'spellsuggest' are used.
8808
8809 Can also be used as a |method|: >
8810 GetWord()->spellsuggest()
8811
8812split({string} [, {pattern} [, {keepempty}]]) *split()*
8813 Make a |List| out of {string}. When {pattern} is omitted or
8814 empty each white-separated sequence of characters becomes an
8815 item.
8816 Otherwise the string is split where {pattern} matches,
8817 removing the matched characters. 'ignorecase' is not used
8818 here, add \c to ignore case. |/\c|
8819 When the first or last item is empty it is omitted, unless the
8820 {keepempty} argument is given and it's non-zero.
8821 Other empty items are kept when {pattern} matches at least one
8822 character or when {keepempty} is non-zero.
8823 Example: >
8824 :let words = split(getline('.'), '\W\+')
8825< To split a string in individual characters: >
8826 :for c in split(mystring, '\zs')
8827< If you want to keep the separator you can also use '\zs' at
8828 the end of the pattern: >
8829 :echo split('abc:def:ghi', ':\zs')
8830< ['abc:', 'def:', 'ghi'] ~
8831 Splitting a table where the first element can be empty: >
8832 :let items = split(line, ':', 1)
8833< The opposite function is |join()|.
8834
8835 Can also be used as a |method|: >
8836 GetString()->split()
8837
8838sqrt({expr}) *sqrt()*
8839 Return the non-negative square root of Float {expr} as a
8840 |Float|.
8841 {expr} must evaluate to a |Float| or a |Number|. When {expr}
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008842 is negative the result is NaN (Not a Number). Returns 0.0 if
8843 {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008844 Examples: >
8845 :echo sqrt(100)
8846< 10.0 >
8847 :echo sqrt(-4.01)
8848< nan
8849 "nan" may be different, it depends on system libraries.
8850
8851 Can also be used as a |method|: >
8852 Compute()->sqrt()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008853
8854
8855srand([{expr}]) *srand()*
8856 Initialize seed used by |rand()|:
8857 - If {expr} is not given, seed values are initialized by
8858 reading from /dev/urandom, if possible, or using time(NULL)
8859 a.k.a. epoch time otherwise; this only has second accuracy.
8860 - If {expr} is given it must be a Number. It is used to
8861 initialize the seed values. This is useful for testing or
8862 when a predictable sequence is intended.
8863
8864 Examples: >
8865 :let seed = srand()
8866 :let seed = srand(userinput)
8867 :echo rand(seed)
8868
8869state([{what}]) *state()*
8870 Return a string which contains characters indicating the
8871 current state. Mostly useful in callbacks that want to do
8872 work that may not always be safe. Roughly this works like:
8873 - callback uses state() to check if work is safe to do.
8874 Yes: then do it right away.
8875 No: add to work queue and add a |SafeState| and/or
8876 |SafeStateAgain| autocommand (|SafeState| triggers at
8877 toplevel, |SafeStateAgain| triggers after handling
8878 messages and callbacks).
8879 - When SafeState or SafeStateAgain is triggered and executes
8880 your autocommand, check with `state()` if the work can be
8881 done now, and if yes remove it from the queue and execute.
8882 Remove the autocommand if the queue is now empty.
8883 Also see |mode()|.
8884
8885 When {what} is given only characters in this string will be
8886 added. E.g, this checks if the screen has scrolled: >
8887 if state('s') == ''
8888 " screen has not scrolled
8889<
8890 These characters indicate the state, generally indicating that
8891 something is busy:
8892 m halfway a mapping, :normal command, feedkeys() or
8893 stuffed command
8894 o operator pending, e.g. after |d|
8895 a Insert mode autocomplete active
8896 x executing an autocommand
8897 w blocked on waiting, e.g. ch_evalexpr(), ch_read() and
8898 ch_readraw() when reading json
8899 S not triggering SafeState or SafeStateAgain, e.g. after
8900 |f| or a count
8901 c callback invoked, including timer (repeats for
8902 recursiveness up to "ccc")
8903 s screen has scrolled for messages
8904
8905str2float({string} [, {quoted}]) *str2float()*
8906 Convert String {string} to a Float. This mostly works the
8907 same as when using a floating point number in an expression,
8908 see |floating-point-format|. But it's a bit more permissive.
8909 E.g., "1e40" is accepted, while in an expression you need to
8910 write "1.0e40". The hexadecimal form "0x123" is also
8911 accepted, but not others, like binary or octal.
8912 When {quoted} is present and non-zero then embedded single
8913 quotes before the dot are ignored, thus "1'000.0" is a
8914 thousand.
8915 Text after the number is silently ignored.
8916 The decimal point is always '.', no matter what the locale is
8917 set to. A comma ends the number: "12,345.67" is converted to
8918 12.0. You can strip out thousands separators with
8919 |substitute()|: >
8920 let f = str2float(substitute(text, ',', '', 'g'))
8921<
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008922 Returns 0.0 if the conversion fails.
8923
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008924 Can also be used as a |method|: >
8925 let f = text->substitute(',', '', 'g')->str2float()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008926
8927str2list({string} [, {utf8}]) *str2list()*
8928 Return a list containing the number values which represent
8929 each character in String {string}. Examples: >
8930 str2list(" ") returns [32]
8931 str2list("ABC") returns [65, 66, 67]
8932< |list2str()| does the opposite.
8933
8934 When {utf8} is omitted or zero, the current 'encoding' is used.
8935 When {utf8} is TRUE, always treat the String as UTF-8
8936 characters. With UTF-8 composing characters are handled
8937 properly: >
8938 str2list("á") returns [97, 769]
8939
8940< Can also be used as a |method|: >
8941 GetString()->str2list()
8942
8943
8944str2nr({string} [, {base} [, {quoted}]]) *str2nr()*
8945 Convert string {string} to a number.
8946 {base} is the conversion base, it can be 2, 8, 10 or 16.
8947 When {quoted} is present and non-zero then embedded single
8948 quotes are ignored, thus "1'000'000" is a million.
8949
8950 When {base} is omitted base 10 is used. This also means that
8951 a leading zero doesn't cause octal conversion to be used, as
8952 with the default String to Number conversion. Example: >
8953 let nr = str2nr('0123')
8954<
8955 When {base} is 16 a leading "0x" or "0X" is ignored. With a
8956 different base the result will be zero. Similarly, when
8957 {base} is 8 a leading "0", "0o" or "0O" is ignored, and when
8958 {base} is 2 a leading "0b" or "0B" is ignored.
8959 Text after the number is silently ignored.
8960
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008961 Returns 0 if {string} is empty or on error.
8962
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008963 Can also be used as a |method|: >
8964 GetText()->str2nr()
8965
8966
8967strcharlen({string}) *strcharlen()*
8968 The result is a Number, which is the number of characters
8969 in String {string}. Composing characters are ignored.
8970 |strchars()| can count the number of characters, counting
8971 composing characters separately.
8972
Bram Moolenaar6ba83ba2022-06-12 22:15:57 +01008973 Returns 0 if {string} is empty or on error.
8974
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008975 Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
8976
8977 Can also be used as a |method|: >
8978 GetText()->strcharlen()
8979
8980
8981strcharpart({src}, {start} [, {len} [, {skipcc}]]) *strcharpart()*
8982 Like |strpart()| but using character index and length instead
8983 of byte index and length.
8984 When {skipcc} is omitted or zero, composing characters are
8985 counted separately.
8986 When {skipcc} set to 1, Composing characters are ignored,
8987 similar to |slice()|.
8988 When a character index is used where a character does not
8989 exist it is omitted and counted as one character. For
8990 example: >
8991 strcharpart('abc', -1, 2)
8992< results in 'a'.
8993
Bram Moolenaard592deb2022-06-17 15:42:40 +01008994 Returns an empty string on error.
8995
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00008996 Can also be used as a |method|: >
8997 GetText()->strcharpart(5)
8998
8999
9000strchars({string} [, {skipcc}]) *strchars()*
9001 The result is a Number, which is the number of characters
9002 in String {string}.
9003 When {skipcc} is omitted or zero, composing characters are
9004 counted separately.
9005 When {skipcc} set to 1, Composing characters are ignored.
9006 |strcharlen()| always does this.
9007
Bram Moolenaard592deb2022-06-17 15:42:40 +01009008 Returns zero on error.
9009
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009010 Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
9011
9012 {skipcc} is only available after 7.4.755. For backward
9013 compatibility, you can define a wrapper function: >
9014 if has("patch-7.4.755")
9015 function s:strchars(str, skipcc)
9016 return strchars(a:str, a:skipcc)
9017 endfunction
9018 else
9019 function s:strchars(str, skipcc)
9020 if a:skipcc
9021 return strlen(substitute(a:str, ".", "x", "g"))
9022 else
9023 return strchars(a:str)
9024 endif
9025 endfunction
9026 endif
9027<
9028 Can also be used as a |method|: >
9029 GetText()->strchars()
9030
9031strdisplaywidth({string} [, {col}]) *strdisplaywidth()*
9032 The result is a Number, which is the number of display cells
9033 String {string} occupies on the screen when it starts at {col}
9034 (first column is zero). When {col} is omitted zero is used.
9035 Otherwise it is the screen column where to start. This
9036 matters for Tab characters.
9037 The option settings of the current window are used. This
9038 matters for anything that's displayed differently, such as
9039 'tabstop' and 'display'.
9040 When {string} contains characters with East Asian Width Class
9041 Ambiguous, this function's return value depends on 'ambiwidth'.
Bram Moolenaard592deb2022-06-17 15:42:40 +01009042 Returns zero on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009043 Also see |strlen()|, |strwidth()| and |strchars()|.
9044
9045 Can also be used as a |method|: >
9046 GetText()->strdisplaywidth()
9047
9048strftime({format} [, {time}]) *strftime()*
9049 The result is a String, which is a formatted date and time, as
9050 specified by the {format} string. The given {time} is used,
9051 or the current time if no time is given. The accepted
9052 {format} depends on your system, thus this is not portable!
9053 See the manual page of the C function strftime() for the
9054 format. The maximum length of the result is 80 characters.
9055 See also |localtime()|, |getftime()| and |strptime()|.
9056 The language can be changed with the |:language| command.
9057 Examples: >
9058 :echo strftime("%c") Sun Apr 27 11:49:23 1997
9059 :echo strftime("%Y %b %d %X") 1997 Apr 27 11:53:25
9060 :echo strftime("%y%m%d %T") 970427 11:53:55
9061 :echo strftime("%H:%M") 11:55
9062 :echo strftime("%c", getftime("file.c"))
9063 Show mod time of file.c.
9064< Not available on all systems. To check use: >
9065 :if exists("*strftime")
9066
9067< Can also be used as a |method|: >
9068 GetFormat()->strftime()
9069
9070strgetchar({str}, {index}) *strgetchar()*
Bram Moolenaar2d8ed022022-05-21 13:08:16 +01009071 Get a Number corresponding to the character at {index} in
9072 {str}. This uses a zero-based character index, not a byte
9073 index. Composing characters are considered separate
9074 characters here. Use |nr2char()| to convert the Number to a
9075 String.
Bram Moolenaard592deb2022-06-17 15:42:40 +01009076 Returns -1 if {index} is invalid.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009077 Also see |strcharpart()| and |strchars()|.
9078
9079 Can also be used as a |method|: >
9080 GetText()->strgetchar(5)
9081
9082stridx({haystack}, {needle} [, {start}]) *stridx()*
9083 The result is a Number, which gives the byte index in
9084 {haystack} of the first occurrence of the String {needle}.
9085 If {start} is specified, the search starts at index {start}.
9086 This can be used to find a second match: >
9087 :let colon1 = stridx(line, ":")
9088 :let colon2 = stridx(line, ":", colon1 + 1)
9089< The search is done case-sensitive.
9090 For pattern searches use |match()|.
9091 -1 is returned if the {needle} does not occur in {haystack}.
9092 See also |strridx()|.
9093 Examples: >
9094 :echo stridx("An Example", "Example") 3
9095 :echo stridx("Starting point", "Start") 0
9096 :echo stridx("Starting point", "start") -1
9097< *strstr()* *strchr()*
9098 stridx() works similar to the C function strstr(). When used
9099 with a single character it works similar to strchr().
9100
9101 Can also be used as a |method|: >
9102 GetHaystack()->stridx(needle)
9103<
9104 *string()*
9105string({expr}) Return {expr} converted to a String. If {expr} is a Number,
9106 Float, String, Blob or a composition of them, then the result
9107 can be parsed back with |eval()|.
9108 {expr} type result ~
9109 String 'string' (single quotes are doubled)
9110 Number 123
9111 Float 123.123456 or 1.123456e8
9112 Funcref function('name')
9113 Blob 0z00112233.44556677.8899
9114 List [item, item]
9115 Dictionary {key: value, key: value}
Bram Moolenaarf1dcd142022-12-31 15:30:45 +00009116 Class class SomeName
9117 Object object of SomeName {lnum: 1, col: 3}
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009118
9119 When a |List| or |Dictionary| has a recursive reference it is
9120 replaced by "[...]" or "{...}". Using eval() on the result
9121 will then fail.
9122
9123 Can also be used as a |method|: >
9124 mylist->string()
9125
9126< Also see |strtrans()|.
9127
9128
9129strlen({string}) *strlen()*
9130 The result is a Number, which is the length of the String
9131 {string} in bytes.
9132 If the argument is a Number it is first converted to a String.
Bram Moolenaard592deb2022-06-17 15:42:40 +01009133 For other types an error is given and zero is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009134 If you want to count the number of multibyte characters use
9135 |strchars()|.
9136 Also see |len()|, |strdisplaywidth()| and |strwidth()|.
9137
9138 Can also be used as a |method|: >
9139 GetString()->strlen()
9140
9141strpart({src}, {start} [, {len} [, {chars}]]) *strpart()*
9142 The result is a String, which is part of {src}, starting from
9143 byte {start}, with the byte length {len}.
9144 When {chars} is present and TRUE then {len} is the number of
9145 characters positions (composing characters are not counted
9146 separately, thus "1" means one base character and any
9147 following composing characters).
9148 To count {start} as characters instead of bytes use
9149 |strcharpart()|.
9150
9151 When bytes are selected which do not exist, this doesn't
9152 result in an error, the bytes are simply omitted.
9153 If {len} is missing, the copy continues from {start} till the
9154 end of the {src}. >
9155 strpart("abcdefg", 3, 2) == "de"
9156 strpart("abcdefg", -2, 4) == "ab"
9157 strpart("abcdefg", 5, 4) == "fg"
9158 strpart("abcdefg", 3) == "defg"
9159
9160< Note: To get the first character, {start} must be 0. For
9161 example, to get the character under the cursor: >
9162 strpart(getline("."), col(".") - 1, 1, v:true)
9163<
Bram Moolenaard592deb2022-06-17 15:42:40 +01009164 Returns an empty string on error.
9165
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009166 Can also be used as a |method|: >
9167 GetText()->strpart(5)
9168
9169strptime({format}, {timestring}) *strptime()*
9170 The result is a Number, which is a unix timestamp representing
9171 the date and time in {timestring}, which is expected to match
9172 the format specified in {format}.
9173
9174 The accepted {format} depends on your system, thus this is not
9175 portable! See the manual page of the C function strptime()
9176 for the format. Especially avoid "%c". The value of $TZ also
9177 matters.
9178
9179 If the {timestring} cannot be parsed with {format} zero is
9180 returned. If you do not know the format of {timestring} you
9181 can try different {format} values until you get a non-zero
9182 result.
9183
9184 See also |strftime()|.
9185 Examples: >
9186 :echo strptime("%Y %b %d %X", "1997 Apr 27 11:49:23")
9187< 862156163 >
9188 :echo strftime("%c", strptime("%y%m%d %T", "970427 11:53:55"))
9189< Sun Apr 27 11:53:55 1997 >
9190 :echo strftime("%c", strptime("%Y%m%d%H%M%S", "19970427115355") + 3600)
9191< Sun Apr 27 12:53:55 1997
9192
9193 Can also be used as a |method|: >
9194 GetFormat()->strptime(timestring)
9195<
9196 Not available on all systems. To check use: >
9197 :if exists("*strptime")
9198
9199strridx({haystack}, {needle} [, {start}]) *strridx()*
9200 The result is a Number, which gives the byte index in
9201 {haystack} of the last occurrence of the String {needle}.
9202 When {start} is specified, matches beyond this index are
9203 ignored. This can be used to find a match before a previous
9204 match: >
9205 :let lastcomma = strridx(line, ",")
9206 :let comma2 = strridx(line, ",", lastcomma - 1)
9207< The search is done case-sensitive.
9208 For pattern searches use |match()|.
9209 -1 is returned if the {needle} does not occur in {haystack}.
9210 If the {needle} is empty the length of {haystack} is returned.
9211 See also |stridx()|. Examples: >
9212 :echo strridx("an angry armadillo", "an") 3
9213< *strrchr()*
9214 When used with a single character it works similar to the C
9215 function strrchr().
9216
9217 Can also be used as a |method|: >
9218 GetHaystack()->strridx(needle)
9219
9220strtrans({string}) *strtrans()*
9221 The result is a String, which is {string} with all unprintable
9222 characters translated into printable characters |'isprint'|.
9223 Like they are shown in a window. Example: >
9224 echo strtrans(@a)
9225< This displays a newline in register a as "^@" instead of
9226 starting a new line.
9227
Bram Moolenaard592deb2022-06-17 15:42:40 +01009228 Returns an empty string on error.
9229
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009230 Can also be used as a |method|: >
9231 GetString()->strtrans()
9232
9233strwidth({string}) *strwidth()*
9234 The result is a Number, which is the number of display cells
9235 String {string} occupies. A Tab character is counted as one
9236 cell, alternatively use |strdisplaywidth()|.
9237 When {string} contains characters with East Asian Width Class
9238 Ambiguous, this function's return value depends on 'ambiwidth'.
Bram Moolenaard592deb2022-06-17 15:42:40 +01009239 Returns zero on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009240 Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
9241
9242 Can also be used as a |method|: >
9243 GetString()->strwidth()
9244
9245submatch({nr} [, {list}]) *submatch()* *E935*
9246 Only for an expression in a |:substitute| command or
9247 substitute() function.
9248 Returns the {nr}'th submatch of the matched text. When {nr}
9249 is 0 the whole matched text is returned.
9250 Note that a NL in the string can stand for a line break of a
9251 multi-line match or a NUL character in the text.
9252 Also see |sub-replace-expression|.
9253
9254 If {list} is present and non-zero then submatch() returns
9255 a list of strings, similar to |getline()| with two arguments.
9256 NL characters in the text represent NUL characters in the
9257 text.
9258 Only returns more than one item for |:substitute|, inside
9259 |substitute()| this list will always contain one or zero
9260 items, since there are no real line breaks.
9261
9262 When substitute() is used recursively only the submatches in
9263 the current (deepest) call can be obtained.
9264
Bram Moolenaard592deb2022-06-17 15:42:40 +01009265 Returns an empty string or list on error.
9266
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009267 Examples: >
9268 :s/\d\+/\=submatch(0) + 1/
9269 :echo substitute(text, '\d\+', '\=submatch(0) + 1', '')
9270< This finds the first number in the line and adds one to it.
9271 A line break is included as a newline character.
9272
9273 Can also be used as a |method|: >
9274 GetNr()->submatch()
9275
9276substitute({string}, {pat}, {sub}, {flags}) *substitute()*
9277 The result is a String, which is a copy of {string}, in which
9278 the first match of {pat} is replaced with {sub}.
9279 When {flags} is "g", all matches of {pat} in {string} are
9280 replaced. Otherwise {flags} should be "".
9281
9282 This works like the ":substitute" command (without any flags).
9283 But the matching with {pat} is always done like the 'magic'
9284 option is set and 'cpoptions' is empty (to make scripts
9285 portable). 'ignorecase' is still relevant, use |/\c| or |/\C|
9286 if you want to ignore or match case and ignore 'ignorecase'.
9287 'smartcase' is not used. See |string-match| for how {pat} is
9288 used.
9289
9290 A "~" in {sub} is not replaced with the previous {sub}.
9291 Note that some codes in {sub} have a special meaning
9292 |sub-replace-special|. For example, to replace something with
9293 "\n" (two characters), use "\\\\n" or '\\n'.
9294
9295 When {pat} does not match in {string}, {string} is returned
9296 unmodified.
9297
9298 Example: >
9299 :let &path = substitute(&path, ",\\=[^,]*$", "", "")
9300< This removes the last component of the 'path' option. >
9301 :echo substitute("testing", ".*", "\\U\\0", "")
9302< results in "TESTING".
9303
9304 When {sub} starts with "\=", the remainder is interpreted as
9305 an expression. See |sub-replace-expression|. Example: >
9306 :echo substitute(s, '%\(\x\x\)',
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009307 \ '\=nr2char("0x" .. submatch(1))', 'g')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009308
9309< When {sub} is a Funcref that function is called, with one
9310 optional argument. Example: >
9311 :echo substitute(s, '%\(\x\x\)', SubNr, 'g')
9312< The optional argument is a list which contains the whole
9313 matched string and up to nine submatches, like what
9314 |submatch()| returns. Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009315 :echo substitute(s, '%\(\x\x\)', {m -> '0x' .. m[1]}, 'g')
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009316
Bram Moolenaard592deb2022-06-17 15:42:40 +01009317< Returns an empty string on error.
9318
9319 Can also be used as a |method|: >
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009320 GetString()->substitute(pat, sub, flags)
9321
Bram Moolenaarc216a7a2022-12-05 13:50:55 +00009322swapfilelist() *swapfilelist()*
9323 Returns a list of swap file names, like what "vim -r" shows.
9324 See the |-r| command argument. The 'directory' option is used
9325 for the directories to inspect. If you only want to get a
9326 list of swap files in the current directory then temporarily
9327 set 'directory' to a dot: >
9328 let save_dir = &directory
9329 let &directory = '.'
9330 let swapfiles = swapfilelist()
9331 let &directory = save_dir
9332
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009333swapinfo({fname}) *swapinfo()*
9334 The result is a dictionary, which holds information about the
9335 swapfile {fname}. The available fields are:
9336 version Vim version
9337 user user name
9338 host host name
9339 fname original file name
9340 pid PID of the Vim process that created the swap
9341 file
9342 mtime last modification time in seconds
9343 inode Optional: INODE number of the file
9344 dirty 1 if file was modified, 0 if not
9345 Note that "user" and "host" are truncated to at most 39 bytes.
9346 In case of failure an "error" item is added with the reason:
9347 Cannot open file: file not found or in accessible
9348 Cannot read file: cannot read first block
9349 Not a swap file: does not contain correct block ID
9350 Magic number mismatch: Info in first block is invalid
9351
9352 Can also be used as a |method|: >
9353 GetFilename()->swapinfo()
9354
9355swapname({buf}) *swapname()*
9356 The result is the swap file path of the buffer {expr}.
9357 For the use of {buf}, see |bufname()| above.
9358 If buffer {buf} is the current buffer, the result is equal to
9359 |:swapname| (unless there is no swap file).
9360 If buffer {buf} has no swap file, returns an empty string.
9361
9362 Can also be used as a |method|: >
9363 GetBufname()->swapname()
9364
9365synID({lnum}, {col}, {trans}) *synID()*
9366 The result is a Number, which is the syntax ID at the position
9367 {lnum} and {col} in the current window.
9368 The syntax ID can be used with |synIDattr()| and
9369 |synIDtrans()| to obtain syntax information about text.
9370
9371 {col} is 1 for the leftmost column, {lnum} is 1 for the first
9372 line. 'synmaxcol' applies, in a longer line zero is returned.
9373 Note that when the position is after the last character,
9374 that's where the cursor can be in Insert mode, synID() returns
9375 zero. {lnum} is used like with |getline()|.
9376
9377 When {trans} is |TRUE|, transparent items are reduced to the
9378 item that they reveal. This is useful when wanting to know
9379 the effective color. When {trans} is |FALSE|, the transparent
9380 item is returned. This is useful when wanting to know which
9381 syntax item is effective (e.g. inside parens).
9382 Warning: This function can be very slow. Best speed is
9383 obtained by going through the file in forward direction.
9384
Bram Moolenaard592deb2022-06-17 15:42:40 +01009385 Returns zero on error.
9386
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009387 Example (echoes the name of the syntax item under the cursor): >
9388 :echo synIDattr(synID(line("."), col("."), 1), "name")
9389<
9390
9391synIDattr({synID}, {what} [, {mode}]) *synIDattr()*
9392 The result is a String, which is the {what} attribute of
9393 syntax ID {synID}. This can be used to obtain information
9394 about a syntax item.
9395 {mode} can be "gui", "cterm" or "term", to get the attributes
9396 for that mode. When {mode} is omitted, or an invalid value is
9397 used, the attributes for the currently active highlighting are
9398 used (GUI, cterm or term).
9399 Use synIDtrans() to follow linked highlight groups.
9400 {what} result
9401 "name" the name of the syntax item
9402 "fg" foreground color (GUI: color name used to set
9403 the color, cterm: color number as a string,
9404 term: empty string)
9405 "bg" background color (as with "fg")
9406 "font" font name (only available in the GUI)
9407 |highlight-font|
9408 "sp" special color for the GUI (as with "fg")
9409 |highlight-guisp|
9410 "ul" underline color for cterm: number as a string
9411 "fg#" like "fg", but for the GUI and the GUI is
9412 running the name in "#RRGGBB" form
9413 "bg#" like "fg#" for "bg"
9414 "sp#" like "fg#" for "sp"
9415 "bold" "1" if bold
9416 "italic" "1" if italic
9417 "reverse" "1" if reverse
9418 "inverse" "1" if inverse (= reverse)
9419 "standout" "1" if standout
9420 "underline" "1" if underlined
9421 "undercurl" "1" if undercurled
9422 "strike" "1" if strikethrough
Bram Moolenaarde786322022-07-30 14:56:17 +01009423 "nocombine" "1" if nocombine
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009424
Bram Moolenaard592deb2022-06-17 15:42:40 +01009425 Returns an empty string on error.
9426
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009427 Example (echoes the color of the syntax item under the
9428 cursor): >
9429 :echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg")
9430<
9431 Can also be used as a |method|: >
9432 :echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
9433
9434
9435synIDtrans({synID}) *synIDtrans()*
9436 The result is a Number, which is the translated syntax ID of
9437 {synID}. This is the syntax group ID of what is being used to
9438 highlight the character. Highlight links given with
9439 ":highlight link" are followed.
9440
Bram Moolenaard592deb2022-06-17 15:42:40 +01009441 Returns zero on error.
9442
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009443 Can also be used as a |method|: >
9444 :echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
9445
9446synconcealed({lnum}, {col}) *synconcealed()*
9447 The result is a |List| with currently three items:
9448 1. The first item in the list is 0 if the character at the
9449 position {lnum} and {col} is not part of a concealable
9450 region, 1 if it is. {lnum} is used like with |getline()|.
9451 2. The second item in the list is a string. If the first item
9452 is 1, the second item contains the text which will be
9453 displayed in place of the concealed text, depending on the
9454 current setting of 'conceallevel' and 'listchars'.
9455 3. The third and final item in the list is a number
9456 representing the specific syntax region matched in the
9457 line. When the character is not concealed the value is
9458 zero. This allows detection of the beginning of a new
9459 concealable region if there are two consecutive regions
9460 with the same replacement character. For an example, if
9461 the text is "123456" and both "23" and "45" are concealed
9462 and replaced by the character "X", then:
9463 call returns ~
9464 synconcealed(lnum, 1) [0, '', 0]
9465 synconcealed(lnum, 2) [1, 'X', 1]
9466 synconcealed(lnum, 3) [1, 'X', 1]
9467 synconcealed(lnum, 4) [1, 'X', 2]
9468 synconcealed(lnum, 5) [1, 'X', 2]
9469 synconcealed(lnum, 6) [0, '', 0]
9470
9471
9472synstack({lnum}, {col}) *synstack()*
9473 Return a |List|, which is the stack of syntax items at the
9474 position {lnum} and {col} in the current window. {lnum} is
9475 used like with |getline()|. Each item in the List is an ID
9476 like what |synID()| returns.
9477 The first item in the List is the outer region, following are
9478 items contained in that one. The last one is what |synID()|
9479 returns, unless not the whole item is highlighted or it is a
9480 transparent item.
9481 This function is useful for debugging a syntax file.
9482 Example that shows the syntax stack under the cursor: >
9483 for id in synstack(line("."), col("."))
9484 echo synIDattr(id, "name")
9485 endfor
9486< When the position specified with {lnum} and {col} is invalid
Bram Moolenaard592deb2022-06-17 15:42:40 +01009487 an empty List is returned. The position just after the last
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009488 character in a line and the first column in an empty line are
9489 valid positions.
9490
9491system({expr} [, {input}]) *system()* *E677*
9492 Get the output of the shell command {expr} as a |String|. See
9493 |systemlist()| to get the output as a |List|.
9494
9495 When {input} is given and is a |String| this string is written
9496 to a file and passed as stdin to the command. The string is
9497 written as-is, you need to take care of using the correct line
9498 separators yourself.
9499 If {input} is given and is a |List| it is written to the file
9500 in a way |writefile()| does with {binary} set to "b" (i.e.
9501 with a newline between each list item with newlines inside
9502 list items converted to NULs).
9503 When {input} is given and is a number that is a valid id for
9504 an existing buffer then the content of the buffer is written
9505 to the file line by line, each line terminated by a NL and
9506 NULs characters where the text has a NL.
9507
9508 Pipes are not used, the 'shelltemp' option is not used.
9509
9510 When prepended by |:silent| the terminal will not be set to
9511 cooked mode. This is meant to be used for commands that do
9512 not need the user to type. It avoids stray characters showing
9513 up on the screen which require |CTRL-L| to remove. >
9514 :silent let f = system('ls *.vim')
9515<
9516 Note: Use |shellescape()| or |::S| with |expand()| or
9517 |fnamemodify()| to escape special characters in a command
9518 argument. Newlines in {expr} may cause the command to fail.
9519 The characters in 'shellquote' and 'shellxquote' may also
9520 cause trouble.
9521 This is not to be used for interactive commands.
9522
9523 The result is a String. Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009524 :let files = system('ls ' .. shellescape(expand('%:h')))
9525 :let files = system('ls ' .. expand('%:h:S'))
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009526
9527< To make the result more system-independent, the shell output
9528 is filtered to replace <CR> with <NL> for Macintosh, and
9529 <CR><NL> with <NL> for DOS-like systems.
9530 To avoid the string being truncated at a NUL, all NUL
9531 characters are replaced with SOH (0x01).
9532
9533 The command executed is constructed using several options:
9534 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote'
9535 ({tmp} is an automatically generated file name).
9536 For Unix, braces are put around {expr} to allow for
9537 concatenated commands.
9538
9539 The command will be executed in "cooked" mode, so that a
9540 CTRL-C will interrupt the command (on Unix at least).
9541
9542 The resulting error code can be found in |v:shell_error|.
9543 This function will fail in |restricted-mode|.
9544
9545 Note that any wrong value in the options mentioned above may
9546 make the function fail. It has also been reported to fail
9547 when using a security agent application.
9548 Unlike ":!cmd" there is no automatic check for changed files.
9549 Use |:checktime| to force a check.
9550
9551 Can also be used as a |method|: >
9552 :echo GetCmd()->system()
9553
9554
9555systemlist({expr} [, {input}]) *systemlist()*
9556 Same as |system()|, but returns a |List| with lines (parts of
9557 output separated by NL) with NULs transformed into NLs. Output
9558 is the same as |readfile()| will output with {binary} argument
9559 set to "b", except that there is no extra empty item when the
9560 result ends in a NL.
9561 Note that on MS-Windows you may get trailing CR characters.
9562
9563 To see the difference between "echo hello" and "echo -n hello"
9564 use |system()| and |split()|: >
9565 echo system('echo hello')->split('\n', 1)
9566<
9567 Returns an empty string on error.
9568
9569 Can also be used as a |method|: >
9570 :echo GetCmd()->systemlist()
9571
9572
9573tabpagebuflist([{arg}]) *tabpagebuflist()*
9574 The result is a |List|, where each item is the number of the
9575 buffer associated with each window in the current tab page.
9576 {arg} specifies the number of the tab page to be used. When
9577 omitted the current tab page is used.
9578 When {arg} is invalid the number zero is returned.
9579 To get a list of all buffers in all tabs use this: >
9580 let buflist = []
9581 for i in range(tabpagenr('$'))
9582 call extend(buflist, tabpagebuflist(i + 1))
9583 endfor
9584< Note that a buffer may appear in more than one window.
9585
9586 Can also be used as a |method|: >
9587 GetTabpage()->tabpagebuflist()
9588
9589tabpagenr([{arg}]) *tabpagenr()*
9590 The result is a Number, which is the number of the current
9591 tab page. The first tab page has number 1.
9592
9593 The optional argument {arg} supports the following values:
9594 $ the number of the last tab page (the tab page
9595 count).
9596 # the number of the last accessed tab page
9597 (where |g<Tab>| goes to). if there is no
9598 previous tab page 0 is returned.
9599 The number can be used with the |:tab| command.
9600
Bram Moolenaard592deb2022-06-17 15:42:40 +01009601 Returns zero on error.
9602
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009603
9604tabpagewinnr({tabarg} [, {arg}]) *tabpagewinnr()*
9605 Like |winnr()| but for tab page {tabarg}.
9606 {tabarg} specifies the number of tab page to be used.
9607 {arg} is used like with |winnr()|:
9608 - When omitted the current window number is returned. This is
9609 the window which will be used when going to this tab page.
9610 - When "$" the number of windows is returned.
9611 - When "#" the previous window nr is returned.
9612 Useful examples: >
9613 tabpagewinnr(1) " current window of tab page 1
9614 tabpagewinnr(4, '$') " number of windows in tab page 4
9615< When {tabarg} is invalid zero is returned.
9616
9617 Can also be used as a |method|: >
9618 GetTabpage()->tabpagewinnr()
9619<
9620 *tagfiles()*
9621tagfiles() Returns a |List| with the file names used to search for tags
9622 for the current buffer. This is the 'tags' option expanded.
9623
9624
9625taglist({expr} [, {filename}]) *taglist()*
9626 Returns a |List| of tags matching the regular expression {expr}.
9627
9628 If {filename} is passed it is used to prioritize the results
9629 in the same way that |:tselect| does. See |tag-priority|.
9630 {filename} should be the full path of the file.
9631
9632 Each list item is a dictionary with at least the following
9633 entries:
9634 name Name of the tag.
9635 filename Name of the file where the tag is
9636 defined. It is either relative to the
9637 current directory or a full path.
9638 cmd Ex command used to locate the tag in
9639 the file.
9640 kind Type of the tag. The value for this
9641 entry depends on the language specific
9642 kind values. Only available when
9643 using a tags file generated by
Bram Moolenaar47c532e2022-03-19 15:18:53 +00009644 Universal/Exuberant ctags or hdrtag.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009645 static A file specific tag. Refer to
9646 |static-tag| for more information.
9647 More entries may be present, depending on the content of the
9648 tags file: access, implementation, inherits and signature.
9649 Refer to the ctags documentation for information about these
9650 fields. For C code the fields "struct", "class" and "enum"
9651 may appear, they give the name of the entity the tag is
9652 contained in.
9653
9654 The ex-command "cmd" can be either an ex search pattern, a
9655 line number or a line number followed by a byte number.
9656
9657 If there are no matching tags, then an empty list is returned.
9658
9659 To get an exact tag match, the anchors '^' and '$' should be
9660 used in {expr}. This also make the function work faster.
9661 Refer to |tag-regexp| for more information about the tag
9662 search regular expression pattern.
9663
9664 Refer to |'tags'| for information about how the tags file is
9665 located by Vim. Refer to |tags-file-format| for the format of
9666 the tags file generated by the different ctags tools.
9667
9668 Can also be used as a |method|: >
9669 GetTagpattern()->taglist()
9670
9671tan({expr}) *tan()*
9672 Return the tangent of {expr}, measured in radians, as a |Float|
9673 in the range [-inf, inf].
9674 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaard592deb2022-06-17 15:42:40 +01009675 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009676 Examples: >
9677 :echo tan(10)
9678< 0.648361 >
9679 :echo tan(-4.01)
9680< -1.181502
9681
9682 Can also be used as a |method|: >
9683 Compute()->tan()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009684
9685
9686tanh({expr}) *tanh()*
9687 Return the hyperbolic tangent of {expr} as a |Float| in the
9688 range [-1, 1].
9689 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaard592deb2022-06-17 15:42:40 +01009690 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009691 Examples: >
9692 :echo tanh(0.5)
9693< 0.462117 >
9694 :echo tanh(-1)
9695< -0.761594
9696
9697 Can also be used as a |method|: >
9698 Compute()->tanh()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009699
9700
9701tempname() *tempname()* *temp-file-name*
9702 The result is a String, which is the name of a file that
9703 doesn't exist. It can be used for a temporary file. The name
9704 is different for at least 26 consecutive calls. Example: >
9705 :let tmpfile = tempname()
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009706 :exe "redir > " .. tmpfile
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009707< For Unix, the file will be in a private directory |tempfile|.
9708 For MS-Windows forward slashes are used when the 'shellslash'
9709 option is set, or when 'shellcmdflag' starts with '-' and
9710 'shell' does not contain powershell or pwsh.
9711
9712
9713term_ functions are documented here: |terminal-function-details|
9714
9715
9716terminalprops() *terminalprops()*
9717 Returns a |Dictionary| with properties of the terminal that Vim
9718 detected from the response to |t_RV| request. See
9719 |v:termresponse| for the response itself. If |v:termresponse|
9720 is empty most values here will be 'u' for unknown.
9721 cursor_style whether sending |t_RS| works **
9722 cursor_blink_mode whether sending |t_RC| works **
9723 underline_rgb whether |t_8u| works **
9724 mouse mouse type supported
Bram Moolenaar4bc85f22022-10-21 14:17:24 +01009725 kitty whether Kitty terminal was detected
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009726
9727 ** value 'u' for unknown, 'y' for yes, 'n' for no
9728
9729 If the |+termresponse| feature is missing then the result is
9730 an empty dictionary.
9731
9732 If "cursor_style" is 'y' then |t_RS| will be sent to request the
9733 current cursor style.
9734 If "cursor_blink_mode" is 'y' then |t_RC| will be sent to
9735 request the cursor blink status.
9736 "cursor_style" and "cursor_blink_mode" are also set if |t_u7|
9737 is not empty, Vim will detect the working of sending |t_RS|
9738 and |t_RC| on startup.
9739
9740 When "underline_rgb" is not 'y', then |t_8u| will be made empty.
9741 This avoids sending it to xterm, which would clear the colors.
9742
9743 For "mouse" the value 'u' is unknown
9744
9745 Also see:
9746 - 'ambiwidth' - detected by using |t_u7|.
9747 - |v:termstyleresp| and |v:termblinkresp| for the response to
9748 |t_RS| and |t_RC|.
9749
9750
9751test_ functions are documented here: |test-functions-details|
9752
9753
9754 *timer_info()*
9755timer_info([{id}])
9756 Return a list with information about timers.
9757 When {id} is given only information about this timer is
9758 returned. When timer {id} does not exist an empty list is
9759 returned.
9760 When {id} is omitted information about all timers is returned.
9761
9762 For each timer the information is stored in a |Dictionary| with
9763 these items:
9764 "id" the timer ID
9765 "time" time the timer was started with
9766 "remaining" time until the timer fires
9767 "repeat" number of times the timer will still fire;
9768 -1 means forever
9769 "callback" the callback
9770 "paused" 1 if the timer is paused, 0 otherwise
9771
9772 Can also be used as a |method|: >
9773 GetTimer()->timer_info()
9774
9775< {only available when compiled with the |+timers| feature}
9776
9777timer_pause({timer}, {paused}) *timer_pause()*
9778 Pause or unpause a timer. A paused timer does not invoke its
9779 callback when its time expires. Unpausing a timer may cause
9780 the callback to be invoked almost immediately if enough time
9781 has passed.
9782
9783 Pausing a timer is useful to avoid the callback to be called
9784 for a short time.
9785
9786 If {paused} evaluates to a non-zero Number or a non-empty
9787 String, then the timer is paused, otherwise it is unpaused.
9788 See |non-zero-arg|.
9789
9790 Can also be used as a |method|: >
9791 GetTimer()->timer_pause(1)
9792
9793< {only available when compiled with the |+timers| feature}
9794
9795 *timer_start()* *timer* *timers*
9796timer_start({time}, {callback} [, {options}])
9797 Create a timer and return the timer ID.
9798
9799 {time} is the waiting time in milliseconds. This is the
9800 minimum time before invoking the callback. When the system is
9801 busy or Vim is not waiting for input the time will be longer.
9802
9803 {callback} is the function to call. It can be the name of a
9804 function or a |Funcref|. It is called with one argument, which
9805 is the timer ID. The callback is only invoked when Vim is
9806 waiting for input.
9807 If you want to show a message look at |popup_notification()|
9808 to avoid interfering with what the user is doing.
9809
9810 {options} is a dictionary. Supported entries:
9811 "repeat" Number of times to repeat calling the
9812 callback. -1 means forever. When not present
9813 the callback will be called once.
9814 If the timer causes an error three times in a
9815 row the repeat is cancelled. This avoids that
9816 Vim becomes unusable because of all the error
9817 messages.
9818
Bram Moolenaard592deb2022-06-17 15:42:40 +01009819 Returns -1 on error.
9820
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009821 Example: >
9822 func MyHandler(timer)
9823 echo 'Handler called'
9824 endfunc
9825 let timer = timer_start(500, 'MyHandler',
9826 \ {'repeat': 3})
9827< This will invoke MyHandler() three times at 500 msec
9828 intervals.
9829
9830 Can also be used as a |method|: >
9831 GetMsec()->timer_start(callback)
9832
9833< Not available in the |sandbox|.
9834 {only available when compiled with the |+timers| feature}
9835
9836timer_stop({timer}) *timer_stop()*
9837 Stop a timer. The timer callback will no longer be invoked.
9838 {timer} is an ID returned by timer_start(), thus it must be a
9839 Number. If {timer} does not exist there is no error.
9840
9841 Can also be used as a |method|: >
9842 GetTimer()->timer_stop()
9843
9844< {only available when compiled with the |+timers| feature}
9845
9846timer_stopall() *timer_stopall()*
9847 Stop all timers. The timer callbacks will no longer be
9848 invoked. Useful if a timer is misbehaving. If there are no
9849 timers there is no error.
9850
9851 {only available when compiled with the |+timers| feature}
9852
9853tolower({expr}) *tolower()*
9854 The result is a copy of the String given, with all uppercase
9855 characters turned into lowercase (just like applying |gu| to
Bram Moolenaard592deb2022-06-17 15:42:40 +01009856 the string). Returns an empty string on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009857
9858 Can also be used as a |method|: >
9859 GetText()->tolower()
9860
9861toupper({expr}) *toupper()*
9862 The result is a copy of the String given, with all lowercase
9863 characters turned into uppercase (just like applying |gU| to
Bram Moolenaard592deb2022-06-17 15:42:40 +01009864 the string). Returns an empty string on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009865
9866 Can also be used as a |method|: >
9867 GetText()->toupper()
9868
9869tr({src}, {fromstr}, {tostr}) *tr()*
9870 The result is a copy of the {src} string with all characters
9871 which appear in {fromstr} replaced by the character in that
9872 position in the {tostr} string. Thus the first character in
9873 {fromstr} is translated into the first character in {tostr}
9874 and so on. Exactly like the unix "tr" command.
9875 This code also deals with multibyte characters properly.
9876
Bram Moolenaard592deb2022-06-17 15:42:40 +01009877 Returns an empty string on error.
9878
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009879 Examples: >
9880 echo tr("hello there", "ht", "HT")
9881< returns "Hello THere" >
9882 echo tr("<blob>", "<>", "{}")
9883< returns "{blob}"
9884
9885 Can also be used as a |method|: >
9886 GetText()->tr(from, to)
9887
9888trim({text} [, {mask} [, {dir}]]) *trim()*
9889 Return {text} as a String where any character in {mask} is
9890 removed from the beginning and/or end of {text}.
9891
9892 If {mask} is not given, {mask} is all characters up to 0x20,
9893 which includes Tab, space, NL and CR, plus the non-breaking
9894 space character 0xa0.
9895
9896 The optional {dir} argument specifies where to remove the
9897 characters:
9898 0 remove from the beginning and end of {text}
9899 1 remove only at the beginning of {text}
9900 2 remove only at the end of {text}
9901 When omitted both ends are trimmed.
9902
9903 This function deals with multibyte characters properly.
Bram Moolenaard592deb2022-06-17 15:42:40 +01009904 Returns an empty string on error.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009905
9906 Examples: >
9907 echo trim(" some text ")
9908< returns "some text" >
Bram Moolenaarc51cf032022-02-26 12:25:45 +00009909 echo trim(" \r\t\t\r RESERVE \t\n\x0B\xA0") .. "_TAIL"
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009910< returns "RESERVE_TAIL" >
9911 echo trim("rm<Xrm<>X>rrm", "rm<>")
9912< returns "Xrm<>X" (characters in the middle are not removed) >
9913 echo trim(" vim ", " ", 2)
9914< returns " vim"
9915
9916 Can also be used as a |method|: >
9917 GetText()->trim()
9918
9919trunc({expr}) *trunc()*
9920 Return the largest integral value with magnitude less than or
9921 equal to {expr} as a |Float| (truncate towards zero).
9922 {expr} must evaluate to a |Float| or a |Number|.
Bram Moolenaard592deb2022-06-17 15:42:40 +01009923 Returns 0.0 if {expr} is not a |Float| or a |Number|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009924 Examples: >
9925 echo trunc(1.456)
9926< 1.0 >
9927 echo trunc(-5.456)
9928< -5.0 >
9929 echo trunc(4.0)
9930< 4.0
9931
9932 Can also be used as a |method|: >
9933 Compute()->trunc()
9934<
Bram Moolenaar1cae5a02021-12-27 21:28:34 +00009935 *type()*
9936type({expr}) The result is a Number representing the type of {expr}.
9937 Instead of using the number directly, it is better to use the
9938 v:t_ variable that has the value:
9939 Number: 0 |v:t_number|
9940 String: 1 |v:t_string|
9941 Funcref: 2 |v:t_func|
9942 List: 3 |v:t_list|
9943 Dictionary: 4 |v:t_dict|
9944 Float: 5 |v:t_float|
9945 Boolean: 6 |v:t_bool| (v:false and v:true)
9946 None: 7 |v:t_none| (v:null and v:none)
9947 Job: 8 |v:t_job|
9948 Channel: 9 |v:t_channel|
9949 Blob: 10 |v:t_blob|
9950 For backward compatibility, this method can be used: >
9951 :if type(myvar) == type(0)
9952 :if type(myvar) == type("")
9953 :if type(myvar) == type(function("tr"))
9954 :if type(myvar) == type([])
9955 :if type(myvar) == type({})
9956 :if type(myvar) == type(0.0)
9957 :if type(myvar) == type(v:false)
9958 :if type(myvar) == type(v:none)
9959< To check if the v:t_ variables exist use this: >
9960 :if exists('v:t_number')
9961
9962< Can also be used as a |method|: >
9963 mylist->type()
9964
9965
9966typename({expr}) *typename()*
9967 Return a string representation of the type of {expr}.
9968 Example: >
9969 echo typename([1, 2, 3])
9970 list<number>
9971
9972
9973undofile({name}) *undofile()*
9974 Return the name of the undo file that would be used for a file
9975 with name {name} when writing. This uses the 'undodir'
9976 option, finding directories that exist. It does not check if
9977 the undo file exists.
9978 {name} is always expanded to the full path, since that is what
9979 is used internally.
9980 If {name} is empty undofile() returns an empty string, since a
9981 buffer without a file name will not write an undo file.
9982 Useful in combination with |:wundo| and |:rundo|.
9983 When compiled without the |+persistent_undo| option this always
9984 returns an empty string.
9985
9986 Can also be used as a |method|: >
9987 GetFilename()->undofile()
9988
9989undotree() *undotree()*
9990 Return the current state of the undo tree in a dictionary with
9991 the following items:
9992 "seq_last" The highest undo sequence number used.
9993 "seq_cur" The sequence number of the current position in
9994 the undo tree. This differs from "seq_last"
9995 when some changes were undone.
9996 "time_cur" Time last used for |:earlier| and related
9997 commands. Use |strftime()| to convert to
9998 something readable.
9999 "save_last" Number of the last file write. Zero when no
10000 write yet.
10001 "save_cur" Number of the current position in the undo
10002 tree.
10003 "synced" Non-zero when the last undo block was synced.
10004 This happens when waiting from input from the
10005 user. See |undo-blocks|.
10006 "entries" A list of dictionaries with information about
10007 undo blocks.
10008
10009 The first item in the "entries" list is the oldest undo item.
10010 Each List item is a |Dictionary| with these items:
10011 "seq" Undo sequence number. Same as what appears in
10012 |:undolist|.
10013 "time" Timestamp when the change happened. Use
10014 |strftime()| to convert to something readable.
10015 "newhead" Only appears in the item that is the last one
10016 that was added. This marks the last change
10017 and where further changes will be added.
10018 "curhead" Only appears in the item that is the last one
10019 that was undone. This marks the current
10020 position in the undo tree, the block that will
10021 be used by a redo command. When nothing was
10022 undone after the last change this item will
10023 not appear anywhere.
10024 "save" Only appears on the last block before a file
10025 write. The number is the write count. The
10026 first write has number 1, the last one the
10027 "save_last" mentioned above.
10028 "alt" Alternate entry. This is again a List of undo
10029 blocks. Each item may again have an "alt"
10030 item.
10031
10032uniq({list} [, {func} [, {dict}]]) *uniq()* *E882*
10033 Remove second and succeeding copies of repeated adjacent
10034 {list} items in-place. Returns {list}. If you want a list
10035 to remain unmodified make a copy first: >
10036 :let newlist = uniq(copy(mylist))
10037< The default compare function uses the string representation of
10038 each item. For the use of {func} and {dict} see |sort()|.
10039
Bram Moolenaard592deb2022-06-17 15:42:40 +010010040 Returns zero if {list} is not a |List|.
10041
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010042 Can also be used as a |method|: >
10043 mylist->uniq()
10044
10045values({dict}) *values()*
10046 Return a |List| with all the values of {dict}. The |List| is
10047 in arbitrary order. Also see |items()| and |keys()|.
Bram Moolenaard592deb2022-06-17 15:42:40 +010010048 Returns zero if {dict} is not a |Dict|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010049
10050 Can also be used as a |method|: >
10051 mydict->values()
10052
LemonBoy0f7a3e12022-05-26 12:10:37 +010010053virtcol({expr} [, {list}]) *virtcol()*
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010054 The result is a Number, which is the screen column of the file
10055 position given with {expr}. That is, the last screen position
10056 occupied by the character at that position, when the screen
10057 would be of unlimited width. When there is a <Tab> at the
10058 position, the returned Number will be the column at the end of
10059 the <Tab>. For example, for a <Tab> in column 1, with 'ts'
10060 set to 8, it returns 8. |conceal| is ignored.
10061 For the byte position use |col()|.
LemonBoy0f7a3e12022-05-26 12:10:37 +010010062
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010063 For the use of {expr} see |col()|.
LemonBoy0f7a3e12022-05-26 12:10:37 +010010064
10065 When 'virtualedit' is used {expr} can be [lnum, col, off],
10066 where "off" is the offset in screen columns from the start of
10067 the character. E.g., a position within a <Tab> or after the
10068 last character. When "off" is omitted zero is used. When
10069 Virtual editing is active in the current mode, a position
10070 beyond the end of the line can be returned. Also see
10071 |'virtualedit'|
10072
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010073 The accepted positions are:
10074 . the cursor position
10075 $ the end of the cursor line (the result is the
10076 number of displayed characters in the cursor line
10077 plus one)
10078 'x position of mark x (if the mark is not set, 0 is
10079 returned)
10080 v In Visual mode: the start of the Visual area (the
10081 cursor is the end). When not in Visual mode
10082 returns the cursor position. Differs from |'<| in
10083 that it's updated right away.
LemonBoy0f7a3e12022-05-26 12:10:37 +010010084
10085 If {list} is present and non-zero then virtcol() returns a List
10086 with the first and last screen position occupied by the
10087 character.
10088
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010089 Note that only marks in the current file can be used.
10090 Examples: >
LemonBoy0f7a3e12022-05-26 12:10:37 +010010091 " With text "foo^Lbar" and cursor on the "^L":
10092
10093 virtcol(".") " returns 5
10094 virtcol(".", 1) " returns [4, 5]
10095 virtcol("$") " returns 9
10096
10097 " With text " there", with 't at 'h':
10098
10099 virtcol("'t") " returns 6
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010100< The first column is 1. 0 is returned for an error.
10101 A more advanced example that echoes the maximum length of
10102 all lines: >
10103 echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
10104
10105< Can also be used as a |method|: >
10106 GetPos()->virtcol()
10107
Bram Moolenaar5a6ec102022-05-27 21:58:00 +010010108virtcol2col({winid}, {lnum}, {col}) *virtcol2col()*
10109 The result is a Number, which is the byte index of the
10110 character in window {winid} at buffer line {lnum} and virtual
10111 column {col}.
10112
10113 If {col} is greater than the last virtual column in line
10114 {lnum}, then the byte index of the character at the last
10115 virtual column is returned.
10116
10117 The {winid} argument can be the window number or the
10118 |window-ID|. If this is zero, then the current window is used.
10119
10120 Returns -1 if the window {winid} doesn't exist or the buffer
10121 line {lnum} or virtual column {col} is invalid.
10122
10123 See also |screenpos()|, |virtcol()| and |col()|.
10124
10125 Can also be used as a |method|: >
10126 GetWinid()->virtcol2col(lnum, col)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010127
10128visualmode([{expr}]) *visualmode()*
10129 The result is a String, which describes the last Visual mode
10130 used in the current buffer. Initially it returns an empty
10131 string, but once Visual mode has been used, it returns "v",
10132 "V", or "<CTRL-V>" (a single CTRL-V character) for
10133 character-wise, line-wise, or block-wise Visual mode
10134 respectively.
10135 Example: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +000010136 :exe "normal " .. visualmode()
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010137< This enters the same Visual mode as before. It is also useful
10138 in scripts if you wish to act differently depending on the
10139 Visual mode that was used.
10140 If Visual mode is active, use |mode()| to get the Visual mode
10141 (e.g., in a |:vmap|).
10142 If {expr} is supplied and it evaluates to a non-zero Number or
10143 a non-empty String, then the Visual mode will be cleared and
10144 the old value is returned. See |non-zero-arg|.
10145
10146wildmenumode() *wildmenumode()*
10147 Returns |TRUE| when the wildmenu is active and |FALSE|
10148 otherwise. See 'wildmenu' and 'wildmode'.
10149 This can be used in mappings to handle the 'wildcharm' option
10150 gracefully. (Makes only sense with |mapmode-c| mappings).
10151
10152 For example to make <c-j> work like <down> in wildmode, use: >
10153 :cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"
10154<
10155 (Note, this needs the 'wildcharm' option set appropriately).
10156
10157win_execute({id}, {command} [, {silent}]) *win_execute()*
10158 Like `execute()` but in the context of window {id}.
10159 The window will temporarily be made the current window,
10160 without triggering autocommands or changing directory. When
10161 executing {command} autocommands will be triggered, this may
10162 have unexpected side effects. Use |:noautocmd| if needed.
10163 Example: >
10164 call win_execute(winid, 'set syntax=python')
10165< Doing the same with `setwinvar()` would not trigger
10166 autocommands and not actually show syntax highlighting.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010167 *E994*
10168 Not all commands are allowed in popup windows.
10169 When window {id} does not exist then no error is given and
10170 an empty string is returned.
10171
10172 Can also be used as a |method|, the base is passed as the
10173 second argument: >
10174 GetCommand()->win_execute(winid)
10175
10176win_findbuf({bufnr}) *win_findbuf()*
10177 Returns a |List| with |window-ID|s for windows that contain
10178 buffer {bufnr}. When there is none the list is empty.
10179
10180 Can also be used as a |method|: >
10181 GetBufnr()->win_findbuf()
10182
10183win_getid([{win} [, {tab}]]) *win_getid()*
10184 Get the |window-ID| for the specified window.
10185 When {win} is missing use the current window.
10186 With {win} this is the window number. The top window has
10187 number 1.
10188 Without {tab} use the current tab, otherwise the tab with
10189 number {tab}. The first tab has number one.
10190 Return zero if the window cannot be found.
10191
10192 Can also be used as a |method|: >
10193 GetWinnr()->win_getid()
10194
10195
10196win_gettype([{nr}]) *win_gettype()*
10197 Return the type of the window:
10198 "autocmd" autocommand window. Temporary window
10199 used to execute autocommands.
10200 "command" command-line window |cmdwin|
10201 (empty) normal window
10202 "loclist" |location-list-window|
10203 "popup" popup window |popup|
10204 "preview" preview window |preview-window|
10205 "quickfix" |quickfix-window|
10206 "unknown" window {nr} not found
10207
10208 When {nr} is omitted return the type of the current window.
10209 When {nr} is given return the type of this window by number or
10210 |window-ID|.
10211
10212 Also see the 'buftype' option. When running a terminal in a
10213 popup window then 'buftype' is "terminal" and win_gettype()
10214 returns "popup".
10215
10216 Can also be used as a |method|: >
10217 GetWinid()->win_gettype()
10218<
10219win_gotoid({expr}) *win_gotoid()*
10220 Go to window with ID {expr}. This may also change the current
10221 tabpage.
10222 Return TRUE if successful, FALSE if the window cannot be found.
10223
10224 Can also be used as a |method|: >
10225 GetWinid()->win_gotoid()
10226
10227win_id2tabwin({expr}) *win_id2tabwin()*
10228 Return a list with the tab number and window number of window
10229 with ID {expr}: [tabnr, winnr].
10230 Return [0, 0] if the window cannot be found.
10231
10232 Can also be used as a |method|: >
10233 GetWinid()->win_id2tabwin()
10234
10235win_id2win({expr}) *win_id2win()*
10236 Return the window number of window with ID {expr}.
10237 Return 0 if the window cannot be found in the current tabpage.
10238
10239 Can also be used as a |method|: >
10240 GetWinid()->win_id2win()
10241
Daniel Steinbergee630312022-01-10 13:36:34 +000010242win_move_separator({nr}, {offset}) *win_move_separator()*
10243 Move window {nr}'s vertical separator (i.e., the right border)
10244 by {offset} columns, as if being dragged by the mouse. {nr}
10245 can be a window number or |window-ID|. A positive {offset}
10246 moves right and a negative {offset} moves left. Moving a
10247 window's vertical separator will change the width of the
10248 window and the width of other windows adjacent to the vertical
10249 separator. The magnitude of movement may be smaller than
10250 specified (e.g., as a consequence of maintaining
10251 'winminwidth'). Returns TRUE if the window can be found and
10252 FALSE otherwise.
Bram Moolenaard592deb2022-06-17 15:42:40 +010010253 This will fail for the rightmost window and a full-width
10254 window, since it has no separator on the right.
Bram Moolenaar76db9e02022-11-09 21:21:04 +000010255 Only works for the current tab page. *E1308*
Daniel Steinbergee630312022-01-10 13:36:34 +000010256
10257 Can also be used as a |method|: >
10258 GetWinnr()->win_move_separator(offset)
10259
10260win_move_statusline({nr}, {offset}) *win_move_statusline()*
10261 Move window {nr}'s status line (i.e., the bottom border) by
10262 {offset} rows, as if being dragged by the mouse. {nr} can be a
10263 window number or |window-ID|. A positive {offset} moves down
10264 and a negative {offset} moves up. Moving a window's status
10265 line will change the height of the window and the height of
10266 other windows adjacent to the status line. The magnitude of
10267 movement may be smaller than specified (e.g., as a consequence
10268 of maintaining 'winminheight'). Returns TRUE if the window can
10269 be found and FALSE otherwise.
Bram Moolenaar76db9e02022-11-09 21:21:04 +000010270 Only works for the current tab page.
Daniel Steinbergee630312022-01-10 13:36:34 +000010271
10272 Can also be used as a |method|: >
10273 GetWinnr()->win_move_statusline(offset)
10274
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010275win_screenpos({nr}) *win_screenpos()*
10276 Return the screen position of window {nr} as a list with two
10277 numbers: [row, col]. The first window always has position
10278 [1, 1], unless there is a tabline, then it is [2, 1].
10279 {nr} can be the window number or the |window-ID|. Use zero
10280 for the current window.
10281 Returns [0, 0] if the window cannot be found in the current
10282 tabpage.
10283
10284 Can also be used as a |method|: >
10285 GetWinid()->win_screenpos()
10286<
10287win_splitmove({nr}, {target} [, {options}]) *win_splitmove()*
10288 Move the window {nr} to a new split of the window {target}.
10289 This is similar to moving to {target}, creating a new window
10290 using |:split| but having the same contents as window {nr}, and
10291 then closing {nr}.
10292
10293 Both {nr} and {target} can be window numbers or |window-ID|s.
10294 Both must be in the current tab page.
10295
10296 Returns zero for success, non-zero for failure.
10297
10298 {options} is a |Dictionary| with the following optional entries:
10299 "vertical" When TRUE, the split is created vertically,
10300 like with |:vsplit|.
10301 "rightbelow" When TRUE, the split is made below or to the
10302 right (if vertical). When FALSE, it is done
10303 above or to the left (if vertical). When not
10304 present, the values of 'splitbelow' and
10305 'splitright' are used.
10306
10307 Can also be used as a |method|: >
10308 GetWinid()->win_splitmove(target)
10309<
10310
10311 *winbufnr()*
10312winbufnr({nr}) The result is a Number, which is the number of the buffer
10313 associated with window {nr}. {nr} can be the window number or
10314 the |window-ID|.
10315 When {nr} is zero, the number of the buffer in the current
10316 window is returned.
10317 When window {nr} doesn't exist, -1 is returned.
10318 Example: >
10319 :echo "The file in the current window is " . bufname(winbufnr(0))
10320<
10321 Can also be used as a |method|: >
10322 FindWindow()->winbufnr()->bufname()
10323<
10324 *wincol()*
10325wincol() The result is a Number, which is the virtual column of the
10326 cursor in the window. This is counting screen cells from the
10327 left side of the window. The leftmost column is one.
10328
10329 *windowsversion()*
10330windowsversion()
10331 The result is a String. For MS-Windows it indicates the OS
10332 version. E.g, Windows 10 is "10.0", Windows 8 is "6.2",
10333 Windows XP is "5.1". For non-MS-Windows systems the result is
10334 an empty string.
10335
10336winheight({nr}) *winheight()*
10337 The result is a Number, which is the height of window {nr}.
10338 {nr} can be the window number or the |window-ID|.
10339 When {nr} is zero, the height of the current window is
10340 returned. When window {nr} doesn't exist, -1 is returned.
10341 An existing window always has a height of zero or more.
10342 This excludes any window toolbar line.
10343 Examples: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +000010344 :echo "The current window has " .. winheight(0) .. " lines."
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010345
10346< Can also be used as a |method|: >
10347 GetWinid()->winheight()
10348<
10349winlayout([{tabnr}]) *winlayout()*
10350 The result is a nested List containing the layout of windows
10351 in a tabpage.
10352
10353 Without {tabnr} use the current tabpage, otherwise the tabpage
10354 with number {tabnr}. If the tabpage {tabnr} is not found,
10355 returns an empty list.
10356
10357 For a leaf window, it returns:
10358 ['leaf', {winid}]
10359 For horizontally split windows, which form a column, it
10360 returns:
10361 ['col', [{nested list of windows}]]
10362 For vertically split windows, which form a row, it returns:
10363 ['row', [{nested list of windows}]]
10364
10365 Example: >
10366 " Only one window in the tab page
10367 :echo winlayout()
10368 ['leaf', 1000]
10369 " Two horizontally split windows
10370 :echo winlayout()
10371 ['col', [['leaf', 1000], ['leaf', 1001]]]
10372 " The second tab page, with three horizontally split
10373 " windows, with two vertically split windows in the
10374 " middle window
10375 :echo winlayout(2)
10376 ['col', [['leaf', 1002], ['row', [['leaf', 1003],
10377 ['leaf', 1001]]], ['leaf', 1000]]]
10378<
10379 Can also be used as a |method|: >
10380 GetTabnr()->winlayout()
10381<
10382 *winline()*
10383winline() The result is a Number, which is the screen line of the cursor
10384 in the window. This is counting screen lines from the top of
10385 the window. The first line is one.
10386 If the cursor was moved the view on the file will be updated
10387 first, this may cause a scroll.
10388
10389 *winnr()*
10390winnr([{arg}]) The result is a Number, which is the number of the current
10391 window. The top window has number 1.
10392 Returns zero for a popup window.
10393
10394 The optional argument {arg} supports the following values:
10395 $ the number of the last window (the window
10396 count).
10397 # the number of the last accessed window (where
10398 |CTRL-W_p| goes to). If there is no previous
10399 window or it is in another tab page 0 is
10400 returned.
10401 {N}j the number of the Nth window below the
10402 current window (where |CTRL-W_j| goes to).
10403 {N}k the number of the Nth window above the current
10404 window (where |CTRL-W_k| goes to).
10405 {N}h the number of the Nth window left of the
10406 current window (where |CTRL-W_h| goes to).
10407 {N}l the number of the Nth window right of the
10408 current window (where |CTRL-W_l| goes to).
10409 The number can be used with |CTRL-W_w| and ":wincmd w"
10410 |:wincmd|.
Bram Moolenaar016188f2022-06-06 20:52:59 +010010411 When {arg} is invalid an error is given and zero is returned.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010412 Also see |tabpagewinnr()| and |win_getid()|.
10413 Examples: >
10414 let window_count = winnr('$')
10415 let prev_window = winnr('#')
10416 let wnum = winnr('3k')
10417
10418< Can also be used as a |method|: >
10419 GetWinval()->winnr()
10420<
10421 *winrestcmd()*
10422winrestcmd() Returns a sequence of |:resize| commands that should restore
10423 the current window sizes. Only works properly when no windows
10424 are opened or closed and the current window and tab page is
10425 unchanged.
10426 Example: >
10427 :let cmd = winrestcmd()
10428 :call MessWithWindowSizes()
10429 :exe cmd
10430<
10431 *winrestview()*
10432winrestview({dict})
10433 Uses the |Dictionary| returned by |winsaveview()| to restore
10434 the view of the current window.
10435 Note: The {dict} does not have to contain all values, that are
10436 returned by |winsaveview()|. If values are missing, those
10437 settings won't be restored. So you can use: >
10438 :call winrestview({'curswant': 4})
10439<
10440 This will only set the curswant value (the column the cursor
10441 wants to move on vertical movements) of the cursor to column 5
10442 (yes, that is 5), while all other settings will remain the
10443 same. This is useful, if you set the cursor position manually.
10444
10445 If you have changed the values the result is unpredictable.
10446 If the window size changed the result won't be the same.
10447
10448 Can also be used as a |method|: >
10449 GetView()->winrestview()
10450<
10451 *winsaveview()*
10452winsaveview() Returns a |Dictionary| that contains information to restore
10453 the view of the current window. Use |winrestview()| to
10454 restore the view.
10455 This is useful if you have a mapping that jumps around in the
10456 buffer and you want to go back to the original view.
10457 This does not save fold information. Use the 'foldenable'
10458 option to temporarily switch off folding, so that folds are
10459 not opened when moving around. This may have side effects.
10460 The return value includes:
10461 lnum cursor line number
10462 col cursor column (Note: the first column
naohiro ono56200ee2022-01-01 14:59:44 +000010463 zero, as opposed to what |getcurpos()|
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010464 returns)
10465 coladd cursor column offset for 'virtualedit'
naohiro ono56200ee2022-01-01 14:59:44 +000010466 curswant column for vertical movement (Note:
10467 the first column is zero, as opposed
10468 to what |getcurpos()| returns). After
10469 |$| command it will be a very large
10470 number equal to |v:maxcol|.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010471 topline first line in the window
10472 topfill filler lines, only in diff mode
10473 leftcol first column displayed; only used when
10474 'wrap' is off
10475 skipcol columns skipped
10476 Note that no option values are saved.
10477
10478
10479winwidth({nr}) *winwidth()*
10480 The result is a Number, which is the width of window {nr}.
10481 {nr} can be the window number or the |window-ID|.
10482 When {nr} is zero, the width of the current window is
10483 returned. When window {nr} doesn't exist, -1 is returned.
10484 An existing window always has a width of zero or more.
10485 Examples: >
Bram Moolenaarc51cf032022-02-26 12:25:45 +000010486 :echo "The current window has " .. winwidth(0) .. " columns."
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010487 :if winwidth(0) <= 50
10488 : 50 wincmd |
10489 :endif
10490< For getting the terminal or screen size, see the 'columns'
10491 option.
10492
10493 Can also be used as a |method|: >
10494 GetWinid()->winwidth()
10495
10496
10497wordcount() *wordcount()*
10498 The result is a dictionary of byte/chars/word statistics for
10499 the current buffer. This is the same info as provided by
10500 |g_CTRL-G|
10501 The return value includes:
10502 bytes Number of bytes in the buffer
10503 chars Number of chars in the buffer
10504 words Number of words in the buffer
10505 cursor_bytes Number of bytes before cursor position
10506 (not in Visual mode)
10507 cursor_chars Number of chars before cursor position
10508 (not in Visual mode)
10509 cursor_words Number of words before cursor position
10510 (not in Visual mode)
10511 visual_bytes Number of bytes visually selected
10512 (only in Visual mode)
10513 visual_chars Number of chars visually selected
10514 (only in Visual mode)
10515 visual_words Number of words visually selected
10516 (only in Visual mode)
10517
10518
10519 *writefile()*
10520writefile({object}, {fname} [, {flags}])
10521 When {object} is a |List| write it to file {fname}. Each list
10522 item is separated with a NL. Each list item must be a String
10523 or Number.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010524 All NL characters are replaced with a NUL character.
10525 Inserting CR characters needs to be done before passing {list}
10526 to writefile().
Bram Moolenaar806a2732022-09-04 15:40:36 +010010527
10528 When {object} is a |Blob| write the bytes to file {fname}
10529 unmodified, also when binary mode is not specified.
10530
10531 {flags} must be a String. These characters are recognized:
10532
10533 'b' Binary mode is used: There will not be a NL after the
10534 last list item. An empty item at the end does cause the
10535 last line in the file to end in a NL.
10536
10537 'a' Append mode is used, lines are appended to the file: >
10538 :call writefile(["foo"], "event.log", "a")
10539 :call writefile(["bar"], "event.log", "a")
10540<
10541 'D' Delete the file when the current function ends. This
10542 works like: >
10543 :defer delete({fname})
10544< Fails when not in a function. Also see |:defer|.
10545
10546 's' fsync() is called after writing the file. This flushes
10547 the file to disk, if possible. This takes more time but
10548 avoids losing the file if the system crashes.
10549
10550 'S' fsync() is not called, even when 'fsync' is set.
10551
10552 When {flags} does not contain "S" or "s" then fsync() is
10553 called if the 'fsync' option is set.
10554
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010555 An existing file is overwritten, if possible.
Bram Moolenaar806a2732022-09-04 15:40:36 +010010556
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010557 When the write fails -1 is returned, otherwise 0. There is an
10558 error message if the file can't be created or when writing
10559 fails.
Bram Moolenaar806a2732022-09-04 15:40:36 +010010560
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010561 Also see |readfile()|.
10562 To copy a file byte for byte: >
10563 :let fl = readfile("foo", "b")
10564 :call writefile(fl, "foocopy", "b")
10565
10566< Can also be used as a |method|: >
10567 GetText()->writefile("thefile")
10568
10569
10570xor({expr}, {expr}) *xor()*
10571 Bitwise XOR on the two arguments. The arguments are converted
10572 to a number. A List, Dict or Float argument causes an error.
Bram Moolenaar5a6ec102022-05-27 21:58:00 +010010573 Also see `and()` and `or()`.
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010574 Example: >
10575 :let bits = xor(bits, 0x80)
10576<
10577 Can also be used as a |method|: >
10578 :let bits = bits->xor(0x80)
10579<
10580
10581==============================================================================
105823. Feature list *feature-list*
10583
10584There are three types of features:
105851. Features that are only supported when they have been enabled when Vim
10586 was compiled |+feature-list|. Example: >
10587 :if has("cindent")
10588< *gui_running*
105892. Features that are only supported when certain conditions have been met.
10590 Example: >
10591 :if has("gui_running")
10592< *has-patch*
105933. Beyond a certain version or at a certain version and including a specific
10594 patch. The "patch-7.4.248" feature means that the Vim version is 7.5 or
10595 later, or it is version 7.4 and patch 248 was included. Example: >
10596 :if has("patch-7.4.248")
10597< Note that it's possible for patch 248 to be omitted even though 249 is
10598 included. Only happens when cherry-picking patches.
10599 Note that this form only works for patch 7.4.237 and later, before that
10600 you need to check for the patch and the v:version. Example (checking
10601 version 6.2.148 or later): >
10602 :if v:version > 602 || (v:version == 602 && has("patch148"))
10603
10604Hint: To find out if Vim supports backslashes in a file name (MS-Windows),
10605use: `if exists('+shellslash')`
10606
10607
10608acl Compiled with |ACL| support.
Bram Moolenaar2ee347f2022-08-26 17:53:44 +010010609all_builtin_terms Compiled with all builtin terminals enabled. (always
10610 true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010611amiga Amiga version of Vim.
10612arabic Compiled with Arabic support |Arabic|.
10613arp Compiled with ARP support (Amiga).
10614autocmd Compiled with autocommand support. (always true)
10615autochdir Compiled with support for 'autochdir'
10616autoservername Automatically enable |clientserver|
10617balloon_eval Compiled with |balloon-eval| support.
10618balloon_multiline GUI supports multiline balloons.
10619beos BeOS version of Vim.
10620browse Compiled with |:browse| support, and browse() will
10621 work.
10622browsefilter Compiled with support for |browsefilter|.
10623bsd Compiled on an OS in the BSD family (excluding macOS).
Bram Moolenaar2ee347f2022-08-26 17:53:44 +010010624builtin_terms Compiled with some builtin terminals. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010625byte_offset Compiled with support for 'o' in 'statusline'
10626channel Compiled with support for |channel| and |job|
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010010627cindent Compiled with 'cindent' support. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010628clientserver Compiled with remote invocation support |clientserver|.
10629clipboard Compiled with 'clipboard' support.
10630clipboard_working Compiled with 'clipboard' support and it can be used.
10631cmdline_compl Compiled with |cmdline-completion| support.
10632cmdline_hist Compiled with |cmdline-history| support.
10633cmdline_info Compiled with 'showcmd' and 'ruler' support.
10634comments Compiled with |'comments'| support.
10635compatible Compiled to be very Vi compatible.
10636conpty Platform where |ConPTY| can be used.
10637cryptv Compiled with encryption support |encryption|.
10638cscope Compiled with |cscope| support.
10639cursorbind Compiled with |'cursorbind'| (always true)
10640debug Compiled with "DEBUG" defined.
10641dialog_con Compiled with console dialog support.
10642dialog_gui Compiled with GUI dialog support.
10643diff Compiled with |vimdiff| and 'diff' support.
10644digraphs Compiled with support for digraphs.
10645directx Compiled with support for DirectX and 'renderoptions'.
10646dnd Compiled with support for the "~ register |quote_~|.
10647drop_file Compiled with |drop_file| support.
10648ebcdic Compiled on a machine with ebcdic character set.
10649emacs_tags Compiled with support for Emacs tags.
10650eval Compiled with expression evaluation support. Always
10651 true, of course!
10652ex_extra |+ex_extra| (always true)
10653extra_search Compiled with support for |'incsearch'| and
10654 |'hlsearch'|
10655farsi Support for Farsi was removed |farsi|.
Bram Moolenaarf80f40a2022-08-25 16:02:23 +010010656file_in_path Compiled with support for |gf| and |<cfile>| (always
10657 true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010658filterpipe When 'shelltemp' is off pipes are used for shell
10659 read/write/filter commands
10660find_in_path Compiled with support for include file searches
10661 |+find_in_path|.
10662float Compiled with support for |Float|.
10663fname_case Case in file names matters (for Amiga and MS-Windows
10664 this is not present).
10665folding Compiled with |folding| support.
10666footer Compiled with GUI footer support. |gui-footer|
10667fork Compiled to use fork()/exec() instead of system().
10668gettext Compiled with message translation |multi-lang|
10669gui Compiled with GUI enabled.
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +010010670gui_athena Compiled with Athena GUI (always false).
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010671gui_gnome Compiled with Gnome support (gui_gtk is also defined).
10672gui_gtk Compiled with GTK+ GUI (any version).
10673gui_gtk2 Compiled with GTK+ 2 GUI (gui_gtk is also defined).
10674gui_gtk3 Compiled with GTK+ 3 GUI (gui_gtk is also defined).
10675gui_haiku Compiled with Haiku GUI.
10676gui_mac Compiled with Macintosh GUI.
10677gui_motif Compiled with Motif GUI.
10678gui_photon Compiled with Photon GUI.
10679gui_running Vim is running in the GUI, or it will start soon.
10680gui_win32 Compiled with MS-Windows Win32 GUI.
10681gui_win32s idem, and Win32s system being used (Windows 3.1)
10682haiku Haiku version of Vim.
10683hangul_input Compiled with Hangul input support. |hangul|
10684hpux HP-UX version of Vim.
10685iconv Can use iconv() for conversion.
10686insert_expand Compiled with support for CTRL-X expansion commands in
10687 Insert mode. (always true)
10688job Compiled with support for |channel| and |job|
10689ipv6 Compiled with support for IPv6 networking in |channel|.
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010010690jumplist Compiled with |jumplist| support. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010691keymap Compiled with 'keymap' support.
10692lambda Compiled with |lambda| support.
10693langmap Compiled with 'langmap' support.
10694libcall Compiled with |libcall()| support.
10695linebreak Compiled with 'linebreak', 'breakat', 'showbreak' and
10696 'breakindent' support.
10697linux Linux version of Vim.
10698lispindent Compiled with support for lisp indenting.
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010010699 (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010700listcmds Compiled with commands for the buffer list |:files|
10701 and the argument list |arglist|.
10702localmap Compiled with local mappings and abbr. |:map-local|
10703lua Compiled with Lua interface |Lua|.
10704mac Any Macintosh version of Vim cf. osx
10705macunix Synonym for osxdarwin
10706menu Compiled with support for |:menu|.
10707mksession Compiled with support for |:mksession|.
10708modify_fname Compiled with file name modifiers. |filename-modifiers|
10709 (always true)
10710mouse Compiled with support for mouse.
10711mouse_dec Compiled with support for Dec terminal mouse.
10712mouse_gpm Compiled with support for gpm (Linux console mouse)
10713mouse_gpm_enabled GPM mouse is working
10714mouse_netterm Compiled with support for netterm mouse.
10715mouse_pterm Compiled with support for qnx pterm mouse.
10716mouse_sysmouse Compiled with support for sysmouse (*BSD console mouse)
10717mouse_sgr Compiled with support for sgr mouse.
10718mouse_urxvt Compiled with support for urxvt mouse.
10719mouse_xterm Compiled with support for xterm mouse.
10720mouseshape Compiled with support for 'mouseshape'.
10721multi_byte Compiled with support for 'encoding' (always true)
10722multi_byte_encoding 'encoding' is set to a multibyte encoding.
10723multi_byte_ime Compiled with support for IME input method.
10724multi_lang Compiled with support for multiple languages.
10725mzscheme Compiled with MzScheme interface |mzscheme|.
10726nanotime Compiled with sub-second time stamp checks.
10727netbeans_enabled Compiled with support for |netbeans| and connected.
10728netbeans_intg Compiled with support for |netbeans|.
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010010729num64 Compiled with 64-bit |Number| support. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010730ole Compiled with OLE automation support for Win32.
10731osx Compiled for macOS cf. mac
10732osxdarwin Compiled for macOS, with |mac-darwin-feature|
10733packages Compiled with |packages| support.
10734path_extra Compiled with up/downwards search in 'path' and 'tags'
10735perl Compiled with Perl interface.
10736persistent_undo Compiled with support for persistent undo history.
10737postscript Compiled with PostScript file printing.
10738printer Compiled with |:hardcopy| support.
10739profile Compiled with |:profile| support.
10740python Python 2.x interface available. |has-python|
10741python_compiled Compiled with Python 2.x interface. |has-python|
10742python_dynamic Python 2.x interface is dynamically loaded. |has-python|
10743python3 Python 3.x interface available. |has-python|
10744python3_compiled Compiled with Python 3.x interface. |has-python|
10745python3_dynamic Python 3.x interface is dynamically loaded. |has-python|
10746pythonx Python 2.x and/or 3.x interface available. |python_x|
10747qnx QNX version of Vim.
10748quickfix Compiled with |quickfix| support.
10749reltime Compiled with |reltime()| support.
10750rightleft Compiled with 'rightleft' support.
10751ruby Compiled with Ruby interface |ruby|.
10752scrollbind Compiled with 'scrollbind' support. (always true)
10753showcmd Compiled with 'showcmd' support.
10754signs Compiled with |:sign| support.
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010010755smartindent Compiled with 'smartindent' support. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010756sodium Compiled with libsodium for better crypt support
10757sound Compiled with sound support, e.g. `sound_playevent()`
10758spell Compiled with spell checking support |spell|.
10759startuptime Compiled with |--startuptime| support.
10760statusline Compiled with support for 'statusline', 'rulerformat'
10761 and special formats of 'titlestring' and 'iconstring'.
10762sun SunOS version of Vim.
10763sun_workshop Support for Sun |workshop| has been removed.
10764syntax Compiled with syntax highlighting support |syntax|.
10765syntax_items There are active syntax highlighting items for the
10766 current buffer.
10767system Compiled to use system() instead of fork()/exec().
10768tag_binary Compiled with binary searching in tags files
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010010769 |tag-binary-search|. (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010770tag_old_static Support for old static tags was removed, see
10771 |tag-old-static|.
10772tcl Compiled with Tcl interface.
10773termguicolors Compiled with true color in terminal support.
10774terminal Compiled with |terminal| support.
10775terminfo Compiled with terminfo instead of termcap.
10776termresponse Compiled with support for |t_RV| and |v:termresponse|.
10777textobjects Compiled with support for |text-objects|.
10778textprop Compiled with support for |text-properties|.
10779tgetent Compiled with tgetent support, able to use a termcap
10780 or terminfo file.
10781timers Compiled with |timer_start()| support.
10782title Compiled with window title support |'title'|.
Bram Moolenaare1dc76f2022-06-25 18:01:32 +010010783 (always true)
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010784toolbar Compiled with support for |gui-toolbar|.
10785ttyin input is a terminal (tty)
10786ttyout output is a terminal (tty)
10787unix Unix version of Vim. *+unix*
10788unnamedplus Compiled with support for "unnamedplus" in 'clipboard'
10789user_commands User-defined commands. (always true)
10790vartabs Compiled with variable tabstop support |'vartabstop'|.
10791vcon Win32: Virtual console support is working, can use
10792 'termguicolors'. Also see |+vtp|.
10793vertsplit Compiled with vertically split windows |:vsplit|.
10794 (always true)
10795vim_starting True while initial source'ing takes place. |startup|
10796 *vim_starting*
Bram Moolenaara6feb162022-01-02 12:06:33 +000010797vim9script Compiled with |Vim9| script support
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010798viminfo Compiled with viminfo support.
10799vimscript-1 Compiled Vim script version 1 support
10800vimscript-2 Compiled Vim script version 2 support
10801vimscript-3 Compiled Vim script version 3 support
Bram Moolenaar8a3b8052022-06-26 12:21:15 +010010802vimscript-4 Compiled Vim script version 4 support
Bram Moolenaar1cae5a02021-12-27 21:28:34 +000010803virtualedit Compiled with 'virtualedit' option. (always true)
10804visual Compiled with Visual mode. (always true)
10805visualextra Compiled with extra Visual mode commands. (always
10806 true) |blockwise-operators|.
10807vms VMS version of Vim.
10808vreplace Compiled with |gR| and |gr| commands. (always true)
10809vtp Compiled for vcon support |+vtp| (check vcon to find
10810 out if it works in the current console).
10811wildignore Compiled with 'wildignore' option.
10812wildmenu Compiled with 'wildmenu' option.
10813win16 old version for MS-Windows 3.1 (always false)
10814win32 Win32 version of Vim (MS-Windows 95 and later, 32 or
10815 64 bits)
10816win32unix Win32 version of Vim, using Unix files (Cygwin)
10817win64 Win64 version of Vim (MS-Windows 64 bit).
10818win95 Win32 version for MS-Windows 95/98/ME (always false)
10819winaltkeys Compiled with 'winaltkeys' option.
10820windows Compiled with support for more than one window.
10821 (always true)
10822writebackup Compiled with 'writebackup' default on.
10823xfontset Compiled with X fontset support |xfontset|.
10824xim Compiled with X input method support |xim|.
10825xpm Compiled with pixmap support.
10826xpm_w32 Compiled with pixmap support for Win32. (Only for
10827 backward compatibility. Use "xpm" instead.)
10828xsmp Compiled with X session management support.
10829xsmp_interact Compiled with interactive X session management support.
10830xterm_clipboard Compiled with support for xterm clipboard.
10831xterm_save Compiled with support for saving and restoring the
10832 xterm screen.
10833x11 Compiled with X11 support.
10834
10835
10836==============================================================================
108374. Matching a pattern in a String *string-match*
10838
10839This is common between several functions. A regexp pattern as explained at
10840|pattern| is normally used to find a match in the buffer lines. When a
10841pattern is used to find a match in a String, almost everything works in the
10842same way. The difference is that a String is handled like it is one line.
10843When it contains a "\n" character, this is not seen as a line break for the
10844pattern. It can be matched with a "\n" in the pattern, or with ".". Example:
10845>
10846 :let a = "aaaa\nxxxx"
10847 :echo matchstr(a, "..\n..")
10848 aa
10849 xx
10850 :echo matchstr(a, "a.x")
10851 a
10852 x
10853
10854Don't forget that "^" will only match at the first character of the String and
10855"$" at the last character of the string. They don't match after or before a
10856"\n".
10857
10858 vim:tw=78:ts=8:noet:ft=help:norl: