xref: /vim-8.2.3635/runtime/doc/eval.txt (revision ed37d9b3)
1*eval.txt*	For Vim version 8.2.  Last change: 2020 Apr 19
2
3
4		  VIM REFERENCE MANUAL	  by Bram Moolenaar
5
6
7Expression evaluation			*expression* *expr* *E15* *eval*
8
9Using expressions is introduced in chapter 41 of the user manual |usr_41.txt|.
10
11Note: Expression evaluation can be disabled at compile time.  If this has been
12done, the features in this document are not available.  See |+eval| and
13|no-eval-feature|.
14
15This file is about the backwards compatible Vim script.  For Vim9 script,
16which executes much faster, supports type checking and much more, see
17|vim9.txt|.
18
191.  Variables			|variables|
20    1.1 Variable types
21    1.2 Function references		|Funcref|
22    1.3 Lists				|Lists|
23    1.4 Dictionaries			|Dictionaries|
24    1.5 Blobs				|Blobs|
25    1.6 More about variables		|more-variables|
262.  Expression syntax		|expression-syntax|
273.  Internal variable		|internal-variables|
284.  Builtin Functions		|functions|
295.  Defining functions		|user-functions|
306.  Curly braces names		|curly-braces-names|
317.  Commands			|expression-commands|
328.  Exception handling		|exception-handling|
339.  Examples			|eval-examples|
3410. Vim script version		|vimscript-version|
3511. No +eval feature		|no-eval-feature|
3612. The sandbox			|eval-sandbox|
3713. Textlock			|textlock|
38
39Testing support is documented in |testing.txt|.
40Profiling is documented at |profiling|.
41
42==============================================================================
431. Variables						*variables*
44
451.1 Variable types ~
46						*E712* *E896* *E897* *E899*
47There are ten types of variables:
48
49							*Number* *Integer*
50Number		A 32 or 64 bit signed number.  |expr-number|
51		The number of bits is available in |v:numbersize|.
52		Examples:  -123  0x10  0177  0b1011
53
54Float		A floating point number. |floating-point-format| *Float*
55		{only when compiled with the |+float| feature}
56		Examples: 123.456  1.15e-6  -1.1e3
57
58							*E928*
59String		A NUL terminated string of 8-bit unsigned characters (bytes).
60		|expr-string| Examples: "ab\txx\"--"  'x-z''a,c'
61
62List		An ordered sequence of items, see |List| for details.
63		Example: [1, 2, ['a', 'b']]
64
65Dictionary	An associative, unordered array: Each entry has a key and a
66		value. |Dictionary|
67		Examples:
68			{'blue': "#0000ff", 'red': "#ff0000"}
69			#{blue: "#0000ff", red: "#ff0000"}
70
71Funcref		A reference to a function |Funcref|.
72		Example: function("strlen")
73		It can be bound to a dictionary and arguments, it then works
74		like a Partial.
75		Example: function("Callback", [arg], myDict)
76
77Special		|v:false|, |v:true|, |v:none| and |v:null|.  *Special*
78
79Job		Used for a job, see |job_start()|. *Job* *Jobs*
80
81Channel		Used for a channel, see |ch_open()|. *Channel* *Channels*
82
83Blob		Binary Large Object. Stores any sequence of bytes.  See |Blob|
84		for details
85		Example: 0zFF00ED015DAF
86		0z is an empty Blob.
87
88The Number and String types are converted automatically, depending on how they
89are used.
90
91Conversion from a Number to a String is by making the ASCII representation of
92the Number.  Examples:
93	Number 123	-->	String "123" ~
94	Number 0	-->	String "0" ~
95	Number -1	-->	String "-1" ~
96							*octal*
97Conversion from a String to a Number is done by converting the first digits to
98a number.  Hexadecimal "0xf9", Octal "017", and Binary "0b10" numbers are
99recognized (NOTE: when using |scriptversion-4| octal is not recognized).  If
100the String doesn't start with digits, the result is zero.
101Examples:
102	String "456"	-->	Number 456 ~
103	String "6bar"	-->	Number 6 ~
104	String "foo"	-->	Number 0 ~
105	String "0xf1"	-->	Number 241 ~
106	String "0100"	-->	Number 64 ~
107	String "0b101"	-->	Number 5 ~
108	String "-8"	-->	Number -8 ~
109	String "+8"	-->	Number 0 ~
110
111To force conversion from String to Number, add zero to it: >
112	:echo "0100" + 0
113<	64 ~
114
115To avoid a leading zero to cause octal conversion, or for using a different
116base, use |str2nr()|.
117
118						*TRUE* *FALSE* *Boolean*
119For boolean operators Numbers are used.  Zero is FALSE, non-zero is TRUE.
120You can also use |v:false| and |v:true|.  When TRUE is returned from a
121function it is the Number one, FALSE is the number zero.
122
123Note that in the command: >
124	:if "foo"
125	:" NOT executed
126"foo" is converted to 0, which means FALSE.  If the string starts with a
127non-zero number it means TRUE: >
128	:if "8foo"
129	:" executed
130To test for a non-empty string, use empty(): >
131	:if !empty("foo")
132<
133							*non-zero-arg*
134Function arguments often behave slightly different from |TRUE|: If the
135argument is present and it evaluates to a non-zero Number, |v:true| or a
136non-empty String, then the value is considered to be TRUE.
137Note that " " and "0" are also non-empty strings, thus considered to be TRUE.
138A List, Dictionary or Float is not a Number or String, thus evaluate to FALSE.
139
140		*E745* *E728* *E703* *E729* *E730* *E731* *E908* *E910* *E913*
141		*E974* *E975* *E976*
142|List|, |Dictionary|, |Funcref|, |Job|, |Channel| and |Blob| types are not
143automatically converted.
144
145							*E805* *E806* *E808*
146When mixing Number and Float the Number is converted to Float.  Otherwise
147there is no automatic conversion of Float.  You can use str2float() for String
148to Float, printf() for Float to String and float2nr() for Float to Number.
149
150			*E891* *E892* *E893* *E894* *E907* *E911* *E914*
151When expecting a Float a Number can also be used, but nothing else.
152
153						*no-type-checking*
154You will not get an error if you try to change the type of a variable.
155
156
1571.2 Function references ~
158					*Funcref* *E695* *E718*
159A Funcref variable is obtained with the |function()| function, the |funcref()|
160function or created with the lambda expression |expr-lambda|.  It can be used
161in an expression in the place of a function name, before the parenthesis
162around the arguments, to invoke the function it refers to.  Example: >
163
164	:let Fn = function("MyFunc")
165	:echo Fn()
166<							*E704* *E705* *E707*
167A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:".  You
168can use "g:" but the following name must still start with a capital.  You
169cannot have both a Funcref variable and a function with the same name.
170
171A special case is defining a function and directly assigning its Funcref to a
172Dictionary entry.  Example: >
173	:function dict.init() dict
174	:   let self.val = 0
175	:endfunction
176
177The key of the Dictionary can start with a lower case letter.  The actual
178function name is not used here.  Also see |numbered-function|.
179
180A Funcref can also be used with the |:call| command: >
181	:call Fn()
182	:call dict.init()
183
184The name of the referenced function can be obtained with |string()|. >
185	:let func = string(Fn)
186
187You can use |call()| to invoke a Funcref and use a list variable for the
188arguments: >
189	:let r = call(Fn, mylist)
190<
191								*Partial*
192A Funcref optionally binds a Dictionary and/or arguments.  This is also called
193a Partial.  This is created by passing the Dictionary and/or arguments to
194function() or funcref().  When calling the function the Dictionary and/or
195arguments will be passed to the function.  Example: >
196
197	let Cb = function('Callback', ['foo'], myDict)
198	call Cb('bar')
199
200This will invoke the function as if using: >
201	call myDict.Callback('foo', 'bar')
202
203This is very useful when passing a function around, e.g. in the arguments of
204|ch_open()|.
205
206Note that binding a function to a Dictionary also happens when the function is
207a member of the Dictionary: >
208
209	let myDict.myFunction = MyFunction
210	call myDict.myFunction()
211
212Here MyFunction() will get myDict passed as "self".  This happens when the
213"myFunction" member is accessed.  When making assigning "myFunction" to
214otherDict and calling it, it will be bound to otherDict: >
215
216	let otherDict.myFunction = myDict.myFunction
217	call otherDict.myFunction()
218
219Now "self" will be "otherDict".  But when the dictionary was bound explicitly
220this won't happen: >
221
222	let myDict.myFunction = function(MyFunction, myDict)
223	let otherDict.myFunction = myDict.myFunction
224	call otherDict.myFunction()
225
226Here "self" will be "myDict", because it was bound explicitly.
227
228
2291.3 Lists ~
230						*list* *List* *Lists* *E686*
231A List is an ordered sequence of items.  An item can be of any type.  Items
232can be accessed by their index number.  Items can be added and removed at any
233position in the sequence.
234
235
236List creation ~
237							*E696* *E697*
238A List is created with a comma separated list of items in square brackets.
239Examples: >
240	:let mylist = [1, two, 3, "four"]
241	:let emptylist = []
242
243An item can be any expression.  Using a List for an item creates a
244List of Lists: >
245	:let nestlist = [[11, 12], [21, 22], [31, 32]]
246
247An extra comma after the last item is ignored.
248
249
250List index ~
251							*list-index* *E684*
252An item in the List can be accessed by putting the index in square brackets
253after the List.  Indexes are zero-based, thus the first item has index zero. >
254	:let item = mylist[0]		" get the first item: 1
255	:let item = mylist[2]		" get the third item: 3
256
257When the resulting item is a list this can be repeated: >
258	:let item = nestlist[0][1]	" get the first list, second item: 12
259<
260A negative index is counted from the end.  Index -1 refers to the last item in
261the List, -2 to the last but one item, etc. >
262	:let last = mylist[-1]		" get the last item: "four"
263
264To avoid an error for an invalid index use the |get()| function.  When an item
265is not available it returns zero or the default value you specify: >
266	:echo get(mylist, idx)
267	:echo get(mylist, idx, "NONE")
268
269
270List concatenation ~
271
272Two lists can be concatenated with the "+" operator: >
273	:let longlist = mylist + [5, 6]
274	:let mylist += [7, 8]
275
276To prepend or append an item turn the item into a list by putting [] around
277it.  To change a list in-place see |list-modification| below.
278
279
280Sublist ~
281							*sublist*
282A part of the List can be obtained by specifying the first and last index,
283separated by a colon in square brackets: >
284	:let shortlist = mylist[2:-1]	" get List [3, "four"]
285
286Omitting the first index is similar to zero.  Omitting the last index is
287similar to -1. >
288	:let endlist = mylist[2:]	" from item 2 to the end: [3, "four"]
289	:let shortlist = mylist[2:2]	" List with one item: [3]
290	:let otherlist = mylist[:]	" make a copy of the List
291
292If the first index is beyond the last item of the List or the second item is
293before the first item, the result is an empty list.  There is no error
294message.
295
296If the second index is equal to or greater than the length of the list the
297length minus one is used: >
298	:let mylist = [0, 1, 2, 3]
299	:echo mylist[2:8]		" result: [2, 3]
300
301NOTE: mylist[s:e] means using the variable "s:e" as index.  Watch out for
302using a single letter variable before the ":".  Insert a space when needed:
303mylist[s : e].
304
305
306List identity ~
307							*list-identity*
308When variable "aa" is a list and you assign it to another variable "bb", both
309variables refer to the same list.  Thus changing the list "aa" will also
310change "bb": >
311	:let aa = [1, 2, 3]
312	:let bb = aa
313	:call add(aa, 4)
314	:echo bb
315<	[1, 2, 3, 4]
316
317Making a copy of a list is done with the |copy()| function.  Using [:] also
318works, as explained above.  This creates a shallow copy of the list: Changing
319a list item in the list will also change the item in the copied list: >
320	:let aa = [[1, 'a'], 2, 3]
321	:let bb = copy(aa)
322	:call add(aa, 4)
323	:let aa[0][1] = 'aaa'
324	:echo aa
325<	[[1, aaa], 2, 3, 4] >
326	:echo bb
327<	[[1, aaa], 2, 3]
328
329To make a completely independent list use |deepcopy()|.  This also makes a
330copy of the values in the list, recursively.  Up to a hundred levels deep.
331
332The operator "is" can be used to check if two variables refer to the same
333List.  "isnot" does the opposite.  In contrast "==" compares if two lists have
334the same value. >
335	:let alist = [1, 2, 3]
336	:let blist = [1, 2, 3]
337	:echo alist is blist
338<	0 >
339	:echo alist == blist
340<	1
341
342Note about comparing lists: Two lists are considered equal if they have the
343same length and all items compare equal, as with using "==".  There is one
344exception: When comparing a number with a string they are considered
345different.  There is no automatic type conversion, as with using "==" on
346variables.  Example: >
347	echo 4 == "4"
348<	1 >
349	echo [4] == ["4"]
350<	0
351
352Thus comparing Lists is more strict than comparing numbers and strings.  You
353can compare simple values this way too by putting them in a list: >
354
355	:let a = 5
356	:let b = "5"
357	:echo a == b
358<	1 >
359	:echo [a] == [b]
360<	0
361
362
363List unpack ~
364
365To unpack the items in a list to individual variables, put the variables in
366square brackets, like list items: >
367	:let [var1, var2] = mylist
368
369When the number of variables does not match the number of items in the list
370this produces an error.  To handle any extra items from the list append ";"
371and a variable name: >
372	:let [var1, var2; rest] = mylist
373
374This works like: >
375	:let var1 = mylist[0]
376	:let var2 = mylist[1]
377	:let rest = mylist[2:]
378
379Except that there is no error if there are only two items.  "rest" will be an
380empty list then.
381
382
383List modification ~
384							*list-modification*
385To change a specific item of a list use |:let| this way: >
386	:let list[4] = "four"
387	:let listlist[0][3] = item
388
389To change part of a list you can specify the first and last item to be
390modified.  The value must at least have the number of items in the range: >
391	:let list[3:5] = [3, 4, 5]
392
393Adding and removing items from a list is done with functions.  Here are a few
394examples: >
395	:call insert(list, 'a')		" prepend item 'a'
396	:call insert(list, 'a', 3)	" insert item 'a' before list[3]
397	:call add(list, "new")		" append String item
398	:call add(list, [1, 2])		" append a List as one new item
399	:call extend(list, [1, 2])	" extend the list with two more items
400	:let i = remove(list, 3)	" remove item 3
401	:unlet list[3]			" idem
402	:let l = remove(list, 3, -1)	" remove items 3 to last item
403	:unlet list[3 : ]		" idem
404	:call filter(list, 'v:val !~ "x"')  " remove items with an 'x'
405
406Changing the order of items in a list: >
407	:call sort(list)		" sort a list alphabetically
408	:call reverse(list)		" reverse the order of items
409	:call uniq(sort(list))		" sort and remove duplicates
410
411
412For loop ~
413
414The |:for| loop executes commands for each item in a list.  A variable is set
415to each item in the list in sequence.  Example: >
416	:for item in mylist
417	:   call Doit(item)
418	:endfor
419
420This works like: >
421	:let index = 0
422	:while index < len(mylist)
423	:   let item = mylist[index]
424	:   :call Doit(item)
425	:   let index = index + 1
426	:endwhile
427
428If all you want to do is modify each item in the list then the |map()|
429function will be a simpler method than a for loop.
430
431Just like the |:let| command, |:for| also accepts a list of variables.  This
432requires the argument to be a list of lists. >
433	:for [lnum, col] in [[1, 3], [2, 8], [3, 0]]
434	:   call Doit(lnum, col)
435	:endfor
436
437This works like a |:let| command is done for each list item.  Again, the types
438must remain the same to avoid an error.
439
440It is also possible to put remaining items in a List variable: >
441	:for [i, j; rest] in listlist
442	:   call Doit(i, j)
443	:   if !empty(rest)
444	:      echo "remainder: " . string(rest)
445	:   endif
446	:endfor
447
448
449List functions ~
450						*E714*
451Functions that are useful with a List: >
452	:let r = call(funcname, list)	" call a function with an argument list
453	:if empty(list)			" check if list is empty
454	:let l = len(list)		" number of items in list
455	:let big = max(list)		" maximum value in list
456	:let small = min(list)		" minimum value in list
457	:let xs = count(list, 'x')	" count nr of times 'x' appears in list
458	:let i = index(list, 'x')	" index of first 'x' in list
459	:let lines = getline(1, 10)	" get ten text lines from buffer
460	:call append('$', lines)	" append text lines in buffer
461	:let list = split("a b c")	" create list from items in a string
462	:let string = join(list, ', ')	" create string from list items
463	:let s = string(list)		" String representation of list
464	:call map(list, '">> " . v:val')  " prepend ">> " to each item
465
466Don't forget that a combination of features can make things simple.  For
467example, to add up all the numbers in a list: >
468	:exe 'let sum = ' . join(nrlist, '+')
469
470
4711.4 Dictionaries ~
472				*dict* *Dict* *Dictionaries* *Dictionary*
473A Dictionary is an associative array: Each entry has a key and a value.  The
474entry can be located with the key.  The entries are stored without a specific
475ordering.
476
477
478Dictionary creation ~
479						*E720* *E721* *E722* *E723*
480A Dictionary is created with a comma separated list of entries in curly
481braces.  Each entry has a key and a value, separated by a colon.  Each key can
482only appear once.  Examples: >
483	:let mydict = {1: 'one', 2: 'two', 3: 'three'}
484	:let emptydict = {}
485<							*E713* *E716* *E717*
486A key is always a String.  You can use a Number, it will be converted to a
487String automatically.  Thus the String '4' and the number 4 will find the same
488entry.  Note that the String '04' and the Number 04 are different, since the
489Number will be converted to the String '4'.  The empty string can also be used
490as a key.
491						*literal-Dict* *#{}*
492To avoid having to put quotes around every key the #{} form can be used.  This
493does require the key to consist only of ASCII letters, digits, '-' and '_'.
494Example: >
495	:let mydict = #{zero: 0, one_key: 1, two-key: 2, 333: 3}
496Note that 333 here is the string "333".  Empty keys are not possible with #{}.
497
498A value can be any expression.  Using a Dictionary for a value creates a
499nested Dictionary: >
500	:let nestdict = {1: {11: 'a', 12: 'b'}, 2: {21: 'c'}}
501
502An extra comma after the last entry is ignored.
503
504
505Accessing entries ~
506
507The normal way to access an entry is by putting the key in square brackets: >
508	:let val = mydict["one"]
509	:let mydict["four"] = 4
510
511You can add new entries to an existing Dictionary this way, unlike Lists.
512
513For keys that consist entirely of letters, digits and underscore the following
514form can be used |expr-entry|: >
515	:let val = mydict.one
516	:let mydict.four = 4
517
518Since an entry can be any type, also a List and a Dictionary, the indexing and
519key lookup can be repeated: >
520	:echo dict.key[idx].key
521
522
523Dictionary to List conversion ~
524
525You may want to loop over the entries in a dictionary.  For this you need to
526turn the Dictionary into a List and pass it to |:for|.
527
528Most often you want to loop over the keys, using the |keys()| function: >
529	:for key in keys(mydict)
530	:   echo key . ': ' . mydict[key]
531	:endfor
532
533The List of keys is unsorted.  You may want to sort them first: >
534	:for key in sort(keys(mydict))
535
536To loop over the values use the |values()| function:  >
537	:for v in values(mydict)
538	:   echo "value: " . v
539	:endfor
540
541If you want both the key and the value use the |items()| function.  It returns
542a List in which each item is a List with two items, the key and the value: >
543	:for [key, value] in items(mydict)
544	:   echo key . ': ' . value
545	:endfor
546
547
548Dictionary identity ~
549							*dict-identity*
550Just like Lists you need to use |copy()| and |deepcopy()| to make a copy of a
551Dictionary.  Otherwise, assignment results in referring to the same
552Dictionary: >
553	:let onedict = {'a': 1, 'b': 2}
554	:let adict = onedict
555	:let adict['a'] = 11
556	:echo onedict['a']
557	11
558
559Two Dictionaries compare equal if all the key-value pairs compare equal.  For
560more info see |list-identity|.
561
562
563Dictionary modification ~
564							*dict-modification*
565To change an already existing entry of a Dictionary, or to add a new entry,
566use |:let| this way: >
567	:let dict[4] = "four"
568	:let dict['one'] = item
569
570Removing an entry from a Dictionary is done with |remove()| or |:unlet|.
571Three ways to remove the entry with key "aaa" from dict: >
572	:let i = remove(dict, 'aaa')
573	:unlet dict.aaa
574	:unlet dict['aaa']
575
576Merging a Dictionary with another is done with |extend()|: >
577	:call extend(adict, bdict)
578This extends adict with all entries from bdict.  Duplicate keys cause entries
579in adict to be overwritten.  An optional third argument can change this.
580Note that the order of entries in a Dictionary is irrelevant, thus don't
581expect ":echo adict" to show the items from bdict after the older entries in
582adict.
583
584Weeding out entries from a Dictionary can be done with |filter()|: >
585	:call filter(dict, 'v:val =~ "x"')
586This removes all entries from "dict" with a value not matching 'x'.
587
588
589Dictionary function ~
590				*Dictionary-function* *self* *E725* *E862*
591When a function is defined with the "dict" attribute it can be used in a
592special way with a dictionary.  Example: >
593	:function Mylen() dict
594	:   return len(self.data)
595	:endfunction
596	:let mydict = {'data': [0, 1, 2, 3], 'len': function("Mylen")}
597	:echo mydict.len()
598
599This is like a method in object oriented programming.  The entry in the
600Dictionary is a |Funcref|.  The local variable "self" refers to the dictionary
601the function was invoked from.
602
603It is also possible to add a function without the "dict" attribute as a
604Funcref to a Dictionary, but the "self" variable is not available then.
605
606				*numbered-function* *anonymous-function*
607To avoid the extra name for the function it can be defined and directly
608assigned to a Dictionary in this way: >
609	:let mydict = {'data': [0, 1, 2, 3]}
610	:function mydict.len()
611	:   return len(self.data)
612	:endfunction
613	:echo mydict.len()
614
615The function will then get a number and the value of dict.len is a |Funcref|
616that references this function.  The function can only be used through a
617|Funcref|.  It will automatically be deleted when there is no |Funcref|
618remaining that refers to it.
619
620It is not necessary to use the "dict" attribute for a numbered function.
621
622If you get an error for a numbered function, you can find out what it is with
623a trick.  Assuming the function is 42, the command is: >
624	:function {42}
625
626
627Functions for Dictionaries ~
628							*E715*
629Functions that can be used with a Dictionary: >
630	:if has_key(dict, 'foo')	" TRUE if dict has entry with key "foo"
631	:if empty(dict)			" TRUE if dict is empty
632	:let l = len(dict)		" number of items in dict
633	:let big = max(dict)		" maximum value in dict
634	:let small = min(dict)		" minimum value in dict
635	:let xs = count(dict, 'x')	" count nr of times 'x' appears in dict
636	:let s = string(dict)		" String representation of dict
637	:call map(dict, '">> " . v:val')  " prepend ">> " to each item
638
639
6401.5 Blobs ~
641						*blob* *Blob* *Blobs* *E978*
642A Blob is a binary object.  It can be used to read an image from a file and
643send it over a channel, for example.
644
645A Blob mostly behaves like a |List| of numbers, where each number has the
646value of an 8-bit byte, from 0 to 255.
647
648
649Blob creation ~
650
651A Blob can be created with a |blob-literal|: >
652	:let b = 0zFF00ED015DAF
653Dots can be inserted between bytes (pair of hex characters) for readability,
654they don't change the value: >
655	:let b = 0zFF00.ED01.5DAF
656
657A blob can be read from a file with |readfile()| passing the {type} argument
658set to "B", for example: >
659	:let b = readfile('image.png', 'B')
660
661A blob can be read from a channel with the |ch_readblob()| function.
662
663
664Blob index ~
665							*blob-index* *E979*
666A byte in the Blob can be accessed by putting the index in square brackets
667after the Blob.  Indexes are zero-based, thus the first byte has index zero. >
668	:let myblob = 0z00112233
669	:let byte = myblob[0]		" get the first byte: 0x00
670	:let byte = myblob[2]		" get the third byte: 0x22
671
672A negative index is counted from the end.  Index -1 refers to the last byte in
673the Blob, -2 to the last but one byte, etc. >
674	:let last = myblob[-1]		" get the last byte: 0x33
675
676To avoid an error for an invalid index use the |get()| function.  When an item
677is not available it returns -1 or the default value you specify: >
678	:echo get(myblob, idx)
679	:echo get(myblob, idx, 999)
680
681
682Blob iteration ~
683
684The |:for| loop executes commands for each byte of a Blob.  The loop variable is
685set to each byte in the Blob.  Example: >
686	:for byte in 0z112233
687	:   call Doit(byte)
688	:endfor
689This calls Doit() with 0x11, 0x22 and 0x33.
690
691
692Blob concatenation ~
693
694Two blobs can be concatenated with the "+" operator: >
695	:let longblob = myblob + 0z4455
696	:let myblob += 0z6677
697
698To change a blob in-place see |blob-modification| below.
699
700
701Part of a blob ~
702
703A part of the Blob can be obtained by specifying the first and last index,
704separated by a colon in square brackets: >
705	:let myblob = 0z00112233
706	:let shortblob = myblob[1:2]	" get 0z1122
707	:let shortblob = myblob[2:-1]	" get 0z2233
708
709Omitting the first index is similar to zero.  Omitting the last index is
710similar to -1. >
711	:let endblob = myblob[2:]	" from item 2 to the end: 0z2233
712	:let shortblob = myblob[2:2]	" Blob with one byte: 0z22
713	:let otherblob = myblob[:]	" make a copy of the Blob
714
715If the first index is beyond the last byte of the Blob or the second index is
716before the first index, the result is an empty Blob.  There is no error
717message.
718
719If the second index is equal to or greater than the length of the list the
720length minus one is used: >
721	:echo myblob[2:8]		" result: 0z2233
722
723
724Blob modification ~
725							*blob-modification*
726To change a specific byte of a blob use |:let| this way: >
727	:let blob[4] = 0x44
728
729When the index is just one beyond the end of the Blob, it is appended. Any
730higher index is an error.
731
732To change a sequence of bytes the [:] notation can be used: >
733	let blob[1:3] = 0z445566
734The length of the replaced bytes must be exactly the same as the value
735provided. *E972*
736
737To change part of a blob you can specify the first and last byte to be
738modified.  The value must have the same number of bytes in the range: >
739	:let blob[3:5] = 0z334455
740
741You can also use the functions |add()|, |remove()| and |insert()|.
742
743
744Blob identity ~
745
746Blobs can be compared for equality: >
747	if blob == 0z001122
748And for equal identity: >
749	if blob is otherblob
750<							*blob-identity* *E977*
751When variable "aa" is a Blob and you assign it to another variable "bb", both
752variables refer to the same Blob.  Then the "is" operator returns true.
753
754When making a copy using [:] or |copy()| the values are the same, but the
755identity is different: >
756	:let blob = 0z112233
757	:let blob2 = blob
758	:echo blob == blob2
759<	1 >
760	:echo blob is blob2
761<	1 >
762	:let blob3 = blob[:]
763	:echo blob == blob3
764<	1 >
765	:echo blob is blob3
766<	0
767
768Making a copy of a Blob is done with the |copy()| function.  Using [:] also
769works, as explained above.
770
771
7721.6 More about variables ~
773							*more-variables*
774If you need to know the type of a variable or expression, use the |type()|
775function.
776
777When the '!' flag is included in the 'viminfo' option, global variables that
778start with an uppercase letter, and don't contain a lowercase letter, are
779stored in the viminfo file |viminfo-file|.
780
781When the 'sessionoptions' option contains "global", global variables that
782start with an uppercase letter and contain at least one lowercase letter are
783stored in the session file |session-file|.
784
785variable name		can be stored where ~
786my_var_6		not
787My_Var_6		session file
788MY_VAR_6		viminfo file
789
790
791It's possible to form a variable name with curly braces, see
792|curly-braces-names|.
793
794==============================================================================
7952. Expression syntax					*expression-syntax*
796
797Expression syntax summary, from least to most significant:
798
799|expr1|	expr2
800	expr2 ? expr1 : expr1	if-then-else
801
802|expr2|	expr3
803	expr3 || expr3 ...	logical OR
804
805|expr3|	expr4
806	expr4 && expr4 ...	logical AND
807
808|expr4|	expr5
809	expr5 == expr5		equal
810	expr5 != expr5		not equal
811	expr5 >	 expr5		greater than
812	expr5 >= expr5		greater than or equal
813	expr5 <	 expr5		smaller than
814	expr5 <= expr5		smaller than or equal
815	expr5 =~ expr5		regexp matches
816	expr5 !~ expr5		regexp doesn't match
817
818	expr5 ==? expr5		equal, ignoring case
819	expr5 ==# expr5		equal, match case
820	etc.			As above, append ? for ignoring case, # for
821				matching case
822
823	expr5 is expr5		same |List|, |Dictionary| or |Blob| instance
824	expr5 isnot expr5	different |List|, |Dictionary| or |Blob|
825				instance
826
827|expr5|	expr6
828	expr6 +	 expr6 ...	number addition, list or blob concatenation
829	expr6 -	 expr6 ...	number subtraction
830	expr6 .	 expr6 ...	string concatenation
831	expr6 .. expr6 ...	string concatenation
832
833|expr6|	expr7
834	expr7 *	 expr7 ...	number multiplication
835	expr7 /	 expr7 ...	number division
836	expr7 %	 expr7 ...	number modulo
837
838|expr7|	expr8
839	! expr7			logical NOT
840	- expr7			unary minus
841	+ expr7			unary plus
842
843|expr8|	expr9
844	expr8[expr1]		byte of a String or item of a |List|
845	expr8[expr1 : expr1]	substring of a String or sublist of a |List|
846	expr8.name		entry in a |Dictionary|
847	expr8(expr1, ...)	function call with |Funcref| variable
848	expr8->name(expr1, ...)	|method| call
849
850|expr9|	number			number constant
851	"string"		string constant, backslash is special
852	'string'		string constant, ' is doubled
853	[expr1, ...]		|List|
854	{expr1: expr1, ...}	|Dictionary|
855	#{key: expr1, ...}	|Dictionary|
856	&option			option value
857	(expr1)			nested expression
858	variable		internal variable
859	va{ria}ble		internal variable with curly braces
860	$VAR			environment variable
861	@r			contents of register 'r'
862	function(expr1, ...)	function call
863	func{ti}on(expr1, ...)	function call with curly braces
864	{args -> expr1}		lambda expression
865
866
867"..." indicates that the operations in this level can be concatenated.
868Example: >
869	&nu || &list && &shell == "csh"
870
871All expressions within one level are parsed from left to right.
872
873
874expr1							*expr1* *E109*
875-----
876
877expr2 ? expr1 : expr1
878
879The expression before the '?' is evaluated to a number.  If it evaluates to
880|TRUE|, the result is the value of the expression between the '?' and ':',
881otherwise the result is the value of the expression after the ':'.
882Example: >
883	:echo lnum == 1 ? "top" : lnum
884
885Since the first expression is an "expr2", it cannot contain another ?:.  The
886other two expressions can, thus allow for recursive use of ?:.
887Example: >
888	:echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum
889
890To keep this readable, using |line-continuation| is suggested: >
891	:echo lnum == 1
892	:\	? "top"
893	:\	: lnum == 1000
894	:\		? "last"
895	:\		: lnum
896
897You should always put a space before the ':', otherwise it can be mistaken for
898use in a variable such as "a:1".
899
900
901expr2 and expr3						*expr2* *expr3*
902---------------
903
904expr3 || expr3 ..	logical OR		*expr-barbar*
905expr4 && expr4 ..	logical AND		*expr-&&*
906
907The "||" and "&&" operators take one argument on each side.  The arguments
908are (converted to) Numbers.  The result is:
909
910    input			 output ~
911n1	n2		n1 || n2	n1 && n2 ~
912|FALSE|	|FALSE|		|FALSE|		|FALSE|
913|FALSE|	|TRUE|		|TRUE|		|FALSE|
914|TRUE|	|FALSE|		|TRUE|		|FALSE|
915|TRUE|	|TRUE|		|TRUE|		|TRUE|
916
917The operators can be concatenated, for example: >
918
919	&nu || &list && &shell == "csh"
920
921Note that "&&" takes precedence over "||", so this has the meaning of: >
922
923	&nu || (&list && &shell == "csh")
924
925Once the result is known, the expression "short-circuits", that is, further
926arguments are not evaluated.  This is like what happens in C.  For example: >
927
928	let a = 1
929	echo a || b
930
931This is valid even if there is no variable called "b" because "a" is |TRUE|,
932so the result must be |TRUE|.  Similarly below: >
933
934	echo exists("b") && b == "yes"
935
936This is valid whether "b" has been defined or not.  The second clause will
937only be evaluated if "b" has been defined.
938
939
940expr4							*expr4*
941-----
942
943expr5 {cmp} expr5
944
945Compare two expr5 expressions, resulting in a 0 if it evaluates to false, or 1
946if it evaluates to true.
947
948			*expr-==*  *expr-!=*  *expr->*	 *expr->=*
949			*expr-<*   *expr-<=*  *expr-=~*  *expr-!~*
950			*expr-==#* *expr-!=#* *expr->#*  *expr->=#*
951			*expr-<#*  *expr-<=#* *expr-=~#* *expr-!~#*
952			*expr-==?* *expr-!=?* *expr->?*  *expr->=?*
953			*expr-<?*  *expr-<=?* *expr-=~?* *expr-!~?*
954			*expr-is* *expr-isnot* *expr-is#* *expr-isnot#*
955			*expr-is?* *expr-isnot?*
956		use 'ignorecase'    match case	   ignore case ~
957equal			==		==#		==?
958not equal		!=		!=#		!=?
959greater than		>		>#		>?
960greater than or equal	>=		>=#		>=?
961smaller than		<		<#		<?
962smaller than or equal	<=		<=#		<=?
963regexp matches		=~		=~#		=~?
964regexp doesn't match	!~		!~#		!~?
965same instance		is		is#		is?
966different instance	isnot		isnot#		isnot?
967
968Examples:
969"abc" ==# "Abc"	  evaluates to 0
970"abc" ==? "Abc"	  evaluates to 1
971"abc" == "Abc"	  evaluates to 1 if 'ignorecase' is set, 0 otherwise
972
973							*E691* *E692*
974A |List| can only be compared with a |List| and only "equal", "not equal",
975"is" and "isnot" can be used.  This compares the values of the list,
976recursively.  Ignoring case means case is ignored when comparing item values.
977
978							*E735* *E736*
979A |Dictionary| can only be compared with a |Dictionary| and only "equal", "not
980equal", "is" and "isnot" can be used.  This compares the key/values of the
981|Dictionary| recursively.  Ignoring case means case is ignored when comparing
982item values.
983
984							*E694*
985A |Funcref| can only be compared with a |Funcref| and only "equal", "not
986equal", "is" and "isnot" can be used.  Case is never ignored.  Whether
987arguments or a Dictionary are bound (with a partial) matters.  The
988Dictionaries must also be equal (or the same, in case of "is") and the
989arguments must be equal (or the same).
990
991To compare Funcrefs to see if they refer to the same function, ignoring bound
992Dictionary and arguments, use |get()| to get the function name: >
993	if get(Part1, 'name') == get(Part2, 'name')
994	   " Part1 and Part2 refer to the same function
995
996Using "is" or "isnot" with a |List|, |Dictionary| or |Blob| checks whether
997the expressions are referring to the same |List|, |Dictionary| or |Blob|
998instance.  A copy of a |List| is different from the original |List|.  When
999using "is" without a |List|, |Dictionary| or |Blob|, it is equivalent to
1000using "equal", using "isnot" equivalent to using "not equal".  Except that
1001a different type means the values are different: >
1002	echo 4 == '4'
1003	1
1004	echo 4 is '4'
1005	0
1006	echo 0 is []
1007	0
1008"is#"/"isnot#" and "is?"/"isnot?" can be used to match and ignore case.
1009
1010When comparing a String with a Number, the String is converted to a Number,
1011and the comparison is done on Numbers.  This means that: >
1012	echo 0 == 'x'
1013	1
1014because 'x' converted to a Number is zero.  However: >
1015	echo [0] == ['x']
1016	0
1017Inside a List or Dictionary this conversion is not used.
1018
1019When comparing two Strings, this is done with strcmp() or stricmp().  This
1020results in the mathematical difference (comparing byte values), not
1021necessarily the alphabetical difference in the local language.
1022
1023When using the operators with a trailing '#', or the short version and
1024'ignorecase' is off, the comparing is done with strcmp(): case matters.
1025
1026When using the operators with a trailing '?', or the short version and
1027'ignorecase' is set, the comparing is done with stricmp(): case is ignored.
1028
1029'smartcase' is not used.
1030
1031The "=~" and "!~" operators match the lefthand argument with the righthand
1032argument, which is used as a pattern.  See |pattern| for what a pattern is.
1033This matching is always done like 'magic' was set and 'cpoptions' is empty, no
1034matter what the actual value of 'magic' or 'cpoptions' is.  This makes scripts
1035portable.  To avoid backslashes in the regexp pattern to be doubled, use a
1036single-quote string, see |literal-string|.
1037Since a string is considered to be a single line, a multi-line pattern
1038(containing \n, backslash-n) will not match.  However, a literal NL character
1039can be matched like an ordinary character.  Examples:
1040	"foo\nbar" =~ "\n"	evaluates to 1
1041	"foo\nbar" =~ "\\n"	evaluates to 0
1042
1043
1044expr5 and expr6						*expr5* *expr6*
1045---------------
1046expr6 + expr6   Number addition, |List| or |Blob| concatenation	*expr-+*
1047expr6 - expr6   Number subtraction				*expr--*
1048expr6 . expr6   String concatenation				*expr-.*
1049expr6 .. expr6  String concatenation				*expr-..*
1050
1051For |Lists| only "+" is possible and then both expr6 must be a list.  The
1052result is a new list with the two lists Concatenated.
1053
1054For String concatenation ".." is preferred, since "." is ambiguous, it is also
1055used for |Dict| member access and floating point numbers.
1056When |vimscript-version| is 2 or higher, using "." is not allowed.
1057
1058expr7 * expr7  Number multiplication				*expr-star*
1059expr7 / expr7  Number division					*expr-/*
1060expr7 % expr7  Number modulo					*expr-%*
1061
1062For all, except "." and "..", Strings are converted to Numbers.
1063For bitwise operators see |and()|, |or()| and |xor()|.
1064
1065Note the difference between "+" and ".":
1066	"123" + "456" = 579
1067	"123" . "456" = "123456"
1068
1069Since '.' has the same precedence as '+' and '-', you need to read: >
1070	1 . 90 + 90.0
1071As: >
1072	(1 . 90) + 90.0
1073That works, since the String "190" is automatically converted to the Number
1074190, which can be added to the Float 90.0.  However: >
1075	1 . 90 * 90.0
1076Should be read as: >
1077	1 . (90 * 90.0)
1078Since '.' has lower precedence than '*'.  This does NOT work, since this
1079attempts to concatenate a Float and a String.
1080
1081When dividing a Number by zero the result depends on the value:
1082	  0 / 0  = -0x80000000	(like NaN for Float)
1083	 >0 / 0  =  0x7fffffff	(like positive infinity)
1084	 <0 / 0  = -0x7fffffff	(like negative infinity)
1085	(before Vim 7.2 it was always 0x7fffffff)
1086
1087When 64-bit Number support is enabled:
1088	  0 / 0  = -0x8000000000000000	(like NaN for Float)
1089	 >0 / 0  =  0x7fffffffffffffff	(like positive infinity)
1090	 <0 / 0  = -0x7fffffffffffffff	(like negative infinity)
1091
1092When the righthand side of '%' is zero, the result is 0.
1093
1094None of these work for |Funcref|s.
1095
1096. and % do not work for Float. *E804*
1097
1098
1099expr7							*expr7*
1100-----
1101! expr7			logical NOT		*expr-!*
1102- expr7			unary minus		*expr-unary--*
1103+ expr7			unary plus		*expr-unary-+*
1104
1105For '!' |TRUE| becomes |FALSE|, |FALSE| becomes |TRUE| (one).
1106For '-' the sign of the number is changed.
1107For '+' the number is unchanged.
1108
1109A String will be converted to a Number first.
1110
1111These three can be repeated and mixed.  Examples:
1112	!-1	    == 0
1113	!!8	    == 1
1114	--9	    == 9
1115
1116
1117expr8							*expr8*
1118-----
1119This expression is either |expr9| or a sequence of the alternatives below,
1120in any order.  E.g., these are all possible:
1121	expr8[expr1].name
1122	expr8.name[expr1]
1123	expr8(expr1, ...)[expr1].name
1124	expr8->(expr1, ...)[expr1]
1125Evaluation is always from left to right.
1126
1127expr8[expr1]		item of String or |List|	*expr-[]* *E111*
1128							*E909* *subscript*
1129If expr8 is a Number or String this results in a String that contains the
1130expr1'th single byte from expr8.  expr8 is used as a String, expr1 as a
1131Number.  This doesn't recognize multi-byte encodings, see `byteidx()` for
1132an alternative, or use `split()` to turn the string into a list of characters.
1133
1134Index zero gives the first byte.  This is like it works in C.  Careful:
1135text column numbers start with one!  Example, to get the byte under the
1136cursor: >
1137	:let c = getline(".")[col(".") - 1]
1138
1139If the length of the String is less than the index, the result is an empty
1140String.  A negative index always results in an empty string (reason: backward
1141compatibility).  Use [-1:] to get the last byte.
1142
1143If expr8 is a |List| then it results the item at index expr1.  See |list-index|
1144for possible index values.  If the index is out of range this results in an
1145error.  Example: >
1146	:let item = mylist[-1]		" get last item
1147
1148Generally, if a |List| index is equal to or higher than the length of the
1149|List|, or more negative than the length of the |List|, this results in an
1150error.
1151
1152
1153expr8[expr1a : expr1b]	substring or sublist		*expr-[:]*
1154
1155If expr8 is a Number or String this results in the substring with the bytes
1156from expr1a to and including expr1b.  expr8 is used as a String, expr1a and
1157expr1b are used as a Number.  This doesn't recognize multi-byte encodings, see
1158|byteidx()| for computing the indexes.
1159
1160If expr1a is omitted zero is used.  If expr1b is omitted the length of the
1161string minus one is used.
1162
1163A negative number can be used to measure from the end of the string.  -1 is
1164the last character, -2 the last but one, etc.
1165
1166If an index goes out of range for the string characters are omitted.  If
1167expr1b is smaller than expr1a the result is an empty string.
1168
1169Examples: >
1170	:let c = name[-1:]		" last byte of a string
1171	:let c = name[-2:-2]		" last but one byte of a string
1172	:let s = line(".")[4:]		" from the fifth byte to the end
1173	:let s = s[:-3]			" remove last two bytes
1174<
1175							*slice*
1176If expr8 is a |List| this results in a new |List| with the items indicated by
1177the indexes expr1a and expr1b.  This works like with a String, as explained
1178just above. Also see |sublist| below.  Examples: >
1179	:let l = mylist[:3]		" first four items
1180	:let l = mylist[4:4]		" List with one item
1181	:let l = mylist[:]		" shallow copy of a List
1182
1183If expr8 is a |Blob| this results in a new |Blob| with the bytes in the
1184indexes expr1a and expr1b, inclusive.  Examples: >
1185	:let b = 0zDEADBEEF
1186	:let bs = b[1:2]		" 0zADBE
1187	:let bs = b[:]			" copy of 0zDEADBEEF
1188
1189Using expr8[expr1] or expr8[expr1a : expr1b] on a |Funcref| results in an
1190error.
1191
1192Watch out for confusion between a namespace and a variable followed by a colon
1193for a sublist: >
1194	mylist[n:]     " uses variable n
1195	mylist[s:]     " uses namespace s:, error!
1196
1197
1198expr8.name		entry in a |Dictionary|		*expr-entry*
1199
1200If expr8 is a |Dictionary| and it is followed by a dot, then the following
1201name will be used as a key in the |Dictionary|.  This is just like:
1202expr8[name].
1203
1204The name must consist of alphanumeric characters, just like a variable name,
1205but it may start with a number.  Curly braces cannot be used.
1206
1207There must not be white space before or after the dot.
1208
1209Examples: >
1210	:let dict = {"one": 1, 2: "two"}
1211	:echo dict.one		" shows "1"
1212	:echo dict.2		" shows "two"
1213	:echo dict .2		" error because of space before the dot
1214
1215Note that the dot is also used for String concatenation.  To avoid confusion
1216always put spaces around the dot for String concatenation.
1217
1218
1219expr8(expr1, ...)	|Funcref| function call
1220
1221When expr8 is a |Funcref| type variable, invoke the function it refers to.
1222
1223
1224expr8->name([args])	method call			*method* *->*
1225expr8->{lambda}([args])
1226							*E276*
1227For methods that are also available as global functions this is the same as: >
1228	name(expr8 [, args])
1229There can also be methods specifically for the type of "expr8".
1230
1231This allows for chaining, passing the value that one method returns to the
1232next method: >
1233	mylist->filter(filterexpr)->map(mapexpr)->sort()->join()
1234<
1235Example of using a lambda: >
1236	GetPercentage()->{x -> x * 100}()->printf('%d%%')
1237<
1238When using -> the |expr7| operators will be applied first, thus: >
1239	-1.234->string()
1240Is equivalent to: >
1241	(-1.234)->string()
1242And NOT: >
1243	-(1.234->string())
1244<
1245							*E274*
1246"->name(" must not contain white space.  There can be white space before the
1247"->" and after the "(", thus you can split the lines like this: >
1248	mylist
1249	\ ->filter(filterexpr)
1250	\ ->map(mapexpr)
1251	\ ->sort()
1252	\ ->join()
1253
1254When using the lambda form there must be no white space between the } and the
1255(.
1256
1257
1258							*expr9*
1259number
1260------
1261number			number constant			*expr-number*
1262				*hex-number* *octal-number* *binary-number*
1263
1264Decimal, Hexadecimal (starting with 0x or 0X), Binary (starting with 0b or 0B)
1265and Octal (starting with 0).
1266
1267						*floating-point-format*
1268Floating point numbers can be written in two forms:
1269
1270	[-+]{N}.{M}
1271	[-+]{N}.{M}[eE][-+]{exp}
1272
1273{N} and {M} are numbers.  Both {N} and {M} must be present and can only
1274contain digits.
1275[-+] means there is an optional plus or minus sign.
1276{exp} is the exponent, power of 10.
1277Only a decimal point is accepted, not a comma.  No matter what the current
1278locale is.
1279{only when compiled with the |+float| feature}
1280
1281Examples:
1282	123.456
1283	+0.0001
1284	55.0
1285	-0.123
1286	1.234e03
1287	1.0E-6
1288	-3.1416e+88
1289
1290These are INVALID:
1291	3.		empty {M}
1292	1e40		missing .{M}
1293
1294Rationale:
1295Before floating point was introduced, the text "123.456" was interpreted as
1296the two numbers "123" and "456", both converted to a string and concatenated,
1297resulting in the string "123456".  Since this was considered pointless, and we
1298could not find it intentionally being used in Vim scripts, this backwards
1299incompatibility was accepted in favor of being able to use the normal notation
1300for floating point numbers.
1301
1302							*float-pi* *float-e*
1303A few useful values to copy&paste: >
1304	:let pi = 3.14159265359
1305	:let e  = 2.71828182846
1306Or, if you don't want to write them in as floating-point literals, you can
1307also use functions, like the following: >
1308	:let pi = acos(-1.0)
1309	:let e  = exp(1.0)
1310<
1311						*floating-point-precision*
1312The precision and range of floating points numbers depends on what "double"
1313means in the library Vim was compiled with.  There is no way to change this at
1314runtime.
1315
1316The default for displaying a |Float| is to use 6 decimal places, like using
1317printf("%g", f).  You can select something else when using the |printf()|
1318function.  Example: >
1319	:echo printf('%.15e', atan(1))
1320<	7.853981633974483e-01
1321
1322
1323
1324string					*string* *String* *expr-string* *E114*
1325------
1326"string"		string constant		*expr-quote*
1327
1328Note that double quotes are used.
1329
1330A string constant accepts these special characters:
1331\...	three-digit octal number (e.g., "\316")
1332\..	two-digit octal number (must be followed by non-digit)
1333\.	one-digit octal number (must be followed by non-digit)
1334\x..	byte specified with two hex numbers (e.g., "\x1f")
1335\x.	byte specified with one hex number (must be followed by non-hex char)
1336\X..	same as \x..
1337\X.	same as \x.
1338\u....	character specified with up to 4 hex numbers, stored according to the
1339	current value of 'encoding' (e.g., "\u02a4")
1340\U....	same as \u but allows up to 8 hex numbers.
1341\b	backspace <BS>
1342\e	escape <Esc>
1343\f	formfeed <FF>
1344\n	newline <NL>
1345\r	return <CR>
1346\t	tab <Tab>
1347\\	backslash
1348\"	double quote
1349\<xxx>	Special key named "xxx".  e.g. "\<C-W>" for CTRL-W.  This is for use
1350	in mappings, the 0x80 byte is escaped.
1351	To use the double quote character it must be escaped: "<M-\">".
1352	Don't use <Char-xxxx> to get a utf-8 character, use \uxxxx as
1353	mentioned above.
1354
1355Note that "\xff" is stored as the byte 255, which may be invalid in some
1356encodings.  Use "\u00ff" to store character 255 according to the current value
1357of 'encoding'.
1358
1359Note that "\000" and "\x00" force the end of the string.
1360
1361
1362blob-literal				*blob-literal* *E973*
1363------------
1364
1365Hexadecimal starting with 0z or 0Z, with an arbitrary number of bytes.
1366The sequence must be an even number of hex characters.  Example: >
1367	:let b = 0zFF00ED015DAF
1368
1369
1370literal-string						*literal-string* *E115*
1371---------------
1372'string'		string constant			*expr-'*
1373
1374Note that single quotes are used.
1375
1376This string is taken as it is.  No backslashes are removed or have a special
1377meaning.  The only exception is that two quotes stand for one quote.
1378
1379Single quoted strings are useful for patterns, so that backslashes do not need
1380to be doubled.  These two commands are equivalent: >
1381	if a =~ "\\s*"
1382	if a =~ '\s*'
1383
1384
1385option						*expr-option* *E112* *E113*
1386------
1387&option			option value, local value if possible
1388&g:option		global option value
1389&l:option		local option value
1390
1391Examples: >
1392	echo "tabstop is " . &tabstop
1393	if &insertmode
1394
1395Any option name can be used here.  See |options|.  When using the local value
1396and there is no buffer-local or window-local value, the global value is used
1397anyway.
1398
1399
1400register						*expr-register* *@r*
1401--------
1402@r			contents of register 'r'
1403
1404The result is the contents of the named register, as a single string.
1405Newlines are inserted where required.  To get the contents of the unnamed
1406register use @" or @@.  See |registers| for an explanation of the available
1407registers.
1408
1409When using the '=' register you get the expression itself, not what it
1410evaluates to.  Use |eval()| to evaluate it.
1411
1412
1413nesting							*expr-nesting* *E110*
1414-------
1415(expr1)			nested expression
1416
1417
1418environment variable					*expr-env*
1419--------------------
1420$VAR			environment variable
1421
1422The String value of any environment variable.  When it is not defined, the
1423result is an empty string.
1424
1425The functions `getenv()` and `setenv()` can also be used and work for
1426environment variables with non-alphanumeric names.
1427The function `environ()` can be used to get a Dict with all environment
1428variables.
1429
1430
1431						*expr-env-expand*
1432Note that there is a difference between using $VAR directly and using
1433expand("$VAR").  Using it directly will only expand environment variables that
1434are known inside the current Vim session.  Using expand() will first try using
1435the environment variables known inside the current Vim session.  If that
1436fails, a shell will be used to expand the variable.  This can be slow, but it
1437does expand all variables that the shell knows about.  Example: >
1438	:echo $shell
1439	:echo expand("$shell")
1440The first one probably doesn't echo anything, the second echoes the $shell
1441variable (if your shell supports it).
1442
1443
1444internal variable					*expr-variable*
1445-----------------
1446variable		internal variable
1447See below |internal-variables|.
1448
1449
1450function call		*expr-function* *E116* *E118* *E119* *E120*
1451-------------
1452function(expr1, ...)	function call
1453See below |functions|.
1454
1455
1456lambda expression				*expr-lambda* *lambda*
1457-----------------
1458{args -> expr1}		lambda expression
1459
1460A lambda expression creates a new unnamed function which returns the result of
1461evaluating |expr1|.  Lambda expressions differ from |user-functions| in
1462the following ways:
1463
14641. The body of the lambda expression is an |expr1| and not a sequence of |Ex|
1465   commands.
14662. The prefix "a:" should not be used for arguments.  E.g.: >
1467	:let F = {arg1, arg2 -> arg1 - arg2}
1468	:echo F(5, 2)
1469<	3
1470
1471The arguments are optional.  Example: >
1472	:let F = {-> 'error function'}
1473	:echo F()
1474<	error function
1475							*closure*
1476Lambda expressions can access outer scope variables and arguments.  This is
1477often called a closure.  Example where "i" and "a:arg" are used in a lambda
1478while they already exist in the function scope.  They remain valid even after
1479the function returns: >
1480	:function Foo(arg)
1481	:  let i = 3
1482	:  return {x -> x + i - a:arg}
1483	:endfunction
1484	:let Bar = Foo(4)
1485	:echo Bar(6)
1486<	5
1487
1488Note that the variables must exist in the outer scope before the lamba is
1489defined for this to work.  See also |:func-closure|.
1490
1491Lambda and closure support can be checked with: >
1492	if has('lambda')
1493
1494Examples for using a lambda expression with |sort()|, |map()| and |filter()|: >
1495	:echo map([1, 2, 3], {idx, val -> val + 1})
1496<	[2, 3, 4] >
1497	:echo sort([3,7,2,1,4], {a, b -> a - b})
1498<	[1, 2, 3, 4, 7]
1499
1500The lambda expression is also useful for Channel, Job and timer: >
1501	:let timer = timer_start(500,
1502			\ {-> execute("echo 'Handler called'", "")},
1503			\ {'repeat': 3})
1504<	Handler called
1505	Handler called
1506	Handler called
1507
1508Note how execute() is used to execute an Ex command.  That's ugly though.
1509
1510
1511Lambda expressions have internal names like '<lambda>42'.  If you get an error
1512for a lambda expression, you can find what it is with the following command: >
1513	:function {'<lambda>42'}
1514See also: |numbered-function|
1515
1516==============================================================================
15173. Internal variable				*internal-variables* *E461*
1518
1519An internal variable name can be made up of letters, digits and '_'.  But it
1520cannot start with a digit.  It's also possible to use curly braces, see
1521|curly-braces-names|.
1522
1523An internal variable is created with the ":let" command |:let|.
1524An internal variable is explicitly destroyed with the ":unlet" command
1525|:unlet|.
1526Using a name that is not an internal variable or refers to a variable that has
1527been destroyed results in an error.
1528
1529There are several name spaces for variables.  Which one is to be used is
1530specified by what is prepended:
1531
1532		(nothing) In a function: local to a function; otherwise: global
1533|buffer-variable|    b:	  Local to the current buffer.
1534|window-variable|    w:	  Local to the current window.
1535|tabpage-variable|   t:	  Local to the current tab page.
1536|global-variable|    g:	  Global.
1537|local-variable|     l:	  Local to a function.
1538|script-variable|    s:	  Local to a |:source|'ed Vim script.
1539|function-argument|  a:	  Function argument (only inside a function).
1540|vim-variable|       v:	  Global, predefined by Vim.
1541
1542The scope name by itself can be used as a |Dictionary|.  For example, to
1543delete all script-local variables: >
1544	:for k in keys(s:)
1545	:    unlet s:[k]
1546	:endfor
1547<
1548						*buffer-variable* *b:var* *b:*
1549A variable name that is preceded with "b:" is local to the current buffer.
1550Thus you can have several "b:foo" variables, one for each buffer.
1551This kind of variable is deleted when the buffer is wiped out or deleted with
1552|:bdelete|.
1553
1554One local buffer variable is predefined:
1555					*b:changedtick* *changetick*
1556b:changedtick	The total number of changes to the current buffer.  It is
1557		incremented for each change.  An undo command is also a change
1558		in this case.  Resetting 'modified' when writing the buffer is
1559		also counted.
1560		This can be used to perform an action only when the buffer has
1561		changed.  Example: >
1562		    :if my_changedtick != b:changedtick
1563		    :	let my_changedtick = b:changedtick
1564		    :	call My_Update()
1565		    :endif
1566<		You cannot change or delete the b:changedtick variable.
1567
1568						*window-variable* *w:var* *w:*
1569A variable name that is preceded with "w:" is local to the current window.  It
1570is deleted when the window is closed.
1571
1572						*tabpage-variable* *t:var* *t:*
1573A variable name that is preceded with "t:" is local to the current tab page,
1574It is deleted when the tab page is closed. {not available when compiled
1575without the |+windows| feature}
1576
1577						*global-variable* *g:var* *g:*
1578Inside functions global variables are accessed with "g:".  Omitting this will
1579access a variable local to a function.  But "g:" can also be used in any other
1580place if you like.
1581
1582						*local-variable* *l:var* *l:*
1583Inside functions local variables are accessed without prepending anything.
1584But you can also prepend "l:" if you like.  However, without prepending "l:"
1585you may run into reserved variable names.  For example "count".  By itself it
1586refers to "v:count".  Using "l:count" you can have a local variable with the
1587same name.
1588
1589						*script-variable* *s:var*
1590In a Vim script variables starting with "s:" can be used.  They cannot be
1591accessed from outside of the scripts, thus are local to the script.
1592
1593They can be used in:
1594- commands executed while the script is sourced
1595- functions defined in the script
1596- autocommands defined in the script
1597- functions and autocommands defined in functions and autocommands which were
1598  defined in the script (recursively)
1599- user defined commands defined in the script
1600Thus not in:
1601- other scripts sourced from this one
1602- mappings
1603- menus
1604- etc.
1605
1606Script variables can be used to avoid conflicts with global variable names.
1607Take this example: >
1608
1609	let s:counter = 0
1610	function MyCounter()
1611	  let s:counter = s:counter + 1
1612	  echo s:counter
1613	endfunction
1614	command Tick call MyCounter()
1615
1616You can now invoke "Tick" from any script, and the "s:counter" variable in
1617that script will not be changed, only the "s:counter" in the script where
1618"Tick" was defined is used.
1619
1620Another example that does the same: >
1621
1622	let s:counter = 0
1623	command Tick let s:counter = s:counter + 1 | echo s:counter
1624
1625When calling a function and invoking a user-defined command, the context for
1626script variables is set to the script where the function or command was
1627defined.
1628
1629The script variables are also available when a function is defined inside a
1630function that is defined in a script.  Example: >
1631
1632	let s:counter = 0
1633	function StartCounting(incr)
1634	  if a:incr
1635	    function MyCounter()
1636	      let s:counter = s:counter + 1
1637	    endfunction
1638	  else
1639	    function MyCounter()
1640	      let s:counter = s:counter - 1
1641	    endfunction
1642	  endif
1643	endfunction
1644
1645This defines the MyCounter() function either for counting up or counting down
1646when calling StartCounting().  It doesn't matter from where StartCounting() is
1647called, the s:counter variable will be accessible in MyCounter().
1648
1649When the same script is sourced again it will use the same script variables.
1650They will remain valid as long as Vim is running.  This can be used to
1651maintain a counter: >
1652
1653	if !exists("s:counter")
1654	  let s:counter = 1
1655	  echo "script executed for the first time"
1656	else
1657	  let s:counter = s:counter + 1
1658	  echo "script executed " . s:counter . " times now"
1659	endif
1660
1661Note that this means that filetype plugins don't get a different set of script
1662variables for each buffer.  Use local buffer variables instead |b:var|.
1663
1664
1665PREDEFINED VIM VARIABLES			*vim-variable* *v:var* *v:*
1666								*E963*
1667Some variables can be set by the user, but the type cannot be changed.
1668
1669					*v:argv* *argv-variable*
1670v:argv		The command line arguments Vim was invoked with.  This is a
1671		list of strings.  The first item is the Vim command.
1672
1673					*v:beval_col* *beval_col-variable*
1674v:beval_col	The number of the column, over which the mouse pointer is.
1675		This is the byte index in the |v:beval_lnum| line.
1676		Only valid while evaluating the 'balloonexpr' option.
1677
1678					*v:beval_bufnr* *beval_bufnr-variable*
1679v:beval_bufnr	The number of the buffer, over which the mouse pointer is. Only
1680		valid while evaluating the 'balloonexpr' option.
1681
1682					*v:beval_lnum* *beval_lnum-variable*
1683v:beval_lnum	The number of the line, over which the mouse pointer is. Only
1684		valid while evaluating the 'balloonexpr' option.
1685
1686					*v:beval_text* *beval_text-variable*
1687v:beval_text	The text under or after the mouse pointer.  Usually a word as
1688		it is useful for debugging a C program.  'iskeyword' applies,
1689		but a dot and "->" before the position is included.  When on a
1690		']' the text before it is used, including the matching '[' and
1691		word before it.  When on a Visual area within one line the
1692		highlighted text is used.  Also see |<cexpr>|.
1693		Only valid while evaluating the 'balloonexpr' option.
1694
1695					*v:beval_winnr* *beval_winnr-variable*
1696v:beval_winnr	The number of the window, over which the mouse pointer is. Only
1697		valid while evaluating the 'balloonexpr' option.  The first
1698		window has number zero (unlike most other places where a
1699		window gets a number).
1700
1701					*v:beval_winid* *beval_winid-variable*
1702v:beval_winid	The |window-ID| of the window, over which the mouse pointer
1703		is.  Otherwise like v:beval_winnr.
1704
1705					*v:char* *char-variable*
1706v:char		Argument for evaluating 'formatexpr' and used for the typed
1707		character when using <expr> in an abbreviation |:map-<expr>|.
1708		It is also used by the |InsertCharPre| and |InsertEnter| events.
1709
1710			*v:charconvert_from* *charconvert_from-variable*
1711v:charconvert_from
1712		The name of the character encoding of a file to be converted.
1713		Only valid while evaluating the 'charconvert' option.
1714
1715			*v:charconvert_to* *charconvert_to-variable*
1716v:charconvert_to
1717		The name of the character encoding of a file after conversion.
1718		Only valid while evaluating the 'charconvert' option.
1719
1720					*v:cmdarg* *cmdarg-variable*
1721v:cmdarg	This variable is used for two purposes:
1722		1. The extra arguments given to a file read/write command.
1723		   Currently these are "++enc=" and "++ff=".  This variable is
1724		   set before an autocommand event for a file read/write
1725		   command is triggered.  There is a leading space to make it
1726		   possible to append this variable directly after the
1727		   read/write command.  Note: The "+cmd" argument isn't
1728		   included here, because it will be executed anyway.
1729		2. When printing a PostScript file with ":hardcopy" this is
1730		   the argument for the ":hardcopy" command.  This can be used
1731		   in 'printexpr'.
1732
1733					*v:cmdbang* *cmdbang-variable*
1734v:cmdbang	Set like v:cmdarg for a file read/write command.  When a "!"
1735		was used the value is 1, otherwise it is 0.  Note that this
1736		can only be used in autocommands.  For user commands |<bang>|
1737		can be used.
1738
1739				*v:completed_item* *completed_item-variable*
1740v:completed_item
1741		|Dictionary| containing the |complete-items| for the most
1742		recently completed word after |CompleteDone|.  The
1743		|Dictionary| is empty if the completion failed.
1744
1745					*v:count* *count-variable*
1746v:count		The count given for the last Normal mode command.  Can be used
1747		to get the count before a mapping.  Read-only.  Example: >
1748	:map _x :<C-U>echo "the count is " . v:count<CR>
1749<		Note: The <C-U> is required to remove the line range that you
1750		get when typing ':' after a count.
1751		When there are two counts, as in "3d2w", they are multiplied,
1752		just like what happens in the command, "d6w" for the example.
1753		Also used for evaluating the 'formatexpr' option.
1754		"count" also works, for backwards compatibility, unless
1755		|scriptversion| is 3 or higher.
1756
1757					*v:count1* *count1-variable*
1758v:count1	Just like "v:count", but defaults to one when no count is
1759		used.
1760
1761						*v:ctype* *ctype-variable*
1762v:ctype		The current locale setting for characters of the runtime
1763		environment.  This allows Vim scripts to be aware of the
1764		current locale encoding.  Technical: it's the value of
1765		LC_CTYPE.  When not using a locale the value is "C".
1766		This variable can not be set directly, use the |:language|
1767		command.
1768		See |multi-lang|.
1769
1770					*v:dying* *dying-variable*
1771v:dying		Normally zero.  When a deadly signal is caught it's set to
1772		one.  When multiple signals are caught the number increases.
1773		Can be used in an autocommand to check if Vim didn't
1774		terminate normally. {only works on Unix}
1775		Example: >
1776	:au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif
1777<		Note: if another deadly signal is caught when v:dying is one,
1778		VimLeave autocommands will not be executed.
1779
1780					*v:echospace* *echospace-variable*
1781v:echospace	Number of screen cells that can be used for an `:echo` message
1782		in the last screen line before causing the |hit-enter-prompt|.
1783		Depends on 'showcmd', 'ruler' and 'columns'.  You need to
1784		check 'cmdheight' for whether there are full-width lines
1785		available above the last line.
1786
1787					*v:errmsg* *errmsg-variable*
1788v:errmsg	Last given error message.  It's allowed to set this variable.
1789		Example: >
1790	:let v:errmsg = ""
1791	:silent! next
1792	:if v:errmsg != ""
1793	:  ... handle error
1794<		"errmsg" also works, for backwards compatibility, unless
1795		|scriptversion| is 3 or higher.
1796
1797				*v:errors* *errors-variable* *assert-return*
1798v:errors	Errors found by assert functions, such as |assert_true()|.
1799		This is a list of strings.
1800		The assert functions append an item when an assert fails.
1801		The return value indicates this: a one is returned if an item
1802		was added to v:errors, otherwise zero is returned.
1803		To remove old results make it empty: >
1804	:let v:errors = []
1805<		If v:errors is set to anything but a list it is made an empty
1806		list by the assert function.
1807
1808					*v:event* *event-variable*
1809v:event		Dictionary containing information about the current
1810		|autocommand|.  See the specific event for what it puts in
1811		this dictionary.
1812		The dictionary is emptied when the |autocommand| finishes,
1813		please refer to |dict-identity| for how to get an independent
1814		copy of it.  Use |deepcopy()| if you want to keep the
1815		information after the event triggers.  Example: >
1816			au TextYankPost * let g:foo = deepcopy(v:event)
1817<
1818					*v:exception* *exception-variable*
1819v:exception	The value of the exception most recently caught and not
1820		finished.  See also |v:throwpoint| and |throw-variables|.
1821		Example: >
1822	:try
1823	:  throw "oops"
1824	:catch /.*/
1825	:  echo "caught " .. v:exception
1826	:endtry
1827<		Output: "caught oops".
1828
1829					*v:false* *false-variable*
1830v:false		A Number with value zero. Used to put "false" in JSON.  See
1831		|json_encode()|.
1832		When used as a string this evaluates to "v:false". >
1833			echo v:false
1834<			v:false ~
1835		That is so that eval() can parse the string back to the same
1836		value.  Read-only.
1837
1838					*v:fcs_reason* *fcs_reason-variable*
1839v:fcs_reason	The reason why the |FileChangedShell| event was triggered.
1840		Can be used in an autocommand to decide what to do and/or what
1841		to set v:fcs_choice to.  Possible values:
1842			deleted		file no longer exists
1843			conflict	file contents, mode or timestamp was
1844					changed and buffer is modified
1845			changed		file contents has changed
1846			mode		mode of file changed
1847			time		only file timestamp changed
1848
1849					*v:fcs_choice* *fcs_choice-variable*
1850v:fcs_choice	What should happen after a |FileChangedShell| event was
1851		triggered.  Can be used in an autocommand to tell Vim what to
1852		do with the affected buffer:
1853			reload		Reload the buffer (does not work if
1854					the file was deleted).
1855			ask		Ask the user what to do, as if there
1856					was no autocommand.  Except that when
1857					only the timestamp changed nothing
1858					will happen.
1859			<empty>		Nothing, the autocommand should do
1860					everything that needs to be done.
1861		The default is empty.  If another (invalid) value is used then
1862		Vim behaves like it is empty, there is no warning message.
1863
1864					*v:fname_in* *fname_in-variable*
1865v:fname_in	The name of the input file.  Valid while evaluating:
1866			option		used for ~
1867			'charconvert'	file to be converted
1868			'diffexpr'	original file
1869			'patchexpr'	original file
1870			'printexpr'	file to be printed
1871		And set to the swap file name for |SwapExists|.
1872
1873					*v:fname_out* *fname_out-variable*
1874v:fname_out	The name of the output file.  Only valid while
1875		evaluating:
1876			option		used for ~
1877			'charconvert'	resulting converted file (*)
1878			'diffexpr'	output of diff
1879			'patchexpr'	resulting patched file
1880		(*) When doing conversion for a write command (e.g., ":w
1881		file") it will be equal to v:fname_in.  When doing conversion
1882		for a read command (e.g., ":e file") it will be a temporary
1883		file and different from v:fname_in.
1884
1885					*v:fname_new* *fname_new-variable*
1886v:fname_new	The name of the new version of the file.  Only valid while
1887		evaluating 'diffexpr'.
1888
1889					*v:fname_diff* *fname_diff-variable*
1890v:fname_diff	The name of the diff (patch) file.  Only valid while
1891		evaluating 'patchexpr'.
1892
1893					*v:folddashes* *folddashes-variable*
1894v:folddashes	Used for 'foldtext': dashes representing foldlevel of a closed
1895		fold.
1896		Read-only in the |sandbox|. |fold-foldtext|
1897
1898					*v:foldlevel* *foldlevel-variable*
1899v:foldlevel	Used for 'foldtext': foldlevel of closed fold.
1900		Read-only in the |sandbox|. |fold-foldtext|
1901
1902					*v:foldend* *foldend-variable*
1903v:foldend	Used for 'foldtext': last line of closed fold.
1904		Read-only in the |sandbox|. |fold-foldtext|
1905
1906					*v:foldstart* *foldstart-variable*
1907v:foldstart	Used for 'foldtext': first line of closed fold.
1908		Read-only in the |sandbox|. |fold-foldtext|
1909
1910					*v:hlsearch* *hlsearch-variable*
1911v:hlsearch	Variable that indicates whether search highlighting is on.
1912		Setting it makes sense only if 'hlsearch' is enabled which
1913		requires |+extra_search|. Setting this variable to zero acts
1914		like the |:nohlsearch| command, setting it to one acts like >
1915			let &hlsearch = &hlsearch
1916<		Note that the value is restored when returning from a
1917		function. |function-search-undo|.
1918
1919					*v:insertmode* *insertmode-variable*
1920v:insertmode	Used for the |InsertEnter| and |InsertChange| autocommand
1921		events.  Values:
1922			i	Insert mode
1923			r	Replace mode
1924			v	Virtual Replace mode
1925
1926						*v:key* *key-variable*
1927v:key		Key of the current item of a |Dictionary|.  Only valid while
1928		evaluating the expression used with |map()| and |filter()|.
1929		Read-only.
1930
1931						*v:lang* *lang-variable*
1932v:lang		The current locale setting for messages of the runtime
1933		environment.  This allows Vim scripts to be aware of the
1934		current language.  Technical: it's the value of LC_MESSAGES.
1935		The value is system dependent.
1936		This variable can not be set directly, use the |:language|
1937		command.
1938		It can be different from |v:ctype| when messages are desired
1939		in a different language than what is used for character
1940		encoding.  See |multi-lang|.
1941
1942						*v:lc_time* *lc_time-variable*
1943v:lc_time	The current locale setting for time messages of the runtime
1944		environment.  This allows Vim scripts to be aware of the
1945		current language.  Technical: it's the value of LC_TIME.
1946		This variable can not be set directly, use the |:language|
1947		command.  See |multi-lang|.
1948
1949						*v:lnum* *lnum-variable*
1950v:lnum		Line number for the 'foldexpr' |fold-expr|, 'formatexpr' and
1951		'indentexpr' expressions, tab page number for 'guitablabel'
1952		and 'guitabtooltip'.  Only valid while one of these
1953		expressions is being evaluated.  Read-only when in the
1954		|sandbox|.
1955
1956					*v:mouse_win* *mouse_win-variable*
1957v:mouse_win	Window number for a mouse click obtained with |getchar()|.
1958		First window has number 1, like with |winnr()|.  The value is
1959		zero when there was no mouse button click.
1960
1961					*v:mouse_winid* *mouse_winid-variable*
1962v:mouse_winid	Window ID for a mouse click obtained with |getchar()|.
1963		The value is zero when there was no mouse button click.
1964
1965					*v:mouse_lnum* *mouse_lnum-variable*
1966v:mouse_lnum	Line number for a mouse click obtained with |getchar()|.
1967		This is the text line number, not the screen line number.  The
1968		value is zero when there was no mouse button click.
1969
1970					*v:mouse_col* *mouse_col-variable*
1971v:mouse_col	Column number for a mouse click obtained with |getchar()|.
1972		This is the screen column number, like with |virtcol()|.  The
1973		value is zero when there was no mouse button click.
1974
1975					*v:none* *none-variable* *None*
1976v:none		An empty String. Used to put an empty item in JSON.  See
1977		|json_encode()|.
1978		When used as a number this evaluates to zero.
1979		When used as a string this evaluates to "v:none". >
1980			echo v:none
1981<			v:none ~
1982		That is so that eval() can parse the string back to the same
1983		value.  Read-only.
1984
1985					*v:null* *null-variable*
1986v:null		An empty String. Used to put "null" in JSON.  See
1987		|json_encode()|.
1988		When used as a number this evaluates to zero.
1989		When used as a string this evaluates to "v:null". >
1990			echo v:null
1991<			v:null ~
1992		That is so that eval() can parse the string back to the same
1993		value.  Read-only.
1994
1995					*v:numbersize* *numbersize-variable*
1996v:numbersize	Number of bits in a Number.  This is normally 64, but on some
1997		systems it may be 32.
1998
1999					*v:oldfiles* *oldfiles-variable*
2000v:oldfiles	List of file names that is loaded from the |viminfo| file on
2001		startup.  These are the files that Vim remembers marks for.
2002		The length of the List is limited by the ' argument of the
2003		'viminfo' option (default is 100).
2004		When the |viminfo| file is not used the List is empty.
2005		Also see |:oldfiles| and |c_#<|.
2006		The List can be modified, but this has no effect on what is
2007		stored in the |viminfo| file later.  If you use values other
2008		than String this will cause trouble.
2009		{only when compiled with the |+viminfo| feature}
2010
2011						    *v:option_new*
2012v:option_new    New value of the option. Valid while executing an |OptionSet|
2013		autocommand.
2014						    *v:option_old*
2015v:option_old    Old value of the option. Valid while executing an |OptionSet|
2016		autocommand. Depending on the command used for setting and the
2017		kind of option this is either the local old value or the
2018		global old value.
2019						    *v:option_oldlocal*
2020v:option_oldlocal
2021		Old local value of the option. Valid while executing an
2022		|OptionSet| autocommand.
2023						    *v:option_oldglobal*
2024v:option_oldglobal
2025		Old global value of the option. Valid while executing an
2026		|OptionSet| autocommand.
2027						    *v:option_type*
2028v:option_type   Scope of the set command. Valid while executing an
2029		|OptionSet| autocommand. Can be either "global" or "local"
2030						    *v:option_command*
2031v:option_command
2032		Command used to set the option. Valid while executing an
2033		|OptionSet| autocommand.
2034			value		option was set via   ~
2035			"setlocal"	|:setlocal| or ":let l:xxx"
2036			"setglobal"	|:setglobal| or ":let g:xxx"
2037			"set"		|:set| or |:let|
2038			"modeline"	|modeline|
2039					*v:operator* *operator-variable*
2040v:operator	The last operator given in Normal mode.  This is a single
2041		character except for commands starting with <g> or <z>,
2042		in which case it is two characters.  Best used alongside
2043		|v:prevcount| and |v:register|.  Useful if you want to cancel
2044		Operator-pending mode and then use the operator, e.g.: >
2045			:omap O <Esc>:call MyMotion(v:operator)<CR>
2046<		The value remains set until another operator is entered, thus
2047		don't expect it to be empty.
2048		v:operator is not set for |:delete|, |:yank| or other Ex
2049		commands.
2050		Read-only.
2051
2052					*v:prevcount* *prevcount-variable*
2053v:prevcount	The count given for the last but one Normal mode command.
2054		This is the v:count value of the previous command.  Useful if
2055		you want to cancel Visual or Operator-pending mode and then
2056		use the count, e.g.: >
2057			:vmap % <Esc>:call MyFilter(v:prevcount)<CR>
2058<		Read-only.
2059
2060					*v:profiling* *profiling-variable*
2061v:profiling	Normally zero.  Set to one after using ":profile start".
2062		See |profiling|.
2063
2064					*v:progname* *progname-variable*
2065v:progname	Contains the name (with path removed) with which Vim was
2066		invoked.  Allows you to do special initialisations for |view|,
2067		|evim| etc., or any other name you might symlink to Vim.
2068		Read-only.
2069
2070					*v:progpath* *progpath-variable*
2071v:progpath	Contains the command with which Vim was invoked, in a form
2072		that when passed to the shell will run the same Vim executable
2073		as the current one (if $PATH remains unchanged).
2074		Useful if you want to message a Vim server using a
2075		|--remote-expr|.
2076		To get the full path use: >
2077			echo exepath(v:progpath)
2078<		If the command has a relative path it will be expanded to the
2079		full path, so that it still works after `:cd`. Thus starting
2080		"./vim" results in "/home/user/path/to/vim/src/vim".
2081		On Linux and other systems it will always be the full path.
2082		On Mac it may just be "vim" and using exepath() as mentioned
2083		above should be used to get the full path.
2084		On MS-Windows the executable may be called "vim.exe", but the
2085		".exe" is not added to v:progpath.
2086		Read-only.
2087
2088					*v:register* *register-variable*
2089v:register	The name of the register in effect for the current normal mode
2090		command (regardless of whether that command actually used a
2091		register).  Or for the currently executing normal mode mapping
2092		(use this in custom commands that take a register).
2093		If none is supplied it is the default register '"', unless
2094		'clipboard' contains "unnamed" or "unnamedplus", then it is
2095		'*' or '+'.
2096		Also see |getreg()| and |setreg()|
2097
2098					*v:scrollstart* *scrollstart-variable*
2099v:scrollstart	String describing the script or function that caused the
2100		screen to scroll up.  It's only set when it is empty, thus the
2101		first reason is remembered.  It is set to "Unknown" for a
2102		typed command.
2103		This can be used to find out why your script causes the
2104		hit-enter prompt.
2105
2106					*v:servername* *servername-variable*
2107v:servername	The resulting registered |client-server-name| if any.
2108		Read-only.
2109
2110
2111v:searchforward			*v:searchforward* *searchforward-variable*
2112		Search direction:  1 after a forward search, 0 after a
2113		backward search.  It is reset to forward when directly setting
2114		the last search pattern, see |quote/|.
2115		Note that the value is restored when returning from a
2116		function. |function-search-undo|.
2117		Read-write.
2118
2119					*v:shell_error* *shell_error-variable*
2120v:shell_error	Result of the last shell command.  When non-zero, the last
2121		shell command had an error.  When zero, there was no problem.
2122		This only works when the shell returns the error code to Vim.
2123		The value -1 is often used when the command could not be
2124		executed.  Read-only.
2125		Example: >
2126	:!mv foo bar
2127	:if v:shell_error
2128	:  echo 'could not rename "foo" to "bar"!'
2129	:endif
2130<		"shell_error" also works, for backwards compatibility, unless
2131		|scriptversion| is 3 or higher.
2132
2133					*v:statusmsg* *statusmsg-variable*
2134v:statusmsg	Last given status message.  It's allowed to set this variable.
2135
2136					*v:swapname* *swapname-variable*
2137v:swapname	Only valid when executing |SwapExists| autocommands: Name of
2138		the swap file found.  Read-only.
2139
2140					*v:swapchoice* *swapchoice-variable*
2141v:swapchoice	|SwapExists| autocommands can set this to the selected choice
2142		for handling an existing swap file:
2143			'o'	Open read-only
2144			'e'	Edit anyway
2145			'r'	Recover
2146			'd'	Delete swapfile
2147			'q'	Quit
2148			'a'	Abort
2149		The value should be a single-character string.  An empty value
2150		results in the user being asked, as would happen when there is
2151		no SwapExists autocommand.  The default is empty.
2152
2153					*v:swapcommand* *swapcommand-variable*
2154v:swapcommand	Normal mode command to be executed after a file has been
2155		opened.  Can be used for a |SwapExists| autocommand to have
2156		another Vim open the file and jump to the right place.  For
2157		example, when jumping to a tag the value is ":tag tagname\r".
2158		For ":edit +cmd file" the value is ":cmd\r".
2159
2160				*v:t_TYPE* *v:t_bool* *t_bool-variable*
2161v:t_bool	Value of |Boolean| type.  Read-only.  See: |type()|
2162					*v:t_channel* *t_channel-variable*
2163v:t_channel	Value of |Channel| type.  Read-only.  See: |type()|
2164					*v:t_dict* *t_dict-variable*
2165v:t_dict	Value of |Dictionary| type.  Read-only.  See: |type()|
2166					*v:t_float* *t_float-variable*
2167v:t_float	Value of |Float| type.  Read-only.  See: |type()|
2168					*v:t_func* *t_func-variable*
2169v:t_func	Value of |Funcref| type.  Read-only.  See: |type()|
2170					*v:t_job* *t_job-variable*
2171v:t_job		Value of |Job| type.  Read-only.  See: |type()|
2172					*v:t_list* *t_list-variable*
2173v:t_list	Value of |List| type.  Read-only.  See: |type()|
2174					*v:t_none* *t_none-variable*
2175v:t_none	Value of |None| type.  Read-only.  See: |type()|
2176					*v:t_number* *t_number-variable*
2177v:t_number	Value of |Number| type.  Read-only.  See: |type()|
2178					*v:t_string* *t_string-variable*
2179v:t_string	Value of |String| type.  Read-only.  See: |type()|
2180					*v:t_blob* *t_blob-variable*
2181v:t_blob	Value of |Blob| type.  Read-only.  See: |type()|
2182
2183				*v:termresponse* *termresponse-variable*
2184v:termresponse	The escape sequence returned by the terminal for the |t_RV|
2185		termcap entry.  It is set when Vim receives an escape sequence
2186		that starts with ESC [ or CSI, then '>' or '?' and ends in a
2187		'c', with only digits and ';' in between.
2188		When this option is set, the TermResponse autocommand event is
2189		fired, so that you can react to the response from the
2190		terminal.
2191		The response from a new xterm is: "<Esc>[> Pp ; Pv ; Pc c".  Pp
2192		is the terminal type: 0 for vt100 and 1 for vt220.  Pv is the
2193		patch level (since this was introduced in patch 95, it's
2194		always 95 or bigger).  Pc is always zero.
2195		{only when compiled with |+termresponse| feature}
2196
2197						*v:termblinkresp*
2198v:termblinkresp	The escape sequence returned by the terminal for the |t_RC|
2199		termcap entry.  This is used to find out whether the terminal
2200		cursor is blinking. This is used by |term_getcursor()|.
2201
2202						*v:termstyleresp*
2203v:termstyleresp	The escape sequence returned by the terminal for the |t_RS|
2204		termcap entry.  This is used to find out what the shape of the
2205		cursor is.  This is used by |term_getcursor()|.
2206
2207						*v:termrbgresp*
2208v:termrbgresp	The escape sequence returned by the terminal for the |t_RB|
2209		termcap entry.  This is used to find out what the terminal
2210		background color is, see 'background'.
2211
2212						*v:termrfgresp*
2213v:termrfgresp	The escape sequence returned by the terminal for the |t_RF|
2214		termcap entry.  This is used to find out what the terminal
2215		foreground color is.
2216
2217						*v:termu7resp*
2218v:termu7resp	The escape sequence returned by the terminal for the |t_u7|
2219		termcap entry.  This is used to find out what the terminal
2220		does with ambiguous width characters, see 'ambiwidth'.
2221
2222					*v:testing* *testing-variable*
2223v:testing	Must be set before using `test_garbagecollect_now()`.
2224		Also, when set certain error messages won't be shown for 2
2225		seconds. (e.g. "'dictionary' option is empty")
2226
2227				*v:this_session* *this_session-variable*
2228v:this_session	Full filename of the last loaded or saved session file.  See
2229		|:mksession|.  It is allowed to set this variable.  When no
2230		session file has been saved, this variable is empty.
2231		"this_session" also works, for backwards compatibility, unless
2232		|scriptversion| is 3 or higher
2233
2234					*v:throwpoint* *throwpoint-variable*
2235v:throwpoint	The point where the exception most recently caught and not
2236		finished was thrown.  Not set when commands are typed.  See
2237		also |v:exception| and |throw-variables|.
2238		Example: >
2239	:try
2240	:  throw "oops"
2241	:catch /.*/
2242	:  echo "Exception from" v:throwpoint
2243	:endtry
2244<		Output: "Exception from test.vim, line 2"
2245
2246						*v:true* *true-variable*
2247v:true		A Number with value one. Used to put "true" in JSON.  See
2248		|json_encode()|.
2249		When used as a string this evaluates to "v:true". >
2250			echo v:true
2251<			v:true ~
2252		That is so that eval() can parse the string back to the same
2253		value.  Read-only.
2254						*v:val* *val-variable*
2255v:val		Value of the current item of a |List| or |Dictionary|.  Only
2256		valid while evaluating the expression used with |map()| and
2257		|filter()|.  Read-only.
2258
2259					*v:version* *version-variable*
2260v:version	Version number of Vim: Major version number times 100 plus
2261		minor version number.  Version 5.0 is 500.  Version 5.1
2262		is 501.  Read-only.  "version" also works, for backwards
2263		compatibility, unless |scriptversion| is 3 or higher.
2264		Use |has()| to check if a certain patch was included, e.g.: >
2265			if has("patch-7.4.123")
2266<		Note that patch numbers are specific to the version, thus both
2267		version 5.0 and 5.1 may have a patch 123, but these are
2268		completely different.
2269
2270					*v:versionlong* *versionlong-variable*
2271v:versionlong	Like v:version, but also including the patchlevel in the last
2272		four digits.  Version 8.1 with patch 123 has value 8010123.
2273		This can be used like this: >
2274			if v:versionlong >= 8010123
2275<		However, if there are gaps in the list of patches included
2276		this will not work well.  This can happen if a recent patch
2277		was included into an older version, e.g. for a security fix.
2278		Use the has() function to make sure the patch is actually
2279		included.
2280
2281				*v:vim_did_enter* *vim_did_enter-variable*
2282v:vim_did_enter	Zero until most of startup is done.  It is set to one just
2283		before |VimEnter| autocommands are triggered.
2284
2285					*v:warningmsg* *warningmsg-variable*
2286v:warningmsg	Last given warning message.  It's allowed to set this variable.
2287
2288					*v:windowid* *windowid-variable*
2289v:windowid	When any X11 based GUI is running or when running in a
2290		terminal and Vim connects to the X server (|-X|) this will be
2291		set to the window ID.
2292		When an MS-Windows GUI is running this will be set to the
2293		window handle.
2294		Otherwise the value is zero.
2295		Note: for windows inside Vim use |winnr()| or |win_getid()|,
2296		see |window-ID|.
2297
2298==============================================================================
22994. Builtin Functions					*functions*
2300
2301See |function-list| for a list grouped by what the function is used for.
2302
2303(Use CTRL-] on the function name to jump to the full explanation.)
2304
2305USAGE				RESULT	DESCRIPTION	~
2306
2307abs({expr})			Float or Number  absolute value of {expr}
2308acos({expr})			Float	arc cosine of {expr}
2309add({object}, {item})		List/Blob   append {item} to {object}
2310and({expr}, {expr})		Number	bitwise AND
2311append({lnum}, {text})		Number	append {text} below line {lnum}
2312appendbufline({expr}, {lnum}, {text})
2313				Number	append {text} below line {lnum}
2314					in buffer {expr}
2315argc([{winid}])			Number	number of files in the argument list
2316argidx()			Number	current index in the argument list
2317arglistid([{winnr} [, {tabnr}]]) Number	argument list id
2318argv({nr} [, {winid}])		String	{nr} entry of the argument list
2319argv([-1, {winid}])		List	the argument list
2320assert_beeps({cmd})		Number	assert {cmd} causes a beep
2321assert_equal({exp}, {act} [, {msg}])
2322				Number	assert {exp} is equal to {act}
2323assert_equalfile({fname-one}, {fname-two})
2324				Number	assert file contents is equal
2325assert_exception({error} [, {msg}])
2326				Number	assert {error} is in v:exception
2327assert_fails({cmd} [, {error} [, {msg}]])
2328				Number	assert {cmd} fails
2329assert_false({actual} [, {msg}])
2330				Number	assert {actual} is false
2331assert_inrange({lower}, {upper}, {actual} [, {msg}])
2332				Number	assert {actual} is inside the range
2333assert_match({pat}, {text} [, {msg}])
2334				Number	assert {pat} matches {text}
2335assert_notequal({exp}, {act} [, {msg}])
2336				Number	assert {exp} is not equal {act}
2337assert_notmatch({pat}, {text} [, {msg}])
2338				Number	assert {pat} not matches {text}
2339assert_report({msg})		Number	report a test failure
2340assert_true({actual} [, {msg}])	Number	assert {actual} is true
2341asin({expr})			Float	arc sine of {expr}
2342atan({expr})			Float	arc tangent of {expr}
2343atan2({expr1}, {expr2})		Float	arc tangent of {expr1} / {expr2}
2344balloon_gettext()		String	current text in the balloon
2345balloon_show({expr})		none	show {expr} inside the balloon
2346balloon_split({msg})		List	split {msg} as used for a balloon
2347browse({save}, {title}, {initdir}, {default})
2348				String	put up a file requester
2349browsedir({title}, {initdir})	String	put up a directory requester
2350bufadd({name})			Number	add a buffer to the buffer list
2351bufexists({expr})		Number	|TRUE| if buffer {expr} exists
2352buflisted({expr})		Number	|TRUE| if buffer {expr} is listed
2353bufload({expr})			Number	load buffer {expr} if not loaded yet
2354bufloaded({expr})		Number	|TRUE| if buffer {expr} is loaded
2355bufname([{expr}])		String	Name of the buffer {expr}
2356bufnr([{expr} [, {create}]])	Number	Number of the buffer {expr}
2357bufwinid({expr})		Number	window ID of buffer {expr}
2358bufwinnr({expr})		Number	window number of buffer {expr}
2359byte2line({byte})		Number	line number at byte count {byte}
2360byteidx({expr}, {nr})		Number	byte index of {nr}'th char in {expr}
2361byteidxcomp({expr}, {nr})	Number	byte index of {nr}'th char in {expr}
2362call({func}, {arglist} [, {dict}])
2363				any	call {func} with arguments {arglist}
2364ceil({expr})			Float	round {expr} up
2365ch_canread({handle})		Number	check if there is something to read
2366ch_close({handle})		none	close {handle}
2367ch_close_in({handle})		none	close in part of {handle}
2368ch_evalexpr({handle}, {expr} [, {options}])
2369				any	evaluate {expr} on JSON {handle}
2370ch_evalraw({handle}, {string} [, {options}])
2371				any	evaluate {string} on raw {handle}
2372ch_getbufnr({handle}, {what})	Number	get buffer number for {handle}/{what}
2373ch_getjob({channel})		Job	get the Job of {channel}
2374ch_info({handle})		String	info about channel {handle}
2375ch_log({msg} [, {handle}])	none	write {msg} in the channel log file
2376ch_logfile({fname} [, {mode}])	none	start logging channel activity
2377ch_open({address} [, {options}])
2378				Channel	open a channel to {address}
2379ch_read({handle} [, {options}]) String	read from {handle}
2380ch_readblob({handle} [, {options}])
2381				Blob	read Blob from {handle}
2382ch_readraw({handle} [, {options}])
2383				String	read raw from {handle}
2384ch_sendexpr({handle}, {expr} [, {options}])
2385				any	send {expr} over JSON {handle}
2386ch_sendraw({handle}, {expr} [, {options}])
2387				any	send {expr} over raw {handle}
2388ch_setoptions({handle}, {options})
2389				none	set options for {handle}
2390ch_status({handle} [, {options}])
2391				String	status of channel {handle}
2392changenr()			Number	current change number
2393char2nr({expr} [, {utf8}])	Number	ASCII/UTF8 value of first char in {expr}
2394chdir({dir})			String	change current working directory
2395cindent({lnum})			Number	C indent for line {lnum}
2396clearmatches([{win}])		none	clear all matches
2397col({expr})			Number	column nr of cursor or mark
2398complete({startcol}, {matches}) none	set Insert mode completion
2399complete_add({expr})		Number	add completion match
2400complete_check()		Number	check for key typed during completion
2401complete_info([{what}])		Dict	get current completion information
2402confirm({msg} [, {choices} [, {default} [, {type}]]])
2403				Number	number of choice picked by user
2404copy({expr})			any	make a shallow copy of {expr}
2405cos({expr})			Float	cosine of {expr}
2406cosh({expr})			Float	hyperbolic cosine of {expr}
2407count({comp}, {expr} [, {ic} [, {start}]])
2408				Number	count how many {expr} are in {comp}
2409cscope_connection([{num}, {dbpath} [, {prepend}]])
2410				Number	checks existence of cscope connection
2411cursor({lnum}, {col} [, {off}])
2412				Number	move cursor to {lnum}, {col}, {off}
2413cursor({list})			Number	move cursor to position in {list}
2414debugbreak({pid})		Number  interrupt process being debugged
2415deepcopy({expr} [, {noref}])	any	make a full copy of {expr}
2416delete({fname} [, {flags}])	Number	delete the file or directory {fname}
2417deletebufline({expr}, {first} [, {last}])
2418				Number	delete lines from buffer {expr}
2419did_filetype()			Number	|TRUE| if FileType autocmd event used
2420diff_filler({lnum})		Number	diff filler lines about {lnum}
2421diff_hlID({lnum}, {col})	Number	diff highlighting at {lnum}/{col}
2422echoraw({expr})			none	output {expr} as-is
2423empty({expr})			Number	|TRUE| if {expr} is empty
2424environ()			Dict	return environment variables
2425escape({string}, {chars})	String	escape {chars} in {string} with '\'
2426eval({string})			any	evaluate {string} into its value
2427eventhandler()			Number	|TRUE| if inside an event handler
2428executable({expr})		Number	1 if executable {expr} exists
2429execute({command})		String	execute {command} and get the output
2430exepath({expr})			String	full path of the command {expr}
2431exists({expr})			Number	|TRUE| if {expr} exists
2432extend({expr1}, {expr2} [, {expr3}])
2433				List/Dict insert items of {expr2} into {expr1}
2434exp({expr})			Float	exponential of {expr}
2435expand({expr} [, {nosuf} [, {list}]])
2436				any	expand special keywords in {expr}
2437expandcmd({expr})		String	expand {expr} like with `:edit`
2438feedkeys({string} [, {mode}])	Number	add key sequence to typeahead buffer
2439filereadable({file})		Number	|TRUE| if {file} is a readable file
2440filewritable({file})		Number	|TRUE| if {file} is a writable file
2441filter({expr1}, {expr2})	List/Dict  remove items from {expr1} where
2442					{expr2} is 0
2443finddir({name} [, {path} [, {count}]])
2444				String	find directory {name} in {path}
2445findfile({name} [, {path} [, {count}]])
2446				String	find file {name} in {path}
2447float2nr({expr})		Number	convert Float {expr} to a Number
2448floor({expr})			Float	round {expr} down
2449fmod({expr1}, {expr2})		Float	remainder of {expr1} / {expr2}
2450fnameescape({fname})		String	escape special characters in {fname}
2451fnamemodify({fname}, {mods})	String	modify file name
2452foldclosed({lnum})		Number	first line of fold at {lnum} if closed
2453foldclosedend({lnum})		Number	last line of fold at {lnum} if closed
2454foldlevel({lnum})		Number	fold level at {lnum}
2455foldtext()			String	line displayed for closed fold
2456foldtextresult({lnum})		String	text for closed fold at {lnum}
2457foreground()			Number	bring the Vim window to the foreground
2458funcref({name} [, {arglist}] [, {dict}])
2459				Funcref	reference to function {name}
2460function({name} [, {arglist}] [, {dict}])
2461				Funcref	named reference to function {name}
2462garbagecollect([{atexit}])	none	free memory, breaking cyclic references
2463get({list}, {idx} [, {def}])	any	get item {idx} from {list} or {def}
2464get({dict}, {key} [, {def}])	any	get item {key} from {dict} or {def}
2465get({func}, {what})		any	get property of funcref/partial {func}
2466getbufinfo([{expr}])		List	information about buffers
2467getbufline({expr}, {lnum} [, {end}])
2468				List	lines {lnum} to {end} of buffer {expr}
2469getbufvar({expr}, {varname} [, {def}])
2470				any	variable {varname} in buffer {expr}
2471getchangelist([{expr}])		List	list of change list items
2472getchar([expr])			Number	get one character from the user
2473getcharmod()			Number	modifiers for the last typed character
2474getcharsearch()			Dict	last character search
2475getcmdline()			String	return the current command-line
2476getcmdpos()			Number	return cursor position in command-line
2477getcmdtype()			String	return current command-line type
2478getcmdwintype()			String	return current command-line window type
2479getcompletion({pat}, {type} [, {filtered}])
2480				List	list of cmdline completion matches
2481getcurpos()			List	position of the cursor
2482getcwd([{winnr} [, {tabnr}]])	String	get the current working directory
2483getenv({name})			String	return environment variable
2484getfontname([{name}])		String	name of font being used
2485getfperm({fname})		String	file permissions of file {fname}
2486getfsize({fname})		Number	size in bytes of file {fname}
2487getftime({fname})		Number	last modification time of file
2488getftype({fname})		String	description of type of file {fname}
2489getimstatus()			Number	|TRUE| if the IME status is active
2490getjumplist([{winnr} [, {tabnr}]])
2491				List	list of jump list items
2492getline({lnum})			String	line {lnum} of current buffer
2493getline({lnum}, {end})		List	lines {lnum} to {end} of current buffer
2494getloclist({nr} [, {what}])	List	list of location list items
2495getmatches([{win}])		List	list of current matches
2496getmousepos()			Dict	last known mouse position
2497getpid()			Number	process ID of Vim
2498getpos({expr})			List	position of cursor, mark, etc.
2499getqflist([{what}])		List	list of quickfix items
2500getreg([{regname} [, 1 [, {list}]]])
2501				String or List   contents of register
2502getregtype([{regname}])		String	type of register
2503gettabinfo([{expr}])		List	list of tab pages
2504gettabvar({nr}, {varname} [, {def}])
2505				any	variable {varname} in tab {nr} or {def}
2506gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
2507				any	{name} in {winnr} in tab page {tabnr}
2508gettagstack([{nr}])		Dict	get the tag stack of window {nr}
2509getwininfo([{winid}])		List	list of info about each window
2510getwinpos([{timeout}])		List	X and Y coord in pixels of the Vim window
2511getwinposx()			Number	X coord in pixels of the Vim window
2512getwinposy()			Number	Y coord in pixels of the Vim window
2513getwinvar({nr}, {varname} [, {def}])
2514				any	variable {varname} in window {nr}
2515glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])
2516				any	expand file wildcards in {expr}
2517glob2regpat({expr})		String	convert a glob pat into a search pat
2518globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
2519				String	do glob({expr}) for all dirs in {path}
2520has({feature} [, {check}])	Number	|TRUE| if feature {feature} supported
2521has_key({dict}, {key})		Number	|TRUE| if {dict} has entry {key}
2522haslocaldir([{winnr} [, {tabnr}]])
2523				Number	|TRUE| if the window executed |:lcd|
2524					or |:tcd|
2525hasmapto({what} [, {mode} [, {abbr}]])
2526				Number	|TRUE| if mapping to {what} exists
2527histadd({history}, {item})	Number	add an item to a history
2528histdel({history} [, {item}])	Number	remove an item from a history
2529histget({history} [, {index}])	String	get the item {index} from a history
2530histnr({history})		Number	highest index of a history
2531hlexists({name})		Number	|TRUE| if highlight group {name} exists
2532hlID({name})			Number	syntax ID of highlight group {name}
2533hostname()			String	name of the machine Vim is running on
2534iconv({expr}, {from}, {to})	String	convert encoding of {expr}
2535indent({lnum})			Number	indent of line {lnum}
2536index({object}, {expr} [, {start} [, {ic}]])
2537				Number	index in {object} where {expr} appears
2538input({prompt} [, {text} [, {completion}]])
2539				String	get input from the user
2540inputdialog({prompt} [, {text} [, {completion}]])
2541				String	like input() but in a GUI dialog
2542inputlist({textlist})		Number	let the user pick from a choice list
2543inputrestore()			Number	restore typeahead
2544inputsave()			Number	save and clear typeahead
2545inputsecret({prompt} [, {text}]) String	like input() but hiding the text
2546insert({object}, {item} [, {idx}]) List	insert {item} in {object} [before {idx}]
2547interrupt()			none	interrupt script execution
2548invert({expr})			Number	bitwise invert
2549isdirectory({directory})	Number	|TRUE| if {directory} is a directory
2550isinf({expr})			Number	determine if {expr} is infinity value
2551					(positive or negative)
2552islocked({expr})		Number	|TRUE| if {expr} is locked
2553isnan({expr})			Number	|TRUE| if {expr} is NaN
2554items({dict})			List	key-value pairs in {dict}
2555job_getchannel({job})		Channel	get the channel handle for {job}
2556job_info([{job}])		Dict	get information about {job}
2557job_setoptions({job}, {options}) none	set options for {job}
2558job_start({command} [, {options}])
2559				Job	start a job
2560job_status({job})		String	get the status of {job}
2561job_stop({job} [, {how}])	Number	stop {job}
2562join({list} [, {sep}])		String	join {list} items into one String
2563js_decode({string})		any	decode JS style JSON
2564js_encode({expr})		String	encode JS style JSON
2565json_decode({string})		any	decode JSON
2566json_encode({expr})		String	encode JSON
2567keys({dict})			List	keys in {dict}
2568len({expr})			Number	the length of {expr}
2569libcall({lib}, {func}, {arg})	String	call {func} in library {lib} with {arg}
2570libcallnr({lib}, {func}, {arg})	Number	idem, but return a Number
2571line({expr} [, {winid}])	Number	line nr of cursor, last line or mark
2572line2byte({lnum})		Number	byte count of line {lnum}
2573lispindent({lnum})		Number	Lisp indent for line {lnum}
2574list2str({list} [, {utf8}])	String	turn numbers in {list} into a String
2575listener_add({callback} [, {buf}])
2576				Number	add a callback to listen to changes
2577listener_flush([{buf}])		none	invoke listener callbacks
2578listener_remove({id})		none	remove a listener callback
2579localtime()			Number	current time
2580log({expr})			Float	natural logarithm (base e) of {expr}
2581log10({expr})			Float	logarithm of Float {expr} to base 10
2582luaeval({expr} [, {expr}])	any	evaluate |Lua| expression
2583map({expr1}, {expr2})		List/Dict  change each item in {expr1} to {expr}
2584maparg({name} [, {mode} [, {abbr} [, {dict}]]])
2585				String or Dict
2586					rhs of mapping {name} in mode {mode}
2587mapcheck({name} [, {mode} [, {abbr}]])
2588				String	check for mappings matching {name}
2589match({expr}, {pat} [, {start} [, {count}]])
2590				Number	position where {pat} matches in {expr}
2591matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
2592				Number	highlight {pattern} with {group}
2593matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
2594				Number	highlight positions with {group}
2595matcharg({nr})			List	arguments of |:match|
2596matchdelete({id} [, {win}])	Number	delete match identified by {id}
2597matchend({expr}, {pat} [, {start} [, {count}]])
2598				Number	position where {pat} ends in {expr}
2599matchlist({expr}, {pat} [, {start} [, {count}]])
2600				List	match and submatches of {pat} in {expr}
2601matchstr({expr}, {pat} [, {start} [, {count}]])
2602				String	{count}'th match of {pat} in {expr}
2603matchstrpos({expr}, {pat} [, {start} [, {count}]])
2604				List	{count}'th match of {pat} in {expr}
2605max({expr})			Number	maximum value of items in {expr}
2606menu_info({name} [, {mode}])	Dict	get menu item information
2607min({expr})			Number	minimum value of items in {expr}
2608mkdir({name} [, {path} [, {prot}]])
2609				Number	create directory {name}
2610mode([expr])			String	current editing mode
2611mzeval({expr})			any	evaluate |MzScheme| expression
2612nextnonblank({lnum})		Number	line nr of non-blank line >= {lnum}
2613nr2char({expr} [, {utf8}])	String	single char with ASCII/UTF8 value {expr}
2614or({expr}, {expr})		Number	bitwise OR
2615pathshorten({expr})		String	shorten directory names in a path
2616perleval({expr})		any	evaluate |Perl| expression
2617popup_atcursor({what}, {options}) Number create popup window near the cursor
2618popup_beval({what}, {options})	Number	create popup window for 'ballooneval'
2619popup_clear()			none	close all popup windows
2620popup_close({id} [, {result}])	none	close popup window {id}
2621popup_create({what}, {options}) Number	create a popup window
2622popup_dialog({what}, {options}) Number	create a popup window used as a dialog
2623popup_filter_menu({id}, {key})  Number	filter for a menu popup window
2624popup_filter_yesno({id}, {key}) Number	filter for a dialog popup window
2625popup_findinfo()		Number	get window ID of info popup window
2626popup_findpreview()		Number	get window ID of preview popup window
2627popup_getoptions({id})		Dict	get options of popup window {id}
2628popup_getpos({id})		Dict	get position of popup window {id}
2629popup_hide({id})		none	hide popup menu {id}
2630popup_list()			List	get a list of window IDs of al popups
2631popup_locate({row}, {col})	Number 	get window ID of popup at position
2632popup_menu({what}, {options})	Number	create a popup window used as a menu
2633popup_move({id}, {options})	none	set position of popup window {id}
2634popup_notification({what}, {options})
2635				Number	create a notification popup window
2636popup_show({id})		none	unhide popup window {id}
2637popup_setoptions({id}, {options})
2638				none	set options for popup window {id}
2639popup_settext({id}, {text})	none	set the text of popup window {id}
2640pow({x}, {y})			Float	{x} to the power of {y}
2641prevnonblank({lnum})		Number	line nr of non-blank line <= {lnum}
2642printf({fmt}, {expr1}...)	String	format text
2643prompt_setcallback({buf}, {expr}) none	set prompt callback function
2644prompt_setinterrupt({buf}, {text}) none	set prompt interrupt function
2645prompt_setprompt({buf}, {text}) none	set prompt text
2646prop_add({lnum}, {col}, {props})  none	add a text property
2647prop_clear({lnum} [, {lnum-end} [, {props}]])
2648				none	remove all text properties
2649prop_find({props} [, {direction}])
2650				Dict	search for a text property
2651prop_list({lnum} [, {props}])	List	text properties in {lnum}
2652prop_remove({props} [, {lnum} [, {lnum-end}]])
2653				Number	remove a text property
2654prop_type_add({name}, {props})	none	define a new property type
2655prop_type_change({name}, {props})
2656				none	change an existing property type
2657prop_type_delete({name} [, {props}])
2658				none	delete a property type
2659prop_type_get([{name} [, {props}]])
2660				Dict	get property type values
2661prop_type_list([{props}])	List	get list of property types
2662pum_getpos()			Dict	position and size of pum if visible
2663pumvisible()			Number	whether popup menu is visible
2664pyeval({expr})			any	evaluate |Python| expression
2665py3eval({expr})			any	evaluate |python3| expression
2666pyxeval({expr})			any	evaluate |python_x| expression
2667rand([{expr}])			Number	get pseudo-random number
2668range({expr} [, {max} [, {stride}]])
2669				List	items from {expr} to {max}
2670readdir({dir} [, {expr}])	List	file names in {dir} selected by {expr}
2671readfile({fname} [, {type} [, {max}]])
2672				List	get list of lines from file {fname}
2673reg_executing()			String	get the executing register name
2674reg_recording()			String	get the recording register name
2675reltime([{start} [, {end}]])	List	get time value
2676reltimefloat({time})		Float	turn the time value into a Float
2677reltimestr({time})		String	turn time value into a String
2678remote_expr({server}, {string} [, {idvar} [, {timeout}]])
2679				String	send expression
2680remote_foreground({server})	Number	bring Vim server to the foreground
2681remote_peek({serverid} [, {retvar}])
2682				Number	check for reply string
2683remote_read({serverid} [, {timeout}])
2684				String	read reply string
2685remote_send({server}, {string} [, {idvar}])
2686				String	send key sequence
2687remote_startserver({name})	none	become server {name}
2688remove({list}, {idx} [, {end}])	any/List
2689					remove items {idx}-{end} from {list}
2690remove({blob}, {idx} [, {end}])	Number/Blob
2691					remove bytes {idx}-{end} from {blob}
2692remove({dict}, {key})		any	remove entry {key} from {dict}
2693rename({from}, {to})		Number	rename (move) file from {from} to {to}
2694repeat({expr}, {count})		String	repeat {expr} {count} times
2695resolve({filename})		String	get filename a shortcut points to
2696reverse({list})			List	reverse {list} in-place
2697round({expr})			Float	round off {expr}
2698rubyeval({expr})		any	evaluate |Ruby| expression
2699screenattr({row}, {col})	Number	attribute at screen position
2700screenchar({row}, {col})	Number	character at screen position
2701screenchars({row}, {col})	List	List of characters at screen position
2702screencol()			Number	current cursor column
2703screenpos({winid}, {lnum}, {col}) Dict	screen row and col of a text character
2704screenrow()			Number	current cursor row
2705screenstring({row}, {col})	String	characters at screen position
2706search({pattern} [, {flags} [, {stopline} [, {timeout}]]])
2707				Number	search for {pattern}
2708searchdecl({name} [, {global} [, {thisblock}]])
2709				Number	search for variable declaration
2710searchpair({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
2711				Number	search for other end of start/end pair
2712searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
2713				List	search for other end of start/end pair
2714searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]])
2715				List	search for {pattern}
2716server2client({clientid}, {string})
2717				Number	send reply string
2718serverlist()			String	get a list of available servers
2719setbufline({expr}, {lnum}, {text})
2720				Number	set line {lnum} to {text} in buffer
2721					{expr}
2722setbufvar({expr}, {varname}, {val})
2723				none	set {varname} in buffer {expr} to {val}
2724setcharsearch({dict})		Dict	set character search from {dict}
2725setcmdpos({pos})		Number	set cursor position in command-line
2726setenv({name}, {val})		none	set environment variable
2727setfperm({fname}, {mode})	Number	set {fname} file permissions to {mode}
2728setline({lnum}, {line})		Number	set line {lnum} to {line}
2729setloclist({nr}, {list} [, {action} [, {what}]])
2730				Number	modify location list using {list}
2731setmatches({list} [, {win}])	Number	restore a list of matches
2732setpos({expr}, {list})		Number	set the {expr} position to {list}
2733setqflist({list} [, {action} [, {what}]])
2734				Number	modify quickfix list using {list}
2735setreg({n}, {v} [, {opt}])	Number	set register to value and type
2736settabvar({nr}, {varname}, {val}) none	set {varname} in tab page {nr} to {val}
2737settabwinvar({tabnr}, {winnr}, {varname}, {val})
2738				none	set {varname} in window {winnr} in tab
2739					page {tabnr} to {val}
2740settagstack({nr}, {dict} [, {action}])
2741				Number	modify tag stack using {dict}
2742setwinvar({nr}, {varname}, {val}) none	set {varname} in window {nr} to {val}
2743sha256({string})		String	SHA256 checksum of {string}
2744shellescape({string} [, {special}])
2745				String	escape {string} for use as shell
2746					command argument
2747shiftwidth([{col}])		Number	effective value of 'shiftwidth'
2748sign_define({name} [, {dict}])	Number	define or update a sign
2749sign_define({list})		List	define or update a list of signs
2750sign_getdefined([{name}])	List	get a list of defined signs
2751sign_getplaced([{expr} [, {dict}]])
2752				List	get a list of placed signs
2753sign_jump({id}, {group}, {expr})
2754				Number	jump to a sign
2755sign_place({id}, {group}, {name}, {expr} [, {dict}])
2756				Number	place a sign
2757sign_placelist({list})		List	place a list of signs
2758sign_undefine([{name}])		Number	undefine a sign
2759sign_undefine({list})		List	undefine a list of signs
2760sign_unplace({group} [, {dict}])
2761				Number	unplace a sign
2762sign_unplacelist({list})	List	unplace a list of signs
2763simplify({filename})		String	simplify filename as much as possible
2764sin({expr})			Float	sine of {expr}
2765sinh({expr})			Float	hyperbolic sine of {expr}
2766sort({list} [, {func} [, {dict}]])
2767				List	sort {list}, using {func} to compare
2768sound_clear()			none	stop playing all sounds
2769sound_playevent({name} [, {callback}])
2770				Number	play an event sound
2771sound_playfile({path} [, {callback}])
2772				Number	play sound file {path}
2773sound_stop({id})		none	stop playing sound {id}
2774soundfold({word})		String	sound-fold {word}
2775spellbadword()			String	badly spelled word at cursor
2776spellsuggest({word} [, {max} [, {capital}]])
2777				List	spelling suggestions
2778split({expr} [, {pat} [, {keepempty}]])
2779				List	make |List| from {pat} separated {expr}
2780sqrt({expr})			Float	square root of {expr}
2781srand([{expr}])			List	get seed for |rand()|
2782state([{what}])			String	current state of Vim
2783str2float({expr})		Float	convert String to Float
2784str2list({expr} [, {utf8}])	List	convert each character of {expr} to
2785					ASCII/UTF8 value
2786str2nr({expr} [, {base} [, {quoted}]])
2787				Number	convert String to Number
2788strchars({expr} [, {skipcc}])	Number	character length of the String {expr}
2789strcharpart({str}, {start} [, {len}])
2790				String	{len} characters of {str} at {start}
2791strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
2792strftime({format} [, {time}])	String	format time with a specified format
2793strgetchar({str}, {index})	Number	get char {index} from {str}
2794stridx({haystack}, {needle} [, {start}])
2795				Number	index of {needle} in {haystack}
2796string({expr})			String	String representation of {expr} value
2797strlen({expr})			Number	length of the String {expr}
2798strpart({str}, {start} [, {len}])
2799				String	{len} characters of {str} at {start}
2800strptime({format}, {timestring})
2801				Number	Convert {timestring} to unix timestamp
2802strridx({haystack}, {needle} [, {start}])
2803				Number	last index of {needle} in {haystack}
2804strtrans({expr})		String	translate string to make it printable
2805strwidth({expr})		Number	display cell length of the String {expr}
2806submatch({nr} [, {list}])	String or List
2807					specific match in ":s" or substitute()
2808substitute({expr}, {pat}, {sub}, {flags})
2809				String	all {pat} in {expr} replaced with {sub}
2810swapinfo({fname})		Dict	information about swap file {fname}
2811swapname({expr})		String	swap file of buffer {expr}
2812synID({lnum}, {col}, {trans})	Number	syntax ID at {lnum} and {col}
2813synIDattr({synID}, {what} [, {mode}])
2814				String	attribute {what} of syntax ID {synID}
2815synIDtrans({synID})		Number	translated syntax ID of {synID}
2816synconcealed({lnum}, {col})	List	info about concealing
2817synstack({lnum}, {col})		List	stack of syntax IDs at {lnum} and {col}
2818system({expr} [, {input}])	String	output of shell command/filter {expr}
2819systemlist({expr} [, {input}])	List	output of shell command/filter {expr}
2820tabpagebuflist([{arg}])		List	list of buffer numbers in tab page
2821tabpagenr([{arg}])		Number	number of current or last tab page
2822tabpagewinnr({tabarg} [, {arg}]) Number	number of current window in tab page
2823taglist({expr} [, {filename}])	List	list of tags matching {expr}
2824tagfiles()			List	tags files used
2825tan({expr})			Float	tangent of {expr}
2826tanh({expr})			Float	hyperbolic tangent of {expr}
2827tempname()			String	name for a temporary file
2828term_dumpdiff({filename}, {filename} [, {options}])
2829				Number  display difference between two dumps
2830term_dumpload({filename} [, {options}])
2831				Number	displaying a screen dump
2832term_dumpwrite({buf}, {filename} [, {options}])
2833				none	dump terminal window contents
2834term_getaltscreen({buf})	Number	get the alternate screen flag
2835term_getansicolors({buf})	List	get ANSI palette in GUI color mode
2836term_getattr({attr}, {what})	Number	get the value of attribute {what}
2837term_getcursor({buf})		List	get the cursor position of a terminal
2838term_getjob({buf})		Job	get the job associated with a terminal
2839term_getline({buf}, {row})	String	get a line of text from a terminal
2840term_getscrolled({buf})		Number	get the scroll count of a terminal
2841term_getsize({buf})		List	get the size of a terminal
2842term_getstatus({buf})		String	get the status of a terminal
2843term_gettitle({buf})		String	get the title of a terminal
2844term_gettty({buf}, [{input}])	String	get the tty name of a terminal
2845term_list()			List	get the list of terminal buffers
2846term_scrape({buf}, {row})	List	get row of a terminal screen
2847term_sendkeys({buf}, {keys})	none	send keystrokes to a terminal
2848term_setapi({buf}, {expr})	none	set |terminal-api| function name prefix
2849term_setansicolors({buf}, {colors})
2850				none	set ANSI palette in GUI color mode
2851term_setkill({buf}, {how})	none	set signal to stop job in terminal
2852term_setrestore({buf}, {command}) none	set command to restore terminal
2853term_setsize({buf}, {rows}, {cols})
2854				none	set the size of a terminal
2855term_start({cmd} [, {options}])	Number	open a terminal window and run a job
2856term_wait({buf} [, {time}])	Number  wait for screen to be updated
2857test_alloc_fail({id}, {countdown}, {repeat})
2858				none	make memory allocation fail
2859test_autochdir()		none	enable 'autochdir' during startup
2860test_feedinput({string})	none	add key sequence to input buffer
2861test_garbagecollect_now()	none	free memory right now for testing
2862test_garbagecollect_soon()	none	free memory soon for testing
2863test_getvalue({string})		any	get value of an internal variable
2864test_ignore_error({expr})	none	ignore a specific error
2865test_null_blob()		Blob	null value for testing
2866test_null_channel()		Channel	null value for testing
2867test_null_dict()		Dict	null value for testing
2868test_null_function()		Funcref	null value for testing
2869test_null_job()			Job	null value for testing
2870test_null_list()		List	null value for testing
2871test_null_partial()		Funcref	null value for testing
2872test_null_string()		String	null value for testing
2873test_unknown()			any	unknown value for testing
2874test_void()			any	void value for testing
2875test_option_not_set({name})	none	reset flag indicating option was set
2876test_override({expr}, {val})	none	test with Vim internal overrides
2877test_refcount({expr})		Number	get the reference count of {expr}
2878test_scrollbar({which}, {value}, {dragging})
2879				none	scroll in the GUI for testing
2880test_setmouse({row}, {col})	none	set the mouse position for testing
2881test_srand_seed([seed])		none	set seed for testing srand()
2882test_settime({expr})		none	set current time for testing
2883timer_info([{id}])		List	information about timers
2884timer_pause({id}, {pause})	none	pause or unpause a timer
2885timer_start({time}, {callback} [, {options}])
2886				Number	create a timer
2887timer_stop({timer})		none	stop a timer
2888timer_stopall()			none	stop all timers
2889tolower({expr})			String	the String {expr} switched to lowercase
2890toupper({expr})			String	the String {expr} switched to uppercase
2891tr({src}, {fromstr}, {tostr})	String	translate chars of {src} in {fromstr}
2892					to chars in {tostr}
2893trim({text} [, {mask}])		String	trim characters in {mask} from {text}
2894trunc({expr})			Float	truncate Float {expr}
2895type({name})			Number	type of variable {name}
2896undofile({name})		String	undo file name for {name}
2897undotree()			List	undo file tree
2898uniq({list} [, {func} [, {dict}]])
2899				List	remove adjacent duplicates from a list
2900values({dict})			List	values in {dict}
2901virtcol({expr})			Number	screen column of cursor or mark
2902visualmode([expr])		String	last visual mode used
2903wildmenumode()			Number	whether 'wildmenu' mode is active
2904win_execute({id}, {command} [, {silent}])
2905				String	execute {command} in window {id}
2906win_findbuf({bufnr})		List	find windows containing {bufnr}
2907win_getid([{win} [, {tab}]])	Number	get window ID for {win} in {tab}
2908win_gettype([{nr}])		String	type of window {nr}
2909win_gotoid({expr})		Number	go to window with ID {expr}
2910win_id2tabwin({expr})		List	get tab and window nr from window ID
2911win_id2win({expr})		Number	get window nr from window ID
2912win_screenpos({nr})		List	get screen position of window {nr}
2913win_splitmove({nr}, {target} [, {options}])
2914				Number	move window {nr} to split of {target}
2915winbufnr({nr})			Number	buffer number of window {nr}
2916wincol()			Number	window column of the cursor
2917winheight({nr})			Number	height of window {nr}
2918winlayout([{tabnr}])		List	layout of windows in tab {tabnr}
2919winline()			Number	window line of the cursor
2920winnr([{expr}])			Number	number of current window
2921winrestcmd()			String	returns command to restore window sizes
2922winrestview({dict})		none	restore view of current window
2923winsaveview()			Dict	save view of current window
2924winwidth({nr})			Number	width of window {nr}
2925wordcount()			Dict	get byte/char/word statistics
2926writefile({object}, {fname} [, {flags}])
2927				Number	write |Blob| or |List| of lines to file
2928xor({expr}, {expr})		Number	bitwise XOR
2929
2930
2931abs({expr})							*abs()*
2932		Return the absolute value of {expr}.  When {expr} evaluates to
2933		a |Float| abs() returns a |Float|.  When {expr} can be
2934		converted to a |Number| abs() returns a |Number|.  Otherwise
2935		abs() gives an error message and returns -1.
2936		Examples: >
2937			echo abs(1.456)
2938<			1.456  >
2939			echo abs(-5.456)
2940<			5.456  >
2941			echo abs(-4)
2942<			4
2943
2944		Can also be used as a |method|: >
2945			Compute()->abs()
2946
2947<		{only available when compiled with the |+float| feature}
2948
2949
2950acos({expr})							*acos()*
2951		Return the arc cosine of {expr} measured in radians, as a
2952		|Float| in the range of [0, pi].
2953		{expr} must evaluate to a |Float| or a |Number| in the range
2954		[-1, 1].
2955		Examples: >
2956			:echo acos(0)
2957<			1.570796 >
2958			:echo acos(-0.5)
2959<			2.094395
2960
2961		Can also be used as a |method|: >
2962			Compute()->acos()
2963
2964<		{only available when compiled with the |+float| feature}
2965
2966
2967add({object}, {expr})					*add()*
2968		Append the item {expr} to |List| or |Blob| {object}.  Returns
2969		the resulting |List| or |Blob|.  Examples: >
2970			:let alist = add([1, 2, 3], item)
2971			:call add(mylist, "woodstock")
2972<		Note that when {expr} is a |List| it is appended as a single
2973		item.  Use |extend()| to concatenate |Lists|.
2974		When {object} is a |Blob| then  {expr} must be a number.
2975		Use |insert()| to add an item at another position.
2976
2977		Can also be used as a |method|: >
2978			mylist->add(val1)->add(val2)
2979
2980
2981and({expr}, {expr})					*and()*
2982		Bitwise AND on the two arguments.  The arguments are converted
2983		to a number.  A List, Dict or Float argument causes an error.
2984		Example: >
2985			:let flag = and(bits, 0x80)
2986<		Can also be used as a |method|: >
2987			:let flag = bits->and(0x80)
2988
2989
2990append({lnum}, {text})					*append()*
2991		When {text} is a |List|: Append each item of the |List| as a
2992		text line below line {lnum} in the current buffer.
2993		Otherwise append {text} as one text line below line {lnum} in
2994		the current buffer.
2995		{lnum} can be zero to insert a line before the first one.
2996		Returns 1 for failure ({lnum} out of range or out of memory),
2997		0 for success.  Example: >
2998			:let failed = append(line('$'), "# THE END")
2999			:let failed = append(0, ["Chapter 1", "the beginning"])
3000
3001<		Can also be used as a |method| after a List: >
3002			mylist->append(lnum)
3003
3004
3005appendbufline({expr}, {lnum}, {text})			*appendbufline()*
3006		Like |append()| but append the text in buffer {expr}.
3007
3008		This function works only for loaded buffers. First call
3009		|bufload()| if needed.
3010
3011		For the use of {expr}, see |bufname()|.
3012
3013		{lnum} is used like with |append()|.  Note that using |line()|
3014		would use the current buffer, not the one appending to.
3015		Use "$" to append at the end of the buffer.
3016
3017		On success 0 is returned, on failure 1 is returned.
3018
3019		If {expr} is not a valid buffer or {lnum} is not valid, an
3020		error message is given. Example: >
3021			:let failed = appendbufline(13, 0, "# THE START")
3022<
3023		Can also be used as a |method| after a List: >
3024			mylist->appendbufline(buf, lnum)
3025
3026
3027argc([{winid}])					*argc()*
3028		The result is the number of files in the argument list.  See
3029		|arglist|.
3030		If {winid} is not supplied, the argument list of the current
3031		window is used.
3032		If {winid} is -1, the global argument list is used.
3033		Otherwise {winid} specifies the window of which the argument
3034		list is used: either the window number or the window ID.
3035		Returns -1 if the {winid} argument is invalid.
3036
3037							*argidx()*
3038argidx()	The result is the current index in the argument list.  0 is
3039		the first file.  argc() - 1 is the last one.  See |arglist|.
3040
3041							*arglistid()*
3042arglistid([{winnr} [, {tabnr}]])
3043		Return the argument list ID.  This is a number which
3044		identifies the argument list being used.  Zero is used for the
3045		global argument list.  See |arglist|.
3046		Returns -1 if the arguments are invalid.
3047
3048		Without arguments use the current window.
3049		With {winnr} only use this window in the current tab page.
3050		With {winnr} and {tabnr} use the window in the specified tab
3051		page.
3052		{winnr} can be the window number or the |window-ID|.
3053
3054							*argv()*
3055argv([{nr} [, {winid}]])
3056		The result is the {nr}th file in the argument list.  See
3057		|arglist|.  "argv(0)" is the first one.  Example: >
3058	:let i = 0
3059	:while i < argc()
3060	:  let f = escape(fnameescape(argv(i)), '.')
3061	:  exe 'amenu Arg.' . f . ' :e ' . f . '<CR>'
3062	:  let i = i + 1
3063	:endwhile
3064<		Without the {nr} argument, or when {nr} is -1, a |List| with
3065		the whole |arglist| is returned.
3066
3067		The {winid} argument specifies the window ID, see |argc()|.
3068		For the Vim command line arguments see |v:argv|.
3069
3070asin({expr})						*asin()*
3071		Return the arc sine of {expr} measured in radians, as a |Float|
3072		in the range of [-pi/2, pi/2].
3073		{expr} must evaluate to a |Float| or a |Number| in the range
3074		[-1, 1].
3075		Examples: >
3076			:echo asin(0.8)
3077<			0.927295 >
3078			:echo asin(-0.5)
3079<			-0.523599
3080
3081		Can also be used as a |method|: >
3082			Compute()->asin()
3083<
3084		{only available when compiled with the |+float| feature}
3085
3086
3087assert_ functions are documented here: |assert-functions-details|
3088
3089
3090
3091atan({expr})						*atan()*
3092		Return the principal value of the arc tangent of {expr}, in
3093		the range [-pi/2, +pi/2] radians, as a |Float|.
3094		{expr} must evaluate to a |Float| or a |Number|.
3095		Examples: >
3096			:echo atan(100)
3097<			1.560797 >
3098			:echo atan(-4.01)
3099<			-1.326405
3100
3101		Can also be used as a |method|: >
3102			Compute()->atan()
3103<
3104		{only available when compiled with the |+float| feature}
3105
3106
3107atan2({expr1}, {expr2})					*atan2()*
3108		Return the arc tangent of {expr1} / {expr2}, measured in
3109		radians, as a |Float| in the range [-pi, pi].
3110		{expr1} and {expr2} must evaluate to a |Float| or a |Number|.
3111		Examples: >
3112			:echo atan2(-1, 1)
3113<			-0.785398 >
3114			:echo atan2(1, -1)
3115<			2.356194
3116
3117		Can also be used as a |method|: >
3118			Compute()->atan(1)
3119<
3120		{only available when compiled with the |+float| feature}
3121
3122balloon_gettext()					*balloon_gettext()*
3123		Return the current text in the balloon.  Only for the string,
3124		not used for the List.
3125
3126balloon_show({expr})					*balloon_show()*
3127		Show {expr} inside the balloon.  For the GUI {expr} is used as
3128		a string.  For a terminal {expr} can be a list, which contains
3129		the lines of the balloon.  If {expr} is not a list it will be
3130		split with |balloon_split()|.
3131		If {expr} is an empty string any existing balloon is removed.
3132
3133		Example: >
3134			func GetBalloonContent()
3135			   " ... initiate getting the content
3136			   return ''
3137			endfunc
3138			set balloonexpr=GetBalloonContent()
3139
3140			func BalloonCallback(result)
3141			  call balloon_show(a:result)
3142			endfunc
3143<		Can also be used as a |method|: >
3144			GetText()->balloon_show()
3145<
3146		The intended use is that fetching the content of the balloon
3147		is initiated from 'balloonexpr'.  It will invoke an
3148		asynchronous method, in which a callback invokes
3149		balloon_show().  The 'balloonexpr' itself can return an
3150		empty string or a placeholder.
3151
3152		When showing a balloon is not possible nothing happens, no
3153		error message.
3154		{only available when compiled with the |+balloon_eval| or
3155		|+balloon_eval_term| feature}
3156
3157balloon_split({msg})					*balloon_split()*
3158		Split {msg} into lines to be displayed in a balloon.  The
3159		splits are made for the current window size and optimize to
3160		show debugger output.
3161		Returns a |List| with the split lines.
3162		Can also be used as a |method|: >
3163			GetText()->balloon_split()->balloon_show()
3164
3165<		{only available when compiled with the |+balloon_eval_term|
3166		feature}
3167
3168							*browse()*
3169browse({save}, {title}, {initdir}, {default})
3170		Put up a file requester.  This only works when "has("browse")"
3171		returns |TRUE| (only in some GUI versions).
3172		The input fields are:
3173		    {save}	when |TRUE|, select file to write
3174		    {title}	title for the requester
3175		    {initdir}	directory to start browsing in
3176		    {default}	default file name
3177		An empty string is returned when the "Cancel" button is hit,
3178		something went wrong, or browsing is not possible.
3179
3180							*browsedir()*
3181browsedir({title}, {initdir})
3182		Put up a directory requester.  This only works when
3183		"has("browse")" returns |TRUE| (only in some GUI versions).
3184		On systems where a directory browser is not supported a file
3185		browser is used.  In that case: select a file in the directory
3186		to be used.
3187		The input fields are:
3188		    {title}	title for the requester
3189		    {initdir}	directory to start browsing in
3190		When the "Cancel" button is hit, something went wrong, or
3191		browsing is not possible, an empty string is returned.
3192
3193bufadd({name})						*bufadd()*
3194		Add a buffer to the buffer list with {name}.
3195		If a buffer for file {name} already exists, return that buffer
3196		number.  Otherwise return the buffer number of the newly
3197		created buffer.  When {name} is an empty string then a new
3198		buffer is always created.
3199		The buffer will not have 'buflisted' set and not be loaded
3200		yet.  To add some text to the buffer use this: >
3201			let bufnr = bufadd('someName')
3202			call bufload(bufnr)
3203			call setbufline(bufnr, 1, ['some', 'text'])
3204<		Can also be used as a |method|: >
3205			let bufnr = 'somename'->bufadd()
3206
3207bufexists({expr})					*bufexists()*
3208		The result is a Number, which is |TRUE| if a buffer called
3209		{expr} exists.
3210		If the {expr} argument is a number, buffer numbers are used.
3211		Number zero is the alternate buffer for the current window.
3212
3213		If the {expr} argument is a string it must match a buffer name
3214		exactly.  The name can be:
3215		- Relative to the current directory.
3216		- A full path.
3217		- The name of a buffer with 'buftype' set to "nofile".
3218		- A URL name.
3219		Unlisted buffers will be found.
3220		Note that help files are listed by their short name in the
3221		output of |:buffers|, but bufexists() requires using their
3222		long name to be able to find them.
3223		bufexists() may report a buffer exists, but to use the name
3224		with a |:buffer| command you may need to use |expand()|.  Esp
3225		for MS-Windows 8.3 names in the form "c:\DOCUME~1"
3226		Use "bufexists(0)" to test for the existence of an alternate
3227		file name.
3228
3229		Can also be used as a |method|: >
3230			let exists = 'somename'->bufexists()
3231<
3232		Obsolete name: buffer_exists().		*buffer_exists()*
3233
3234buflisted({expr})					*buflisted()*
3235		The result is a Number, which is |TRUE| if a buffer called
3236		{expr} exists and is listed (has the 'buflisted' option set).
3237		The {expr} argument is used like with |bufexists()|.
3238
3239		Can also be used as a |method|: >
3240			let listed = 'somename'->buflisted()
3241
3242bufload({expr})						*bufload()*
3243		Ensure the buffer {expr} is loaded.  When the buffer name
3244		refers to an existing file then the file is read.  Otherwise
3245		the buffer will be empty.  If the buffer was already loaded
3246		then there is no change.
3247		If there is an existing swap file for the file of the buffer,
3248		there will be no dialog, the buffer will be loaded anyway.
3249		The {expr} argument is used like with |bufexists()|.
3250
3251		Can also be used as a |method|: >
3252			eval 'somename'->bufload()
3253
3254bufloaded({expr})					*bufloaded()*
3255		The result is a Number, which is |TRUE| if a buffer called
3256		{expr} exists and is loaded (shown in a window or hidden).
3257		The {expr} argument is used like with |bufexists()|.
3258
3259		Can also be used as a |method|: >
3260			let loaded = 'somename'->bufloaded()
3261
3262bufname([{expr}])					*bufname()*
3263		The result is the name of a buffer, as it is displayed by the
3264		":ls" command.
3265		If {expr} is omitted the current buffer is used.
3266		If {expr} is a Number, that buffer number's name is given.
3267		Number zero is the alternate buffer for the current window.
3268		If {expr} is a String, it is used as a |file-pattern| to match
3269		with the buffer names.  This is always done like 'magic' is
3270		set and 'cpoptions' is empty.  When there is more than one
3271		match an empty string is returned.
3272		"" or "%" can be used for the current buffer, "#" for the
3273		alternate buffer.
3274		A full match is preferred, otherwise a match at the start, end
3275		or middle of the buffer name is accepted.  If you only want a
3276		full match then put "^" at the start and "$" at the end of the
3277		pattern.
3278		Listed buffers are found first.  If there is a single match
3279		with a listed buffer, that one is returned.  Next unlisted
3280		buffers are searched for.
3281		If the {expr} is a String, but you want to use it as a buffer
3282		number, force it to be a Number by adding zero to it: >
3283			:echo bufname("3" + 0)
3284<		Can also be used as a |method|: >
3285			echo bufnr->bufname()
3286
3287<		If the buffer doesn't exist, or doesn't have a name, an empty
3288		string is returned. >
3289	bufname("#")		alternate buffer name
3290	bufname(3)		name of buffer 3
3291	bufname("%")		name of current buffer
3292	bufname("file2")	name of buffer where "file2" matches.
3293<							*buffer_name()*
3294		Obsolete name: buffer_name().
3295
3296							*bufnr()*
3297bufnr([{expr} [, {create}]])
3298		The result is the number of a buffer, as it is displayed by
3299		the ":ls" command.  For the use of {expr}, see |bufname()|
3300		above.
3301
3302		If the buffer doesn't exist, -1 is returned.  Or, if the
3303		{create} argument is present and not zero, a new, unlisted,
3304		buffer is created and its number is returned.  Example: >
3305			let newbuf = bufnr('Scratch001', 1)
3306<		Using an empty name uses the current buffer. To create a new
3307		buffer with an empty name use |bufadd()|.
3308
3309		bufnr("$") is the last buffer: >
3310			:let last_buffer = bufnr("$")
3311<		The result is a Number, which is the highest buffer number
3312		of existing buffers.  Note that not all buffers with a smaller
3313		number necessarily exist, because ":bwipeout" may have removed
3314		them.  Use bufexists() to test for the existence of a buffer.
3315
3316		Can also be used as a |method|: >
3317			echo bufref->bufnr()
3318<
3319		Obsolete name: buffer_number().		*buffer_number()*
3320							*last_buffer_nr()*
3321		Obsolete name for bufnr("$"): last_buffer_nr().
3322
3323bufwinid({expr})					*bufwinid()*
3324		The result is a Number, which is the |window-ID| of the first
3325		window associated with buffer {expr}.  For the use of {expr},
3326		see |bufname()| above.  If buffer {expr} doesn't exist or
3327		there is no such window, -1 is returned.  Example: >
3328
3329	echo "A window containing buffer 1 is " . (bufwinid(1))
3330<
3331		Only deals with the current tab page.
3332
3333		Can also be used as a |method|: >
3334			FindBuffer()->bufwinid()
3335
3336bufwinnr({expr})					*bufwinnr()*
3337		Like |bufwinid()| but return the window number instead of the
3338		|window-ID|.
3339		If buffer {expr} doesn't exist or there is no such window, -1
3340		is returned.  Example: >
3341
3342	echo "A window containing buffer 1 is " . (bufwinnr(1))
3343
3344<		The number can be used with |CTRL-W_w| and ":wincmd w"
3345		|:wincmd|.
3346
3347		Can also be used as a |method|: >
3348			FindBuffer()->bufwinnr()
3349
3350byte2line({byte})					*byte2line()*
3351		Return the line number that contains the character at byte
3352		count {byte} in the current buffer.  This includes the
3353		end-of-line character, depending on the 'fileformat' option
3354		for the current buffer.  The first character has byte count
3355		one.
3356		Also see |line2byte()|, |go| and |:goto|.
3357
3358		Can also be used as a |method|: >
3359			GetOffset()->byte2line()
3360
3361<		{not available when compiled without the |+byte_offset|
3362		feature}
3363
3364byteidx({expr}, {nr})					*byteidx()*
3365		Return byte index of the {nr}'th character in the string
3366		{expr}.  Use zero for the first character, it returns zero.
3367		This function is only useful when there are multibyte
3368		characters, otherwise the returned value is equal to {nr}.
3369		Composing characters are not counted separately, their byte
3370		length is added to the preceding base character.  See
3371		|byteidxcomp()| below for counting composing characters
3372		separately.
3373		Example : >
3374			echo matchstr(str, ".", byteidx(str, 3))
3375<		will display the fourth character.  Another way to do the
3376		same: >
3377			let s = strpart(str, byteidx(str, 3))
3378			echo strpart(s, 0, byteidx(s, 1))
3379<		Also see |strgetchar()| and |strcharpart()|.
3380
3381		If there are less than {nr} characters -1 is returned.
3382		If there are exactly {nr} characters the length of the string
3383		in bytes is returned.
3384
3385		Can also be used as a |method|: >
3386			GetName()->byteidx(idx)
3387
3388byteidxcomp({expr}, {nr})					*byteidxcomp()*
3389		Like byteidx(), except that a composing character is counted
3390		as a separate character.  Example: >
3391			let s = 'e' . nr2char(0x301)
3392			echo byteidx(s, 1)
3393			echo byteidxcomp(s, 1)
3394			echo byteidxcomp(s, 2)
3395<		The first and third echo result in 3 ('e' plus composing
3396		character is 3 bytes), the second echo results in 1 ('e' is
3397		one byte).
3398		Only works different from byteidx() when 'encoding' is set to
3399		a Unicode encoding.
3400
3401		Can also be used as a |method|: >
3402			GetName()->byteidxcomp(idx)
3403
3404call({func}, {arglist} [, {dict}])			*call()* *E699*
3405		Call function {func} with the items in |List| {arglist} as
3406		arguments.
3407		{func} can either be a |Funcref| or the name of a function.
3408		a:firstline and a:lastline are set to the cursor line.
3409		Returns the return value of the called function.
3410		{dict} is for functions with the "dict" attribute.  It will be
3411		used to set the local variable "self". |Dictionary-function|
3412
3413		Can also be used as a |method|: >
3414			GetFunc()->call([arg, arg], dict)
3415
3416ceil({expr})							*ceil()*
3417		Return the smallest integral value greater than or equal to
3418		{expr} as a |Float| (round up).
3419		{expr} must evaluate to a |Float| or a |Number|.
3420		Examples: >
3421			echo ceil(1.456)
3422<			2.0  >
3423			echo ceil(-5.456)
3424<			-5.0  >
3425			echo ceil(4.0)
3426<			4.0
3427
3428		Can also be used as a |method|: >
3429			Compute()->ceil()
3430<
3431		{only available when compiled with the |+float| feature}
3432
3433
3434ch_ functions are documented here: |channel-functions-details|
3435
3436
3437changenr()						*changenr()*
3438		Return the number of the most recent change.  This is the same
3439		number as what is displayed with |:undolist| and can be used
3440		with the |:undo| command.
3441		When a change was made it is the number of that change.  After
3442		redo it is the number of the redone change.  After undo it is
3443		one less than the number of the undone change.
3444
3445char2nr({expr} [, {utf8}])					*char2nr()*
3446		Return number value of the first char in {expr}.  Examples: >
3447			char2nr(" ")		returns 32
3448			char2nr("ABC")		returns 65
3449<		When {utf8} is omitted or zero, the current 'encoding' is used.
3450		Example for "utf-8": >
3451			char2nr("á")		returns 225
3452			char2nr("á"[0])		returns 195
3453<		With {utf8} set to 1, always treat as utf-8 characters.
3454		A combining character is a separate character.
3455		|nr2char()| does the opposite.
3456		To turn a string into a list of character numbers: >
3457		    let str = "ABC"
3458		    let list = map(split(str, '\zs'), {_, val -> char2nr(val)})
3459<		Result: [65, 66, 67]
3460
3461		Can also be used as a |method|: >
3462			GetChar()->char2nr()
3463
3464chdir({dir})						*chdir()*
3465		Change the current working directory to {dir}.  The scope of
3466		the directory change depends on the directory of the current
3467		window:
3468			- If the current window has a window-local directory
3469			  (|:lcd|), then changes the window local directory.
3470			- Otherwise, if the current tabpage has a local
3471			  directory (|:tcd|) then changes the tabpage local
3472			  directory.
3473			- Otherwise, changes the global directory.
3474		{dir} must be a String.
3475		If successful, returns the previous working directory.  Pass
3476		this to another chdir() to restore the directory.
3477		On failure, returns an empty string.
3478
3479		Example: >
3480			let save_dir = chdir(newdir)
3481			if save_dir != ""
3482			   " ... do some work
3483			   call chdir(save_dir)
3484			endif
3485
3486<		Can also be used as a |method|: >
3487			GetDir()->chdir()
3488<
3489cindent({lnum})						*cindent()*
3490		Get the amount of indent for line {lnum} according the C
3491		indenting rules, as with 'cindent'.
3492		The indent is counted in spaces, the value of 'tabstop' is
3493		relevant.  {lnum} is used just like in |getline()|.
3494		When {lnum} is invalid or Vim was not compiled the |+cindent|
3495		feature, -1 is returned.
3496		See |C-indenting|.
3497
3498		Can also be used as a |method|: >
3499			GetLnum()->cindent()
3500
3501clearmatches([{win}])					*clearmatches()*
3502		Clears all matches previously defined for the current window
3503		by |matchadd()| and the |:match| commands.
3504		If {win} is specified, use the window with this number or
3505		window ID instead of the current window.
3506
3507		Can also be used as a |method|: >
3508			GetWin()->clearmatches()
3509<
3510							*col()*
3511col({expr})	The result is a Number, which is the byte index of the column
3512		position given with {expr}.  The accepted positions are:
3513		    .	    the cursor position
3514		    $	    the end of the cursor line (the result is the
3515			    number of bytes in the cursor line plus one)
3516		    'x	    position of mark x (if the mark is not set, 0 is
3517			    returned)
3518		    v       In Visual mode: the start of the Visual area (the
3519			    cursor is the end).  When not in Visual mode
3520			    returns the cursor position.  Differs from |'<| in
3521			    that it's updated right away.
3522		Additionally {expr} can be [lnum, col]: a |List| with the line
3523		and column number. Most useful when the column is "$", to get
3524		the last column of a specific line.  When "lnum" or "col" is
3525		out of range then col() returns zero.
3526		To get the line number use |line()|.  To get both use
3527		|getpos()|.
3528		For the screen column position use |virtcol()|.
3529		Note that only marks in the current file can be used.
3530		Examples: >
3531			col(".")		column of cursor
3532			col("$")		length of cursor line plus one
3533			col("'t")		column of mark t
3534			col("'" . markname)	column of mark markname
3535<		The first column is 1.  0 is returned for an error.
3536		For an uppercase mark the column may actually be in another
3537		buffer.
3538		For the cursor position, when 'virtualedit' is active, the
3539		column is one higher if the cursor is after the end of the
3540		line.  This can be used to obtain the column in Insert mode: >
3541			:imap <F2> <C-O>:let save_ve = &ve<CR>
3542				\<C-O>:set ve=all<CR>
3543				\<C-O>:echo col(".") . "\n" <Bar>
3544				\let &ve = save_ve<CR>
3545
3546<		Can also be used as a |method|: >
3547			GetPos()->col()
3548<
3549
3550complete({startcol}, {matches})			*complete()* *E785*
3551		Set the matches for Insert mode completion.
3552		Can only be used in Insert mode.  You need to use a mapping
3553		with CTRL-R = (see |i_CTRL-R|).  It does not work after CTRL-O
3554		or with an expression mapping.
3555		{startcol} is the byte offset in the line where the completed
3556		text start.  The text up to the cursor is the original text
3557		that will be replaced by the matches.  Use col('.') for an
3558		empty string.  "col('.') - 1" will replace one character by a
3559		match.
3560		{matches} must be a |List|.  Each |List| item is one match.
3561		See |complete-items| for the kind of items that are possible.
3562		Note that the after calling this function you need to avoid
3563		inserting anything that would cause completion to stop.
3564		The match can be selected with CTRL-N and CTRL-P as usual with
3565		Insert mode completion.  The popup menu will appear if
3566		specified, see |ins-completion-menu|.
3567		Example: >
3568	inoremap <F5> <C-R>=ListMonths()<CR>
3569
3570	func! ListMonths()
3571	  call complete(col('.'), ['January', 'February', 'March',
3572		\ 'April', 'May', 'June', 'July', 'August', 'September',
3573		\ 'October', 'November', 'December'])
3574	  return ''
3575	endfunc
3576<		This isn't very useful, but it shows how it works.  Note that
3577		an empty string is returned to avoid a zero being inserted.
3578
3579		Can also be used as a |method|, the base is passed as the
3580		second argument: >
3581			GetMatches()->complete(col('.'))
3582
3583complete_add({expr})				*complete_add()*
3584		Add {expr} to the list of matches.  Only to be used by the
3585		function specified with the 'completefunc' option.
3586		Returns 0 for failure (empty string or out of memory),
3587		1 when the match was added, 2 when the match was already in
3588		the list.
3589		See |complete-functions| for an explanation of {expr}.  It is
3590		the same as one item in the list that 'omnifunc' would return.
3591
3592		Can also be used as a |method|: >
3593			GetMoreMatches()->complete_add()
3594
3595complete_check()				*complete_check()*
3596		Check for a key typed while looking for completion matches.
3597		This is to be used when looking for matches takes some time.
3598		Returns |TRUE| when searching for matches is to be aborted,
3599		zero otherwise.
3600		Only to be used by the function specified with the
3601		'completefunc' option.
3602
3603							*complete_info()*
3604complete_info([{what}])
3605		Returns a Dictionary with information about Insert mode
3606		completion.  See |ins-completion|.
3607		The items are:
3608		   mode		Current completion mode name string.
3609				See |complete_info_mode| for the values.
3610		   pum_visible	|TRUE| if popup menu is visible.
3611				See |pumvisible()|.
3612		   items	List of completion matches.  Each item is a
3613				dictionary containing the entries "word",
3614				"abbr", "menu", "kind", "info" and "user_data".
3615				See |complete-items|.
3616		   selected	Selected item index.  First index is zero.
3617				Index is -1 if no item is selected (showing
3618				typed text only)
3619		   inserted	Inserted string. [NOT IMPLEMENT YET]
3620
3621							*complete_info_mode*
3622		mode values are:
3623		   ""		     Not in completion mode
3624		   "keyword"	     Keyword completion |i_CTRL-X_CTRL-N|
3625		   "ctrl_x"	     Just pressed CTRL-X |i_CTRL-X|
3626		   "whole_line"	     Whole lines |i_CTRL-X_CTRL-L|
3627		   "files"	     File names |i_CTRL-X_CTRL-F|
3628		   "tags"	     Tags |i_CTRL-X_CTRL-]|
3629		   "path_defines"    Definition completion |i_CTRL-X_CTRL-D|
3630		   "path_patterns"   Include completion |i_CTRL-X_CTRL-I|
3631		   "dictionary"	     Dictionary |i_CTRL-X_CTRL-K|
3632		   "thesaurus"	     Thesaurus |i_CTRL-X_CTRL-T|
3633		   "cmdline"	     Vim Command line |i_CTRL-X_CTRL-V|
3634		   "function"	     User defined completion |i_CTRL-X_CTRL-U|
3635		   "omni"	     Omni completion |i_CTRL-X_CTRL-O|
3636		   "spell"	     Spelling suggestions |i_CTRL-X_s|
3637		   "eval"            |complete()| completion
3638		   "unknown"	     Other internal modes
3639
3640		If the optional {what} list argument is supplied, then only
3641		the items listed in {what} are returned.  Unsupported items in
3642		{what} are silently ignored.
3643
3644		To get the position and size of the popup menu, see
3645		|pum_getpos()|. It's also available in |v:event| during the
3646		|CompleteChanged| event.
3647
3648		Examples: >
3649			" Get all items
3650			call complete_info()
3651			" Get only 'mode'
3652			call complete_info(['mode'])
3653			" Get only 'mode' and 'pum_visible'
3654			call complete_info(['mode', 'pum_visible'])
3655
3656<		Can also be used as a |method|: >
3657			GetItems()->complete_info()
3658<
3659						*confirm()*
3660confirm({msg} [, {choices} [, {default} [, {type}]]])
3661		confirm() offers the user a dialog, from which a choice can be
3662		made.  It returns the number of the choice.  For the first
3663		choice this is 1.
3664		Note: confirm() is only supported when compiled with dialog
3665		support, see |+dialog_con| and |+dialog_gui|.
3666
3667		{msg} is displayed in a |dialog| with {choices} as the
3668		alternatives.  When {choices} is missing or empty, "&OK" is
3669		used (and translated).
3670		{msg} is a String, use '\n' to include a newline.  Only on
3671		some systems the string is wrapped when it doesn't fit.
3672
3673		{choices} is a String, with the individual choices separated
3674		by '\n', e.g. >
3675			confirm("Save changes?", "&Yes\n&No\n&Cancel")
3676<		The letter after the '&' is the shortcut key for that choice.
3677		Thus you can type 'c' to select "Cancel".  The shortcut does
3678		not need to be the first letter: >
3679			confirm("file has been modified", "&Save\nSave &All")
3680<		For the console, the first letter of each choice is used as
3681		the default shortcut key.
3682
3683		The optional {default} argument is the number of the choice
3684		that is made if the user hits <CR>.  Use 1 to make the first
3685		choice the default one.  Use 0 to not set a default.  If
3686		{default} is omitted, 1 is used.
3687
3688		The optional {type} argument gives the type of dialog.  This
3689		is only used for the icon of the GTK, Mac, Motif and Win32
3690		GUI.  It can be one of these values: "Error", "Question",
3691		"Info", "Warning" or "Generic".  Only the first character is
3692		relevant.  When {type} is omitted, "Generic" is used.
3693
3694		If the user aborts the dialog by pressing <Esc>, CTRL-C,
3695		or another valid interrupt key, confirm() returns 0.
3696
3697		An example: >
3698   :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2)
3699   :if choice == 0
3700   :	echo "make up your mind!"
3701   :elseif choice == 3
3702   :	echo "tasteful"
3703   :else
3704   :	echo "I prefer bananas myself."
3705   :endif
3706<		In a GUI dialog, buttons are used.  The layout of the buttons
3707		depends on the 'v' flag in 'guioptions'.  If it is included,
3708		the buttons are always put vertically.  Otherwise,  confirm()
3709		tries to put the buttons in one horizontal line.  If they
3710		don't fit, a vertical layout is used anyway.  For some systems
3711		the horizontal layout is always used.
3712
3713		Can also be used as a |method|in: >
3714			BuildMessage()->confirm("&Yes\n&No")
3715<
3716							*copy()*
3717copy({expr})	Make a copy of {expr}.  For Numbers and Strings this isn't
3718		different from using {expr} directly.
3719		When {expr} is a |List| a shallow copy is created.  This means
3720		that the original |List| can be changed without changing the
3721		copy, and vice versa.  But the items are identical, thus
3722		changing an item changes the contents of both |Lists|.
3723		A |Dictionary| is copied in a similar way as a |List|.
3724		Also see |deepcopy()|.
3725		Can also be used as a |method|: >
3726			mylist->copy()
3727
3728cos({expr})						*cos()*
3729		Return the cosine of {expr}, measured in radians, as a |Float|.
3730		{expr} must evaluate to a |Float| or a |Number|.
3731		Examples: >
3732			:echo cos(100)
3733<			0.862319 >
3734			:echo cos(-4.01)
3735<			-0.646043
3736
3737		Can also be used as a |method|: >
3738			Compute()->cos()
3739<
3740		{only available when compiled with the |+float| feature}
3741
3742
3743cosh({expr})						*cosh()*
3744		Return the hyperbolic cosine of {expr} as a |Float| in the range
3745		[1, inf].
3746		{expr} must evaluate to a |Float| or a |Number|.
3747		Examples: >
3748			:echo cosh(0.5)
3749<			1.127626 >
3750			:echo cosh(-0.5)
3751<			-1.127626
3752
3753		Can also be used as a |method|: >
3754			Compute()->cosh()
3755<
3756		{only available when compiled with the |+float| feature}
3757
3758
3759count({comp}, {expr} [, {ic} [, {start}]])			*count()*
3760		Return the number of times an item with value {expr} appears
3761		in |String|, |List| or |Dictionary| {comp}.
3762
3763		If {start} is given then start with the item with this index.
3764		{start} can only be used with a |List|.
3765
3766		When {ic} is given and it's |TRUE| then case is ignored.
3767
3768		When {comp} is a string then the number of not overlapping
3769		occurrences of {expr} is returned. Zero is returned when
3770		{expr} is an empty string.
3771
3772		Can also be used as a |method|: >
3773			mylist->count(val)
3774<
3775							*cscope_connection()*
3776cscope_connection([{num} , {dbpath} [, {prepend}]])
3777		Checks for the existence of a |cscope| connection.  If no
3778		parameters are specified, then the function returns:
3779			0, if cscope was not available (not compiled in), or
3780			   if there are no cscope connections;
3781			1, if there is at least one cscope connection.
3782
3783		If parameters are specified, then the value of {num}
3784		determines how existence of a cscope connection is checked:
3785
3786		{num}	Description of existence check
3787		-----	------------------------------
3788		0	Same as no parameters (e.g., "cscope_connection()").
3789		1	Ignore {prepend}, and use partial string matches for
3790			{dbpath}.
3791		2	Ignore {prepend}, and use exact string matches for
3792			{dbpath}.
3793		3	Use {prepend}, use partial string matches for both
3794			{dbpath} and {prepend}.
3795		4	Use {prepend}, use exact string matches for both
3796			{dbpath} and {prepend}.
3797
3798		Note: All string comparisons are case sensitive!
3799
3800		Examples.  Suppose we had the following (from ":cs show"): >
3801
3802  # pid    database name			prepend path
3803  0 27664  cscope.out				/usr/local
3804<
3805		Invocation					Return Val ~
3806		----------					---------- >
3807		cscope_connection()					1
3808		cscope_connection(1, "out")				1
3809		cscope_connection(2, "out")				0
3810		cscope_connection(3, "out")				0
3811		cscope_connection(3, "out", "local")			1
3812		cscope_connection(4, "out")				0
3813		cscope_connection(4, "out", "local")			0
3814		cscope_connection(4, "cscope.out", "/usr/local")	1
3815<
3816cursor({lnum}, {col} [, {off}])				*cursor()*
3817cursor({list})
3818		Positions the cursor at the column (byte count) {col} in the
3819		line {lnum}.  The first column is one.
3820
3821		When there is one argument {list} this is used as a |List|
3822		with two, three or four item:
3823			[{lnum}, {col}]
3824			[{lnum}, {col}, {off}]
3825			[{lnum}, {col}, {off}, {curswant}]
3826		This is like the return value of |getpos()| or |getcurpos()|,
3827		but without the first item.
3828
3829		Does not change the jumplist.
3830		If {lnum} is greater than the number of lines in the buffer,
3831		the cursor will be positioned at the last line in the buffer.
3832		If {lnum} is zero, the cursor will stay in the current line.
3833		If {col} is greater than the number of bytes in the line,
3834		the cursor will be positioned at the last character in the
3835		line.
3836		If {col} is zero, the cursor will stay in the current column.
3837		If {curswant} is given it is used to set the preferred column
3838		for vertical movement.  Otherwise {col} is used.
3839
3840		When 'virtualedit' is used {off} specifies the offset in
3841		screen columns from the start of the character.  E.g., a
3842		position within a <Tab> or after the last character.
3843		Returns 0 when the position could be set, -1 otherwise.
3844
3845		Can also be used as a |method|: >
3846			GetCursorPos()->cursor()
3847
3848debugbreak({pid})					*debugbreak()*
3849		Specifically used to interrupt a program being debugged.  It
3850		will cause process {pid} to get a SIGTRAP.  Behavior for other
3851		processes is undefined. See |terminal-debugger|.
3852		{only available on MS-Windows}
3853
3854		Can also be used as a |method|: >
3855			GetPid()->debugbreak()
3856
3857deepcopy({expr} [, {noref}])				*deepcopy()* *E698*
3858		Make a copy of {expr}.  For Numbers and Strings this isn't
3859		different from using {expr} directly.
3860		When {expr} is a |List| a full copy is created.  This means
3861		that the original |List| can be changed without changing the
3862		copy, and vice versa.  When an item is a |List| or
3863		|Dictionary|, a copy for it is made, recursively.  Thus
3864		changing an item in the copy does not change the contents of
3865		the original |List|.
3866		A |Dictionary| is copied in a similar way as a |List|.
3867		When {noref} is omitted or zero a contained |List| or
3868		|Dictionary| is only copied once.  All references point to
3869		this single copy.  With {noref} set to 1 every occurrence of a
3870		|List| or |Dictionary| results in a new copy.  This also means
3871		that a cyclic reference causes deepcopy() to fail.
3872								*E724*
3873		Nesting is possible up to 100 levels.  When there is an item
3874		that refers back to a higher level making a deep copy with
3875		{noref} set to 1 will fail.
3876		Also see |copy()|.
3877
3878		Can also be used as a |method|: >
3879			GetObject()->deepcopy()
3880
3881delete({fname} [, {flags}])					*delete()*
3882		Without {flags} or with {flags} empty: Deletes the file by the
3883		name {fname}.  This also works when {fname} is a symbolic link.
3884
3885		When {flags} is "d": Deletes the directory by the name
3886		{fname}.  This fails when directory {fname} is not empty.
3887
3888		When {flags} is "rf": Deletes the directory by the name
3889		{fname} and everything in it, recursively.  BE CAREFUL!
3890		Note: on MS-Windows it is not possible to delete a directory
3891		that is being used.
3892
3893		A symbolic link itself is deleted, not what it points to.
3894
3895		The result is a Number, which is 0 if the delete operation was
3896		successful and -1 when the deletion failed or partly failed.
3897
3898		Use |remove()| to delete an item from a |List|.
3899		To delete a line from the buffer use |:delete| or
3900		|deletebufline()|.
3901
3902		Can also be used as a |method|: >
3903			GetName()->delete()
3904
3905deletebufline({expr}, {first} [, {last}])		*deletebufline()*
3906		Delete lines {first} to {last} (inclusive) from buffer {expr}.
3907		If {last} is omitted then delete line {first} only.
3908		On success 0 is returned, on failure 1 is returned.
3909
3910		This function works only for loaded buffers. First call
3911		|bufload()| if needed.
3912
3913		For the use of {expr}, see |bufname()| above.
3914
3915		{first} and {last} are used like with |getline()|. Note that
3916		when using |line()| this refers to the current buffer. Use "$"
3917		to refer to the last line in buffer {expr}.
3918
3919		Can also be used as a |method|: >
3920			GetBuffer()->deletebufline(1)
3921<
3922							*did_filetype()*
3923did_filetype()	Returns |TRUE| when autocommands are being executed and the
3924		FileType event has been triggered at least once.  Can be used
3925		to avoid triggering the FileType event again in the scripts
3926		that detect the file type. |FileType|
3927		Returns |FALSE| when `:setf FALLBACK` was used.
3928		When editing another file, the counter is reset, thus this
3929		really checks if the FileType event has been triggered for the
3930		current buffer.  This allows an autocommand that starts
3931		editing another buffer to set 'filetype' and load a syntax
3932		file.
3933
3934diff_filler({lnum})					*diff_filler()*
3935		Returns the number of filler lines above line {lnum}.
3936		These are the lines that were inserted at this point in
3937		another diff'ed window.  These filler lines are shown in the
3938		display but don't exist in the buffer.
3939		{lnum} is used like with |getline()|.  Thus "." is the current
3940		line, "'m" mark m, etc.
3941		Returns 0 if the current window is not in diff mode.
3942
3943		Can also be used as a |method|: >
3944			GetLnum()->diff_filler()
3945
3946diff_hlID({lnum}, {col})				*diff_hlID()*
3947		Returns the highlight ID for diff mode at line {lnum} column
3948		{col} (byte index).  When the current line does not have a
3949		diff change zero is returned.
3950		{lnum} is used like with |getline()|.  Thus "." is the current
3951		line, "'m" mark m, etc.
3952		{col} is 1 for the leftmost column, {lnum} is 1 for the first
3953		line.
3954		The highlight ID can be used with |synIDattr()| to obtain
3955		syntax information about the highlighting.
3956
3957		Can also be used as a |method|: >
3958			GetLnum()->diff_hlID(col)
3959
3960
3961echoraw({expr})						*echoraw()*
3962		Output {expr} as-is, including unprintable characters.  This
3963		can be used to output a terminal code. For example, to disable
3964		modifyOtherKeys: >
3965			call echoraw(&t_TE)
3966<		and to enable it again: >
3967			call echoraw(&t_TI)
3968<		Use with care, you can mess up the terminal this way.
3969
3970
3971empty({expr})						*empty()*
3972		Return the Number 1 if {expr} is empty, zero otherwise.
3973		- A |List| or |Dictionary| is empty when it does not have any
3974		  items.
3975		- A |String| is empty when its length is zero.
3976		- A |Number| and |Float| are empty when their value is zero.
3977		- |v:false|, |v:none| and |v:null| are empty, |v:true| is not.
3978		- A |Job| is empty when it failed to start.
3979		- A |Channel| is empty when it is closed.
3980		- A |Blob| is empty when its length is zero.
3981
3982		For a long |List| this is much faster than comparing the
3983		length with zero.
3984
3985		Can also be used as a |method|: >
3986			mylist->empty()
3987
3988environ()						*environ()*
3989		Return all of environment variables as dictionary. You can
3990		check if an environment variable exists like this: >
3991			:echo has_key(environ(), 'HOME')
3992<		Note that the variable name may be CamelCase; to ignore case
3993		use this: >
3994			:echo index(keys(environ()), 'HOME', 0, 1) != -1
3995
3996escape({string}, {chars})				*escape()*
3997		Escape the characters in {chars} that occur in {string} with a
3998		backslash.  Example: >
3999			:echo escape('c:\program files\vim', ' \')
4000<		results in: >
4001			c:\\program\ files\\vim
4002<		Also see |shellescape()| and |fnameescape()|.
4003
4004		Can also be used as a |method|: >
4005			GetText()->escape(' \')
4006<
4007							*eval()*
4008eval({string})	Evaluate {string} and return the result.  Especially useful to
4009		turn the result of |string()| back into the original value.
4010		This works for Numbers, Floats, Strings, Blobs and composites
4011		of them.  Also works for |Funcref|s that refer to existing
4012		functions.
4013
4014		Can also be used as a |method|: >
4015			argv->join()->eval()
4016
4017eventhandler()						*eventhandler()*
4018		Returns 1 when inside an event handler.  That is that Vim got
4019		interrupted while waiting for the user to type a character,
4020		e.g., when dropping a file on Vim.  This means interactive
4021		commands cannot be used.  Otherwise zero is returned.
4022
4023executable({expr})					*executable()*
4024		This function checks if an executable with the name {expr}
4025		exists.  {expr} must be the name of the program without any
4026		arguments.
4027		executable() uses the value of $PATH and/or the normal
4028		searchpath for programs.		*PATHEXT*
4029		On MS-Windows the ".exe", ".bat", etc. can optionally be
4030		included.  Then the extensions in $PATHEXT are tried.  Thus if
4031		"foo.exe" does not exist, "foo.exe.bat" can be found.  If
4032		$PATHEXT is not set then ".exe;.com;.bat;.cmd" is used.  A dot
4033		by itself can be used in $PATHEXT to try using the name
4034		without an extension.  When 'shell' looks like a Unix shell,
4035		then the name is also tried without adding an extension.
4036		On MS-Windows it only checks if the file exists and is not a
4037		directory, not if it's really executable.
4038		On MS-Windows an executable in the same directory as Vim is
4039		always found.  Since this directory is added to $PATH it
4040		should also work to execute it |win32-PATH|.
4041		The result is a Number:
4042			1	exists
4043			0	does not exist
4044			-1	not implemented on this system
4045		|exepath()| can be used to get the full path of an executable.
4046
4047		Can also be used as a |method|: >
4048			GetCommand()->executable()
4049
4050execute({command} [, {silent}])					*execute()*
4051		Execute an Ex command or commands and return the output as a
4052		string.
4053		{command} can be a string or a List.  In case of a List the
4054		lines are executed one by one.
4055		This is equivalent to: >
4056			redir => var
4057			{command}
4058			redir END
4059<
4060		The optional {silent} argument can have these values:
4061			""		no `:silent` used
4062			"silent"	`:silent` used
4063			"silent!"	`:silent!` used
4064		The default is "silent".  Note that with "silent!", unlike
4065		`:redir`, error messages are dropped.  When using an external
4066		command the screen may be messed up, use `system()` instead.
4067							*E930*
4068		It is not possible to use `:redir` anywhere in {command}.
4069
4070		To get a list of lines use |split()| on the result: >
4071			split(execute('args'), "\n")
4072
4073<		To execute a command in another window than the current one
4074		use `win_execute()`.
4075
4076		When used recursively the output of the recursive call is not
4077		included in the output of the higher level call.
4078
4079		Can also be used as a |method|: >
4080			GetCommand()->execute()
4081
4082exepath({expr})						*exepath()*
4083		If {expr} is an executable and is either an absolute path, a
4084		relative path or found in $PATH, return the full path.
4085		Note that the current directory is used when {expr} starts
4086		with "./", which may be a problem for Vim: >
4087			echo exepath(v:progpath)
4088<		If {expr} cannot be found in $PATH or is not executable then
4089		an empty string is returned.
4090
4091		Can also be used as a |method|: >
4092			GetCommand()->exepath()
4093<
4094							*exists()*
4095exists({expr})	The result is a Number, which is |TRUE| if {expr} is defined,
4096		zero otherwise.
4097
4098		For checking for a supported feature use |has()|.
4099		For checking if a file exists use |filereadable()|.
4100
4101		The {expr} argument is a string, which contains one of these:
4102			&option-name	Vim option (only checks if it exists,
4103					not if it really works)
4104			+option-name	Vim option that works.
4105			$ENVNAME	environment variable (could also be
4106					done by comparing with an empty
4107					string)
4108			*funcname	built-in function (see |functions|)
4109					or user defined function (see
4110					|user-functions|) that is implemented.
4111					Also works for a variable that is a
4112					Funcref.
4113			?funcname	built-in function that could be
4114					implemented; to be used to check if
4115					"funcname" is valid
4116			varname		internal variable (see
4117					|internal-variables|).  Also works
4118					for |curly-braces-names|, |Dictionary|
4119					entries, |List| items, etc.  Beware
4120					that evaluating an index may cause an
4121					error message for an invalid
4122					expression.  E.g.: >
4123					   :let l = [1, 2, 3]
4124					   :echo exists("l[5]")
4125<					   0 >
4126					   :echo exists("l[xx]")
4127<					   E121: Undefined variable: xx
4128					   0
4129			:cmdname	Ex command: built-in command, user
4130					command or command modifier |:command|.
4131					Returns:
4132					1  for match with start of a command
4133					2  full match with a command
4134					3  matches several user commands
4135					To check for a supported command
4136					always check the return value to be 2.
4137			:2match		The |:2match| command.
4138			:3match		The |:3match| command.
4139			#event		autocommand defined for this event
4140			#event#pattern	autocommand defined for this event and
4141					pattern (the pattern is taken
4142					literally and compared to the
4143					autocommand patterns character by
4144					character)
4145			#group		autocommand group exists
4146			#group#event	autocommand defined for this group and
4147					event.
4148			#group#event#pattern
4149					autocommand defined for this group,
4150					event and pattern.
4151			##event		autocommand for this event is
4152					supported.
4153
4154		Examples: >
4155			exists("&shortname")
4156			exists("$HOSTNAME")
4157			exists("*strftime")
4158			exists("*s:MyFunc")
4159			exists("bufcount")
4160			exists(":Make")
4161			exists("#CursorHold")
4162			exists("#BufReadPre#*.gz")
4163			exists("#filetypeindent")
4164			exists("#filetypeindent#FileType")
4165			exists("#filetypeindent#FileType#*")
4166			exists("##ColorScheme")
4167<		There must be no space between the symbol (&/$/*/#) and the
4168		name.
4169		There must be no extra characters after the name, although in
4170		a few cases this is ignored.  That may become more strict in
4171		the future, thus don't count on it!
4172		Working example: >
4173			exists(":make")
4174<		NOT working example: >
4175			exists(":make install")
4176
4177<		Note that the argument must be a string, not the name of the
4178		variable itself.  For example: >
4179			exists(bufcount)
4180<		This doesn't check for existence of the "bufcount" variable,
4181		but gets the value of "bufcount", and checks if that exists.
4182
4183		Can also be used as a |method|: >
4184			Varname()->exists()
4185
4186exp({expr})						*exp()*
4187		Return the exponential of {expr} as a |Float| in the range
4188		[0, inf].
4189		{expr} must evaluate to a |Float| or a |Number|.
4190		Examples: >
4191			:echo exp(2)
4192<			7.389056 >
4193			:echo exp(-1)
4194<			0.367879
4195
4196		Can also be used as a |method|: >
4197			Compute()->exp()
4198<
4199		{only available when compiled with the |+float| feature}
4200
4201
4202expand({expr} [, {nosuf} [, {list}]])				*expand()*
4203		Expand wildcards and the following special keywords in {expr}.
4204		'wildignorecase' applies.
4205
4206		If {list} is given and it is |TRUE|, a List will be returned.
4207		Otherwise the result is a String and when there are several
4208		matches, they are separated by <NL> characters.  [Note: in
4209		version 5.0 a space was used, which caused problems when a
4210		file name contains a space]
4211
4212		If the expansion fails, the result is an empty string.  A name
4213		for a non-existing file is not included, unless {expr} does
4214		not start with '%', '#' or '<', see below.
4215
4216		When {expr} starts with '%', '#' or '<', the expansion is done
4217		like for the |cmdline-special| variables with their associated
4218		modifiers.  Here is a short overview:
4219
4220			%		current file name
4221			#		alternate file name
4222			#n		alternate file name n
4223			<cfile>		file name under the cursor
4224			<afile>		autocmd file name
4225			<abuf>		autocmd buffer number (as a String!)
4226			<amatch>	autocmd matched name
4227			<sfile>		sourced script file or function name
4228			<slnum>		sourced script line number or function
4229					line number
4230			<sflnum>	script file line number, also when in
4231					a function
4232			<cword>		word under the cursor
4233			<cWORD>		WORD under the cursor
4234			<client>	the {clientid} of the last received
4235					message |server2client()|
4236		Modifiers:
4237			:p		expand to full path
4238			:h		head (last path component removed)
4239			:t		tail (last path component only)
4240			:r		root (one extension removed)
4241			:e		extension only
4242
4243		Example: >
4244			:let &tags = expand("%:p:h") . "/tags"
4245<		Note that when expanding a string that starts with '%', '#' or
4246		'<', any following text is ignored.  This does NOT work: >
4247			:let doesntwork = expand("%:h.bak")
4248<		Use this: >
4249			:let doeswork = expand("%:h") . ".bak"
4250<		Also note that expanding "<cfile>" and others only returns the
4251		referenced file name without further expansion.  If "<cfile>"
4252		is "~/.cshrc", you need to do another expand() to have the
4253		"~/" expanded into the path of the home directory: >
4254			:echo expand(expand("<cfile>"))
4255<
4256		There cannot be white space between the variables and the
4257		following modifier.  The |fnamemodify()| function can be used
4258		to modify normal file names.
4259
4260		When using '%' or '#', and the current or alternate file name
4261		is not defined, an empty string is used.  Using "%:p" in a
4262		buffer with no name, results in the current directory, with a
4263		'/' added.
4264
4265		When {expr} does not start with '%', '#' or '<', it is
4266		expanded like a file name is expanded on the command line.
4267		'suffixes' and 'wildignore' are used, unless the optional
4268		{nosuf} argument is given and it is |TRUE|.
4269		Names for non-existing files are included.  The "**" item can
4270		be used to search in a directory tree.  For example, to find
4271		all "README" files in the current directory and below: >
4272			:echo expand("**/README")
4273<
4274		expand() can also be used to expand variables and environment
4275		variables that are only known in a shell.  But this can be
4276		slow, because a shell may be used to do the expansion.  See
4277		|expr-env-expand|.
4278		The expanded variable is still handled like a list of file
4279		names.  When an environment variable cannot be expanded, it is
4280		left unchanged.  Thus ":echo expand('$FOOBAR')" results in
4281		"$FOOBAR".
4282
4283		See |glob()| for finding existing files.  See |system()| for
4284		getting the raw output of an external command.
4285
4286		Can also be used as a |method|: >
4287			Getpattern()->expand()
4288
4289expandcmd({expr})					*expandcmd()*
4290		Expand special items in {expr} like what is done for an Ex
4291		command such as `:edit`.  This expands special keywords, like
4292		with |expand()|, and environment variables, anywhere in
4293		{expr}.  "~user" and "~/path" are only expanded at the start.
4294		Returns the expanded string.  Example: >
4295			:echo expandcmd('make %<.o')
4296
4297<		Can also be used as a |method|: >
4298			GetCommand()->expandcmd()
4299<
4300extend({expr1}, {expr2} [, {expr3}])			*extend()*
4301		{expr1} and {expr2} must be both |Lists| or both
4302		|Dictionaries|.
4303
4304		If they are |Lists|: Append {expr2} to {expr1}.
4305		If {expr3} is given insert the items of {expr2} before item
4306		{expr3} in {expr1}.  When {expr3} is zero insert before the
4307		first item.  When {expr3} is equal to len({expr1}) then
4308		{expr2} is appended.
4309		Examples: >
4310			:echo sort(extend(mylist, [7, 5]))
4311			:call extend(mylist, [2, 3], 1)
4312<		When {expr1} is the same List as {expr2} then the number of
4313		items copied is equal to the original length of the List.
4314		E.g., when {expr3} is 1 you get N new copies of the first item
4315		(where N is the original length of the List).
4316		Use |add()| to concatenate one item to a list.  To concatenate
4317		two lists into a new list use the + operator: >
4318			:let newlist = [1, 2, 3] + [4, 5]
4319<
4320		If they are |Dictionaries|:
4321		Add all entries from {expr2} to {expr1}.
4322		If a key exists in both {expr1} and {expr2} then {expr3} is
4323		used to decide what to do:
4324		{expr3} = "keep": keep the value of {expr1}
4325		{expr3} = "force": use the value of {expr2}
4326		{expr3} = "error": give an error message		*E737*
4327		When {expr3} is omitted then "force" is assumed.
4328
4329		{expr1} is changed when {expr2} is not empty.  If necessary
4330		make a copy of {expr1} first.
4331		{expr2} remains unchanged.
4332		When {expr1} is locked and {expr2} is not empty the operation
4333		fails.
4334		Returns {expr1}.
4335
4336		Can also be used as a |method|: >
4337			mylist->extend(otherlist)
4338
4339
4340feedkeys({string} [, {mode}])				*feedkeys()*
4341		Characters in {string} are queued for processing as if they
4342		come from a mapping or were typed by the user.
4343
4344		By default the string is added to the end of the typeahead
4345		buffer, thus if a mapping is still being executed the
4346		characters come after them.  Use the 'i' flag to insert before
4347		other characters, they will be executed next, before any
4348		characters from a mapping.
4349
4350		The function does not wait for processing of keys contained in
4351		{string}.
4352
4353		To include special keys into {string}, use double-quotes
4354		and "\..." notation |expr-quote|. For example,
4355		feedkeys("\<CR>") simulates pressing of the <Enter> key. But
4356		feedkeys('\<CR>') pushes 5 characters.
4357		A special code that might be useful is <Ignore>, it exits the
4358		wait for a character without doing anything.  *<Ignore>*
4359
4360		{mode} is a String, which can contain these character flags:
4361		'm'	Remap keys. This is default.  If {mode} is absent,
4362			keys are remapped.
4363		'n'	Do not remap keys.
4364		't'	Handle keys as if typed; otherwise they are handled as
4365			if coming from a mapping.  This matters for undo,
4366			opening folds, etc.
4367		'L'	Lowlevel input.  Only works for Unix or when using the
4368			GUI. Keys are used as if they were coming from the
4369			terminal.  Other flags are not used.  *E980*
4370			When a CTRL-C interrupts and 't' is included it sets
4371			the internal "got_int" flag.
4372		'i'	Insert the string instead of appending (see above).
4373		'x'	Execute commands until typeahead is empty.  This is
4374			similar to using ":normal!".  You can call feedkeys()
4375			several times without 'x' and then one time with 'x'
4376			(possibly with an empty {string}) to execute all the
4377			typeahead.  Note that when Vim ends in Insert mode it
4378			will behave as if <Esc> is typed, to avoid getting
4379			stuck, waiting for a character to be typed before the
4380			script continues.
4381			Note that if you manage to call feedkeys() while
4382			executing commands, thus calling it recursively, then
4383			all typehead will be consumed by the last call.
4384		'!'	When used with 'x' will not end Insert mode. Can be
4385			used in a test when a timer is set to exit Insert mode
4386			a little later.  Useful for testing CursorHoldI.
4387
4388		Return value is always 0.
4389
4390		Can also be used as a |method|: >
4391			GetInput()->feedkeys()
4392
4393filereadable({file})					*filereadable()*
4394		The result is a Number, which is |TRUE| when a file with the
4395		name {file} exists, and can be read.  If {file} doesn't exist,
4396		or is a directory, the result is |FALSE|.  {file} is any
4397		expression, which is used as a String.
4398		If you don't care about the file being readable you can use
4399		|glob()|.
4400		{file} is used as-is, you may want to expand wildcards first: >
4401			echo filereadable('~/.vimrc')
4402			0
4403			echo filereadable(expand('~/.vimrc'))
4404			1
4405
4406<		Can also be used as a |method|: >
4407			GetName()->filereadable()
4408<							*file_readable()*
4409		Obsolete name: file_readable().
4410
4411
4412filewritable({file})					*filewritable()*
4413		The result is a Number, which is 1 when a file with the
4414		name {file} exists, and can be written.  If {file} doesn't
4415		exist, or is not writable, the result is 0.  If {file} is a
4416		directory, and we can write to it, the result is 2.
4417
4418		Can also be used as a |method|: >
4419			GetName()->filewriteable()
4420
4421
4422filter({expr1}, {expr2})				*filter()*
4423		{expr1} must be a |List| or a |Dictionary|.
4424		For each item in {expr1} evaluate {expr2} and when the result
4425		is zero remove the item from the |List| or |Dictionary|.
4426		{expr2} must be a |string| or |Funcref|.
4427
4428		If {expr2} is a |string|, inside {expr2} |v:val| has the value
4429		of the current item.  For a |Dictionary| |v:key| has the key
4430		of the current item and for a |List| |v:key| has the index of
4431		the current item.
4432		Examples: >
4433			call filter(mylist, 'v:val !~ "OLD"')
4434<		Removes the items where "OLD" appears. >
4435			call filter(mydict, 'v:key >= 8')
4436<		Removes the items with a key below 8. >
4437			call filter(var, 0)
4438<		Removes all the items, thus clears the |List| or |Dictionary|.
4439
4440		Note that {expr2} is the result of expression and is then
4441		used as an expression again.  Often it is good to use a
4442		|literal-string| to avoid having to double backslashes.
4443
4444		If {expr2} is a |Funcref| it must take two arguments:
4445			1. the key or the index of the current item.
4446			2. the value of the current item.
4447		The function must return |TRUE| if the item should be kept.
4448		Example that keeps the odd items of a list: >
4449			func Odd(idx, val)
4450			  return a:idx % 2 == 1
4451			endfunc
4452			call filter(mylist, function('Odd'))
4453<		It is shorter when using a |lambda|: >
4454			call filter(myList, {idx, val -> idx * val <= 42})
4455<		If you do not use "val" you can leave it out: >
4456			call filter(myList, {idx -> idx % 2 == 1})
4457<
4458		The operation is done in-place.  If you want a |List| or
4459		|Dictionary| to remain unmodified make a copy first: >
4460			:let l = filter(copy(mylist), 'v:val =~ "KEEP"')
4461
4462<		Returns {expr1}, the |List| or |Dictionary| that was filtered.
4463		When an error is encountered while evaluating {expr2} no
4464		further items in {expr1} are processed.  When {expr2} is a
4465		Funcref errors inside a function are ignored, unless it was
4466		defined with the "abort" flag.
4467
4468		Can also be used as a |method|: >
4469			mylist->filter(expr2)
4470
4471finddir({name} [, {path} [, {count}]])				*finddir()*
4472		Find directory {name} in {path}.  Supports both downwards and
4473		upwards recursive directory searches.  See |file-searching|
4474		for the syntax of {path}.
4475		Returns the path of the first found match.  When the found
4476		directory is below the current directory a relative path is
4477		returned.  Otherwise a full path is returned.
4478		If {path} is omitted or empty then 'path' is used.
4479		If the optional {count} is given, find {count}'s occurrence of
4480		{name} in {path} instead of the first one.
4481		When {count} is negative return all the matches in a |List|.
4482		This is quite similar to the ex-command |:find|.
4483		{only available when compiled with the |+file_in_path|
4484		feature}
4485
4486		Can also be used as a |method|: >
4487			GetName()->finddir()
4488
4489findfile({name} [, {path} [, {count}]])				*findfile()*
4490		Just like |finddir()|, but find a file instead of a directory.
4491		Uses 'suffixesadd'.
4492		Example: >
4493			:echo findfile("tags.vim", ".;")
4494<		Searches from the directory of the current file upwards until
4495		it finds the file "tags.vim".
4496
4497		Can also be used as a |method|: >
4498			GetName()->findfile()
4499
4500float2nr({expr})					*float2nr()*
4501		Convert {expr} to a Number by omitting the part after the
4502		decimal point.
4503		{expr} must evaluate to a |Float| or a Number.
4504		When the value of {expr} is out of range for a |Number| the
4505		result is truncated to 0x7fffffff or -0x7fffffff (or when
4506		64-bit Number support is enabled, 0x7fffffffffffffff or
4507		-0x7fffffffffffffff).  NaN results in -0x80000000 (or when
4508		64-bit Number support is enabled, -0x8000000000000000).
4509		Examples: >
4510			echo float2nr(3.95)
4511<			3  >
4512			echo float2nr(-23.45)
4513<			-23  >
4514			echo float2nr(1.0e100)
4515<			2147483647  (or 9223372036854775807) >
4516			echo float2nr(-1.0e150)
4517<			-2147483647 (or -9223372036854775807) >
4518			echo float2nr(1.0e-100)
4519<			0
4520
4521		Can also be used as a |method|: >
4522			Compute()->float2nr()
4523<
4524		{only available when compiled with the |+float| feature}
4525
4526
4527floor({expr})							*floor()*
4528		Return the largest integral value less than or equal to
4529		{expr} as a |Float| (round down).
4530		{expr} must evaluate to a |Float| or a |Number|.
4531		Examples: >
4532			echo floor(1.856)
4533<			1.0  >
4534			echo floor(-5.456)
4535<			-6.0  >
4536			echo floor(4.0)
4537<			4.0
4538
4539		Can also be used as a |method|: >
4540			Compute()->floor()
4541<
4542		{only available when compiled with the |+float| feature}
4543
4544
4545fmod({expr1}, {expr2})					*fmod()*
4546		Return the remainder of {expr1} / {expr2}, even if the
4547		division is not representable.  Returns {expr1} - i * {expr2}
4548		for some integer i such that if {expr2} is non-zero, the
4549		result has the same sign as {expr1} and magnitude less than
4550		the magnitude of {expr2}.  If {expr2} is zero, the value
4551		returned is zero.  The value returned is a |Float|.
4552		{expr1} and {expr2} must evaluate to a |Float| or a |Number|.
4553		Examples: >
4554			:echo fmod(12.33, 1.22)
4555<			0.13 >
4556			:echo fmod(-12.33, 1.22)
4557<			-0.13
4558
4559		Can also be used as a |method|: >
4560			Compute()->fmod(1.22)
4561<
4562		{only available when compiled with |+float| feature}
4563
4564
4565fnameescape({string})					*fnameescape()*
4566		Escape {string} for use as file name command argument.  All
4567		characters that have a special meaning, such as '%' and '|'
4568		are escaped with a backslash.
4569		For most systems the characters escaped are
4570		" \t\n*?[{`$\\%#'\"|!<".  For systems where a backslash
4571		appears in a filename, it depends on the value of 'isfname'.
4572		A leading '+' and '>' is also escaped (special after |:edit|
4573		and |:write|).  And a "-" by itself (special after |:cd|).
4574		Example: >
4575			:let fname = '+some str%nge|name'
4576			:exe "edit " . fnameescape(fname)
4577<		results in executing: >
4578			edit \+some\ str\%nge\|name
4579<
4580		Can also be used as a |method|: >
4581			GetName()->fnameescape()
4582
4583fnamemodify({fname}, {mods})				*fnamemodify()*
4584		Modify file name {fname} according to {mods}.  {mods} is a
4585		string of characters like it is used for file names on the
4586		command line.  See |filename-modifiers|.
4587		Example: >
4588			:echo fnamemodify("main.c", ":p:h")
4589<		results in: >
4590			/home/mool/vim/vim/src
4591<		Note: Environment variables don't work in {fname}, use
4592		|expand()| first then.
4593
4594		Can also be used as a |method|: >
4595			GetName()->fnamemodify(':p:h')
4596
4597foldclosed({lnum})					*foldclosed()*
4598		The result is a Number.  If the line {lnum} is in a closed
4599		fold, the result is the number of the first line in that fold.
4600		If the line {lnum} is not in a closed fold, -1 is returned.
4601
4602		Can also be used as a |method|: >
4603			GetLnum()->foldclosed()
4604
4605foldclosedend({lnum})					*foldclosedend()*
4606		The result is a Number.  If the line {lnum} is in a closed
4607		fold, the result is the number of the last line in that fold.
4608		If the line {lnum} is not in a closed fold, -1 is returned.
4609
4610		Can also be used as a |method|: >
4611			GetLnum()->foldclosedend()
4612
4613foldlevel({lnum})					*foldlevel()*
4614		The result is a Number, which is the foldlevel of line {lnum}
4615		in the current buffer.  For nested folds the deepest level is
4616		returned.  If there is no fold at line {lnum}, zero is
4617		returned.  It doesn't matter if the folds are open or closed.
4618		When used while updating folds (from 'foldexpr') -1 is
4619		returned for lines where folds are still to be updated and the
4620		foldlevel is unknown.  As a special case the level of the
4621		previous line is usually available.
4622
4623		Can also be used as a |method|: >
4624			GetLnum()->foldlevel()
4625<
4626							*foldtext()*
4627foldtext()	Returns a String, to be displayed for a closed fold.  This is
4628		the default function used for the 'foldtext' option and should
4629		only be called from evaluating 'foldtext'.  It uses the
4630		|v:foldstart|, |v:foldend| and |v:folddashes| variables.
4631		The returned string looks like this: >
4632			+-- 45 lines: abcdef
4633<		The number of leading dashes depends on the foldlevel.  The
4634		"45" is the number of lines in the fold.  "abcdef" is the text
4635		in the first non-blank line of the fold.  Leading white space,
4636		"//" or "/*" and the text from the 'foldmarker' and
4637		'commentstring' options is removed.
4638		When used to draw the actual foldtext, the rest of the line
4639		will be filled with the fold char from the 'fillchars'
4640		setting.
4641		{not available when compiled without the |+folding| feature}
4642
4643foldtextresult({lnum})					*foldtextresult()*
4644		Returns the text that is displayed for the closed fold at line
4645		{lnum}.  Evaluates 'foldtext' in the appropriate context.
4646		When there is no closed fold at {lnum} an empty string is
4647		returned.
4648		{lnum} is used like with |getline()|.  Thus "." is the current
4649		line, "'m" mark m, etc.
4650		Useful when exporting folded text, e.g., to HTML.
4651		{not available when compiled without the |+folding| feature}
4652
4653
4654		Can also be used as a |method|: >
4655			GetLnum()->foldtextresult()
4656<
4657							*foreground()*
4658foreground()	Move the Vim window to the foreground.  Useful when sent from
4659		a client to a Vim server. |remote_send()|
4660		On Win32 systems this might not work, the OS does not always
4661		allow a window to bring itself to the foreground.  Use
4662		|remote_foreground()| instead.
4663		{only in the Win32, Athena, Motif and GTK GUI versions and the
4664		Win32 console version}
4665
4666						*funcref()*
4667funcref({name} [, {arglist}] [, {dict}])
4668		Just like |function()|, but the returned Funcref will lookup
4669		the function by reference, not by name.  This matters when the
4670		function {name} is redefined later.
4671
4672		Unlike |function()|, {name} must be an existing user function.
4673		Also for autoloaded functions. {name} cannot be a builtin
4674		function.
4675
4676		Can also be used as a |method|: >
4677			GetFuncname()->funcref([arg])
4678<
4679					*function()* *E700* *E922* *E923*
4680function({name} [, {arglist}] [, {dict}])
4681		Return a |Funcref| variable that refers to function {name}.
4682		{name} can be the name of a user defined function or an
4683		internal function.
4684
4685		{name} can also be a Funcref or a partial.  When it is a
4686		partial the dict stored in it will be used and the {dict}
4687		argument is not allowed. E.g.: >
4688			let FuncWithArg = function(dict.Func, [arg])
4689			let Broken = function(dict.Func, [arg], dict)
4690<
4691		When using the Funcref the function will be found by {name},
4692		also when it was redefined later.  Use |funcref()| to keep the
4693		same function.
4694
4695		When {arglist} or {dict} is present this creates a partial.
4696		That means the argument list and/or the dictionary is stored in
4697		the Funcref and will be used when the Funcref is called.
4698
4699		The arguments are passed to the function in front of other
4700		arguments, but after any argument from |method|.  Example: >
4701			func Callback(arg1, arg2, name)
4702			...
4703			let Partial = function('Callback', ['one', 'two'])
4704			...
4705			call Partial('name')
4706<		Invokes the function as with: >
4707			call Callback('one', 'two', 'name')
4708
4709<		With a |method|: >
4710			func Callback(one, two, three)
4711			...
4712			let Partial = function('Callback', ['two'])
4713			...
4714			eval 'one'->Partial('three')
4715<		Invokes the function as with: >
4716			call Callback('one', 'two', 'three')
4717
4718<		The function() call can be nested to add more arguments to the
4719		Funcref.  The extra arguments are appended to the list of
4720		arguments.  Example: >
4721			func Callback(arg1, arg2, name)
4722			...
4723			let Func = function('Callback', ['one'])
4724			let Func2 = function(Func, ['two'])
4725			...
4726			call Func2('name')
4727<		Invokes the function as with: >
4728			call Callback('one', 'two', 'name')
4729
4730<		The Dictionary is only useful when calling a "dict" function.
4731		In that case the {dict} is passed in as "self". Example: >
4732			function Callback() dict
4733			   echo "called for " . self.name
4734			endfunction
4735			...
4736			let context = {"name": "example"}
4737			let Func = function('Callback', context)
4738			...
4739			call Func()	" will echo: called for example
4740<		The use of function() is not needed when there are no extra
4741		arguments, these two are equivalent: >
4742			let Func = function('Callback', context)
4743			let Func = context.Callback
4744
4745<		The argument list and the Dictionary can be combined: >
4746			function Callback(arg1, count) dict
4747			...
4748			let context = {"name": "example"}
4749			let Func = function('Callback', ['one'], context)
4750			...
4751			call Func(500)
4752<		Invokes the function as with: >
4753			call context.Callback('one', 500)
4754<
4755		Can also be used as a |method|: >
4756			GetFuncname()->function([arg])
4757
4758
4759garbagecollect([{atexit}])				*garbagecollect()*
4760		Cleanup unused |Lists|, |Dictionaries|, |Channels| and |Jobs|
4761		that have circular references.
4762
4763		There is hardly ever a need to invoke this function, as it is
4764		automatically done when Vim runs out of memory or is waiting
4765		for the user to press a key after 'updatetime'.  Items without
4766		circular references are always freed when they become unused.
4767		This is useful if you have deleted a very big |List| and/or
4768		|Dictionary| with circular references in a script that runs
4769		for a long time.
4770
4771		When the optional {atexit} argument is one, garbage
4772		collection will also be done when exiting Vim, if it wasn't
4773		done before.  This is useful when checking for memory leaks.
4774
4775		The garbage collection is not done immediately but only when
4776		it's safe to perform.  This is when waiting for the user to
4777		type a character.  To force garbage collection immediately use
4778		|test_garbagecollect_now()|.
4779
4780get({list}, {idx} [, {default}])			*get()*
4781		Get item {idx} from |List| {list}.  When this item is not
4782		available return {default}.  Return zero when {default} is
4783		omitted.
4784		Can also be used as a |method|: >
4785			mylist->get(idx)
4786get({blob}, {idx} [, {default}])
4787		Get byte {idx} from |Blob| {blob}.  When this byte is not
4788		available return {default}.  Return -1 when {default} is
4789		omitted.
4790get({dict}, {key} [, {default}])
4791		Get item with key {key} from |Dictionary| {dict}.  When this
4792		item is not available return {default}.  Return zero when
4793		{default} is omitted.  Useful example: >
4794			let val = get(g:, 'var_name', 'default')
4795<		This gets the value of g:var_name if it exists, and uses
4796		'default' when it does not exist.
4797get({func}, {what})
4798		Get an item with from Funcref {func}.  Possible values for
4799		{what} are:
4800			"name"	The function name
4801			"func"	The function
4802			"dict"	The dictionary
4803			"args"	The list with arguments
4804
4805							*getbufinfo()*
4806getbufinfo([{expr}])
4807getbufinfo([{dict}])
4808		Get information about buffers as a List of Dictionaries.
4809
4810		Without an argument information about all the buffers is
4811		returned.
4812
4813		When the argument is a Dictionary only the buffers matching
4814		the specified criteria are returned.  The following keys can
4815		be specified in {dict}:
4816			buflisted	include only listed buffers.
4817			bufloaded	include only loaded buffers.
4818			bufmodified	include only modified buffers.
4819
4820		Otherwise, {expr} specifies a particular buffer to return
4821		information for.  For the use of {expr}, see |bufname()|
4822		above.  If the buffer is found the returned List has one item.
4823		Otherwise the result is an empty list.
4824
4825		Each returned List item is a dictionary with the following
4826		entries:
4827			bufnr		buffer number.
4828			changed		TRUE if the buffer is modified.
4829			changedtick	number of changes made to the buffer.
4830			hidden		TRUE if the buffer is hidden.
4831			lastused	timestamp in seconds, like
4832					|localtime()|, when the buffer was
4833					last used.
4834					{only with the |+viminfo| feature}
4835			listed		TRUE if the buffer is listed.
4836			lnum		current line number in buffer.
4837			linecount	number of lines in the buffer (only
4838					valid when loaded)
4839			loaded		TRUE if the buffer is loaded.
4840			name		full path to the file in the buffer.
4841			signs		list of signs placed in the buffer.
4842					Each list item is a dictionary with
4843					the following fields:
4844					    id	  sign identifier
4845					    lnum  line number
4846					    name  sign name
4847			variables	a reference to the dictionary with
4848					buffer-local variables.
4849			windows		list of |window-ID|s that display this
4850					buffer
4851			popups		list of popup |window-ID|s that
4852					display this buffer
4853
4854		Examples: >
4855			for buf in getbufinfo()
4856			    echo buf.name
4857			endfor
4858			for buf in getbufinfo({'buflisted':1})
4859			    if buf.changed
4860				....
4861			    endif
4862			endfor
4863<
4864		To get buffer-local options use: >
4865			getbufvar({bufnr}, '&option_name')
4866
4867<
4868							*getbufline()*
4869getbufline({expr}, {lnum} [, {end}])
4870		Return a |List| with the lines starting from {lnum} to {end}
4871		(inclusive) in the buffer {expr}.  If {end} is omitted, a
4872		|List| with only the line {lnum} is returned.
4873
4874		For the use of {expr}, see |bufname()| above.
4875
4876		For {lnum} and {end} "$" can be used for the last line of the
4877		buffer.  Otherwise a number must be used.
4878
4879		When {lnum} is smaller than 1 or bigger than the number of
4880		lines in the buffer, an empty |List| is returned.
4881
4882		When {end} is greater than the number of lines in the buffer,
4883		it is treated as {end} is set to the number of lines in the
4884		buffer.  When {end} is before {lnum} an empty |List| is
4885		returned.
4886
4887		This function works only for loaded buffers.  For unloaded and
4888		non-existing buffers, an empty |List| is returned.
4889
4890		Example: >
4891			:let lines = getbufline(bufnr("myfile"), 1, "$")
4892
4893<		Can also be used as a |method|: >
4894			GetBufnr()->getbufline(lnum)
4895
4896getbufvar({expr}, {varname} [, {def}])				*getbufvar()*
4897		The result is the value of option or local buffer variable
4898		{varname} in buffer {expr}.  Note that the name without "b:"
4899		must be used.
4900		When {varname} is empty returns a dictionary with all the
4901		buffer-local variables.
4902		When {varname} is equal to "&" returns a dictionary with all
4903		the buffer-local options.
4904		Otherwise, when {varname} starts with "&" returns the value of
4905		a buffer-local option.
4906		This also works for a global or buffer-local option, but it
4907		doesn't work for a global variable, window-local variable or
4908		window-local option.
4909		For the use of {expr}, see |bufname()| above.
4910		When the buffer or variable doesn't exist {def} or an empty
4911		string is returned, there is no error message.
4912		Examples: >
4913			:let bufmodified = getbufvar(1, "&mod")
4914			:echo "todo myvar = " . getbufvar("todo", "myvar")
4915
4916<		Can also be used as a |method|: >
4917			GetBufnr()->getbufvar(varname)
4918<
4919getchangelist([{expr}])					*getchangelist()*
4920		Returns the |changelist| for the buffer {expr}. For the use
4921		of {expr}, see |bufname()| above. If buffer {expr} doesn't
4922		exist, an empty list is returned.
4923
4924		The returned list contains two entries: a list with the change
4925		locations and the current position in the list.  Each
4926		entry in the change list is a dictionary with the following
4927		entries:
4928			col		column number
4929			coladd		column offset for 'virtualedit'
4930			lnum		line number
4931		If buffer {expr} is the current buffer, then the current
4932		position refers to the position in the list. For other
4933		buffers, it is set to the length of the list.
4934
4935		Can also be used as a |method|: >
4936			GetBufnr()->getchangelist()
4937
4938getchar([expr])						*getchar()*
4939		Get a single character from the user or input stream.
4940		If [expr] is omitted, wait until a character is available.
4941		If [expr] is 0, only get a character when one is available.
4942			Return zero otherwise.
4943		If [expr] is 1, only check if a character is available, it is
4944			not consumed.  Return zero if no character available.
4945
4946		Without [expr] and when [expr] is 0 a whole character or
4947		special key is returned.  If it is a single character, the
4948		result is a number.  Use nr2char() to convert it to a String.
4949		Otherwise a String is returned with the encoded character.
4950		For a special key it's a String with a sequence of bytes
4951		starting with 0x80 (decimal: 128).  This is the same value as
4952		the String "\<Key>", e.g., "\<Left>".  The returned value is
4953		also a String when a modifier (shift, control, alt) was used
4954		that is not included in the character.
4955
4956		When [expr] is 0 and Esc is typed, there will be a short delay
4957		while Vim waits to see if this is the start of an escape
4958		sequence.
4959
4960		When [expr] is 1 only the first byte is returned.  For a
4961		one-byte character it is the character itself as a number.
4962		Use nr2char() to convert it to a String.
4963
4964		Use getcharmod() to obtain any additional modifiers.
4965
4966		When the user clicks a mouse button, the mouse event will be
4967		returned.  The position can then be found in |v:mouse_col|,
4968		|v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|.
4969		|getmousepos()| can also be used.  This example positions the
4970		mouse as it would normally happen: >
4971			let c = getchar()
4972			if c == "\<LeftMouse>" && v:mouse_win > 0
4973			  exe v:mouse_win . "wincmd w"
4974			  exe v:mouse_lnum
4975			  exe "normal " . v:mouse_col . "|"
4976			endif
4977<
4978		When using bracketed paste only the first character is
4979		returned, the rest of the pasted text is dropped.
4980		|xterm-bracketed-paste|.
4981
4982		There is no prompt, you will somehow have to make clear to the
4983		user that a character has to be typed.
4984		There is no mapping for the character.
4985		Key codes are replaced, thus when the user presses the <Del>
4986		key you get the code for the <Del> key, not the raw character
4987		sequence.  Examples: >
4988			getchar() == "\<Del>"
4989			getchar() == "\<S-Left>"
4990<		This example redefines "f" to ignore case: >
4991			:nmap f :call FindChar()<CR>
4992			:function FindChar()
4993			:  let c = nr2char(getchar())
4994			:  while col('.') < col('$') - 1
4995			:    normal l
4996			:    if getline('.')[col('.') - 1] ==? c
4997			:      break
4998			:    endif
4999			:  endwhile
5000			:endfunction
5001<
5002		You may also receive synthetic characters, such as
5003		|<CursorHold>|. Often you will want to ignore this and get
5004		another character: >
5005			:function GetKey()
5006			:  let c = getchar()
5007			:  while c == "\<CursorHold>"
5008			:    let c = getchar()
5009			:  endwhile
5010			:  return c
5011			:endfunction
5012
5013getcharmod()						*getcharmod()*
5014		The result is a Number which is the state of the modifiers for
5015		the last obtained character with getchar() or in another way.
5016		These values are added together:
5017			2	shift
5018			4	control
5019			8	alt (meta)
5020			16	meta (when it's different from ALT)
5021			32	mouse double click
5022			64	mouse triple click
5023			96	mouse quadruple click (== 32 + 64)
5024			128	command (Macintosh only)
5025		Only the modifiers that have not been included in the
5026		character itself are obtained.  Thus Shift-a results in "A"
5027		without a modifier.
5028
5029getcharsearch()						*getcharsearch()*
5030		Return the current character search information as a {dict}
5031		with the following entries:
5032
5033		    char	character previously used for a character
5034				search (|t|, |f|, |T|, or |F|); empty string
5035				if no character search has been performed
5036		    forward	direction of character search; 1 for forward,
5037				0 for backward
5038		    until	type of character search; 1 for a |t| or |T|
5039				character search, 0 for an |f| or |F|
5040				character search
5041
5042		This can be useful to always have |;| and |,| search
5043		forward/backward regardless of the direction of the previous
5044		character search: >
5045			:nnoremap <expr> ; getcharsearch().forward ? ';' : ','
5046			:nnoremap <expr> , getcharsearch().forward ? ',' : ';'
5047<		Also see |setcharsearch()|.
5048
5049getcmdline()						*getcmdline()*
5050		Return the current command-line.  Only works when the command
5051		line is being edited, thus requires use of |c_CTRL-\_e| or
5052		|c_CTRL-R_=|.
5053		Example: >
5054			:cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
5055<		Also see |getcmdtype()|, |getcmdpos()| and |setcmdpos()|.
5056		Returns an empty string when entering a password or using
5057		|inputsecret()|.
5058
5059getcmdpos()						*getcmdpos()*
5060		Return the position of the cursor in the command line as a
5061		byte count.  The first column is 1.
5062		Only works when editing the command line, thus requires use of
5063		|c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
5064		Returns 0 otherwise.
5065		Also see |getcmdtype()|, |setcmdpos()| and |getcmdline()|.
5066
5067getcmdtype()						*getcmdtype()*
5068		Return the current command-line type. Possible return values
5069		are:
5070		    :	normal Ex command
5071		    >	debug mode command |debug-mode|
5072		    /	forward search command
5073		    ?	backward search command
5074		    @	|input()| command
5075		    -	|:insert| or |:append| command
5076		    =	|i_CTRL-R_=|
5077		Only works when editing the command line, thus requires use of
5078		|c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
5079		Returns an empty string otherwise.
5080		Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
5081
5082getcmdwintype()						*getcmdwintype()*
5083		Return the current |command-line-window| type. Possible return
5084		values are the same as |getcmdtype()|. Returns an empty string
5085		when not in the command-line window.
5086
5087getcompletion({pat}, {type} [, {filtered}])		*getcompletion()*
5088		Return a list of command-line completion matches. {type}
5089		specifies what for.  The following completion types are
5090		supported:
5091
5092		arglist		file names in argument list
5093		augroup		autocmd groups
5094		buffer		buffer names
5095		behave		:behave suboptions
5096		color		color schemes
5097		command		Ex command (and arguments)
5098		compiler	compilers
5099		cscope		|:cscope| suboptions
5100		diff_buffer     |:diffget| and |:diffput| completion
5101		dir		directory names
5102		environment	environment variable names
5103		event		autocommand events
5104		expression	Vim expression
5105		file		file and directory names
5106		file_in_path	file and directory names in |'path'|
5107		filetype	filetype names |'filetype'|
5108		function	function name
5109		help		help subjects
5110		highlight	highlight groups
5111		history		:history suboptions
5112		locale		locale names (as output of locale -a)
5113		mapclear        buffer argument
5114		mapping		mapping name
5115		menu		menus
5116		messages	|:messages| suboptions
5117		option		options
5118		packadd		optional package |pack-add| names
5119		shellcmd	Shell command
5120		sign		|:sign| suboptions
5121		syntax		syntax file names |'syntax'|
5122		syntime		|:syntime| suboptions
5123		tag		tags
5124		tag_listfiles	tags, file names
5125		user		user names
5126		var		user variables
5127
5128		If {pat} is an empty string, then all the matches are returned.
5129		Otherwise only items matching {pat} are returned. See
5130		|wildcards| for the use of special characters in {pat}.
5131
5132		If the optional {filtered} flag is set to 1, then 'wildignore'
5133		is applied to filter the results.  Otherwise all the matches
5134		are returned. The 'wildignorecase' option always applies.
5135
5136		If there are no matches, an empty list is returned.  An
5137		invalid value for {type} produces an error.
5138
5139		Can also be used as a |method|: >
5140			GetPattern()->getcompletion('color')
5141<
5142							*getcurpos()*
5143getcurpos()	Get the position of the cursor.  This is like getpos('.'), but
5144		includes an extra "curswant" item in the list:
5145		    [0, lnum, col, off, curswant] ~
5146		The "curswant" number is the preferred column when moving the
5147		cursor vertically.  Also see |getpos()|.
5148		The first "bufnum" item is always zero.
5149
5150		This can be used to save and restore the cursor position: >
5151			let save_cursor = getcurpos()
5152			MoveTheCursorAround
5153			call setpos('.', save_cursor)
5154<		Note that this only works within the window.  See
5155		|winrestview()| for restoring more state.
5156							*getcwd()*
5157getcwd([{winnr} [, {tabnr}]])
5158		The result is a String, which is the name of the current
5159		working directory.
5160
5161		With {winnr} return the local current directory of this window
5162		in the current tab page.  {winnr} can be the window number or
5163		the |window-ID|.
5164		If {winnr} is -1 return the name of the global working
5165		directory.  See also |haslocaldir()|.
5166
5167		With {winnr} and {tabnr} return the local current directory of
5168		the window in the specified tab page. If {winnr} is -1 return
5169		the working directory of the tabpage.
5170		If {winnr} is zero use the current window, if {tabnr} is zero
5171		use the current tabpage.
5172		Without any arguments, return the working directory of the
5173		current window.
5174		Return an empty string if the arguments are invalid.
5175
5176		Examples: >
5177			" Get the working directory of the current window
5178			:echo getcwd()
5179			:echo getcwd(0)
5180			:echo getcwd(0, 0)
5181			" Get the working directory of window 3 in tabpage 2
5182			:echo getcwd(3, 2)
5183			" Get the global working directory
5184			:echo getcwd(-1)
5185			" Get the working directory of tabpage 3
5186			:echo getcwd(-1, 3)
5187			" Get the working directory of current tabpage
5188			:echo getcwd(-1, 0)
5189
5190<		Can also be used as a |method|: >
5191			GetWinnr()->getcwd()
5192<
5193getenv({name})						*getenv()*
5194		Return the value of environment variable {name}.
5195		When the variable does not exist |v:null| is returned.  That
5196		is different from a variable set to an empty string, although
5197		some systems interpret the empty value as the variable being
5198		deleted.  See also |expr-env|.
5199
5200		Can also be used as a |method|: >
5201			GetVarname()->getenv()
5202
5203getfontname([{name}])					*getfontname()*
5204		Without an argument returns the name of the normal font being
5205		used.  Like what is used for the Normal highlight group
5206		|hl-Normal|.
5207		With an argument a check is done whether {name} is a valid
5208		font name.  If not then an empty string is returned.
5209		Otherwise the actual font name is returned, or {name} if the
5210		GUI does not support obtaining the real name.
5211		Only works when the GUI is running, thus not in your vimrc or
5212		gvimrc file.  Use the |GUIEnter| autocommand to use this
5213		function just after the GUI has started.
5214		Note that the GTK GUI accepts any font name, thus checking for
5215		a valid name does not work.
5216
5217getfperm({fname})					*getfperm()*
5218		The result is a String, which is the read, write, and execute
5219		permissions of the given file {fname}.
5220		If {fname} does not exist or its directory cannot be read, an
5221		empty string is returned.
5222		The result is of the form "rwxrwxrwx", where each group of
5223		"rwx" flags represent, in turn, the permissions of the owner
5224		of the file, the group the file belongs to, and other users.
5225		If a user does not have a given permission the flag for this
5226		is replaced with the string "-".  Examples: >
5227			:echo getfperm("/etc/passwd")
5228			:echo getfperm(expand("~/.vimrc"))
5229<		This will hopefully (from a security point of view) display
5230		the string "rw-r--r--" or even "rw-------".
5231
5232		Can also be used as a |method|: >
5233			GetFilename()->getfperm()
5234<
5235		For setting permissions use |setfperm()|.
5236
5237getfsize({fname})					*getfsize()*
5238		The result is a Number, which is the size in bytes of the
5239		given file {fname}.
5240		If {fname} is a directory, 0 is returned.
5241		If the file {fname} can't be found, -1 is returned.
5242		If the size of {fname} is too big to fit in a Number then -2
5243		is returned.
5244
5245		Can also be used as a |method|: >
5246			GetFilename()->getfsize()
5247
5248getftime({fname})					*getftime()*
5249		The result is a Number, which is the last modification time of
5250		the given file {fname}.  The value is measured as seconds
5251		since 1st Jan 1970, and may be passed to strftime().  See also
5252		|localtime()| and |strftime()|.
5253		If the file {fname} can't be found -1 is returned.
5254
5255		Can also be used as a |method|: >
5256			GetFilename()->getftime()
5257
5258getftype({fname})					*getftype()*
5259		The result is a String, which is a description of the kind of
5260		file of the given file {fname}.
5261		If {fname} does not exist an empty string is returned.
5262		Here is a table over different kinds of files and their
5263		results:
5264			Normal file		"file"
5265			Directory		"dir"
5266			Symbolic link		"link"
5267			Block device		"bdev"
5268			Character device	"cdev"
5269			Socket			"socket"
5270			FIFO			"fifo"
5271			All other		"other"
5272		Example: >
5273			getftype("/home")
5274<		Note that a type such as "link" will only be returned on
5275		systems that support it.  On some systems only "dir" and
5276		"file" are returned.  On MS-Windows a symbolic link to a
5277		directory returns "dir" instead of "link".
5278
5279		Can also be used as a |method|: >
5280			GetFilename()->getftype()
5281
5282getimstatus()						*getimstatus()*
5283		The result is a Number, which is |TRUE| when the IME status is
5284		active.
5285		See 'imstatusfunc'.
5286
5287getjumplist([{winnr} [, {tabnr}]])			*getjumplist()*
5288		Returns the |jumplist| for the specified window.
5289
5290		Without arguments use the current window.
5291		With {winnr} only use this window in the current tab page.
5292		{winnr} can also be a |window-ID|.
5293		With {winnr} and {tabnr} use the window in the specified tab
5294		page.
5295
5296		The returned list contains two entries: a list with the jump
5297		locations and the last used jump position number in the list.
5298		Each entry in the jump location list is a dictionary with
5299		the following entries:
5300			bufnr		buffer number
5301			col		column number
5302			coladd		column offset for 'virtualedit'
5303			filename	filename if available
5304			lnum		line number
5305
5306		Can also be used as a |method|: >
5307			GetWinnr()->getjumplist()
5308
5309<							*getline()*
5310getline({lnum} [, {end}])
5311		Without {end} the result is a String, which is line {lnum}
5312		from the current buffer.  Example: >
5313			getline(1)
5314<		When {lnum} is a String that doesn't start with a
5315		digit, |line()| is called to translate the String into a Number.
5316		To get the line under the cursor: >
5317			getline(".")
5318<		When {lnum} is smaller than 1 or bigger than the number of
5319		lines in the buffer, an empty string is returned.
5320
5321		When {end} is given the result is a |List| where each item is
5322		a line from the current buffer in the range {lnum} to {end},
5323		including line {end}.
5324		{end} is used in the same way as {lnum}.
5325		Non-existing lines are silently omitted.
5326		When {end} is before {lnum} an empty |List| is returned.
5327		Example: >
5328			:let start = line('.')
5329			:let end = search("^$") - 1
5330			:let lines = getline(start, end)
5331
5332<		Can also be used as a |method|: >
5333			ComputeLnum()->getline()
5334
5335<		To get lines from another buffer see |getbufline()|
5336
5337getloclist({nr} [, {what}])				*getloclist()*
5338		Returns a list with all the entries in the location list for
5339		window {nr}.  {nr} can be the window number or the |window-ID|.
5340		When {nr} is zero the current window is used.
5341
5342		For a location list window, the displayed location list is
5343		returned.  For an invalid window number {nr}, an empty list is
5344		returned. Otherwise, same as |getqflist()|.
5345
5346		If the optional {what} dictionary argument is supplied, then
5347		returns the items listed in {what} as a dictionary. Refer to
5348		|getqflist()| for the supported items in {what}.
5349
5350		In addition to the items supported by |getqflist()| in {what},
5351		the following item is supported by |getloclist()|:
5352
5353			filewinid	id of the window used to display files
5354					from the location list. This field is
5355					applicable only when called from a
5356					location list window. See
5357					|location-list-file-window| for more
5358					details.
5359
5360getmatches([{win}])					*getmatches()*
5361		Returns a |List| with all matches previously defined for the
5362		current window by |matchadd()| and the |:match| commands.
5363		|getmatches()| is useful in combination with |setmatches()|,
5364		as |setmatches()| can restore a list of matches saved by
5365		|getmatches()|.
5366		Example: >
5367			:echo getmatches()
5368<			[{'group': 'MyGroup1', 'pattern': 'TODO',
5369			'priority': 10, 'id': 1}, {'group': 'MyGroup2',
5370			'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
5371			:let m = getmatches()
5372			:call clearmatches()
5373			:echo getmatches()
5374<			[] >
5375			:call setmatches(m)
5376			:echo getmatches()
5377<			[{'group': 'MyGroup1', 'pattern': 'TODO',
5378			'priority': 10, 'id': 1}, {'group': 'MyGroup2',
5379			'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
5380			:unlet m
5381<
5382getmousepos()						*getmousepos()*
5383		Returns a Dictionary with the last known position of the
5384		mouse.  This can be used in a mapping for a mouse click or in
5385		a filter of a popup window.  The items are:
5386			screenrow	screen row
5387			screencol	screen column
5388			winid		Window ID of the click
5389			winrow		row inside "winid"
5390			wincol		column inside "winid"
5391			line		text line inside "winid"
5392			column		text column inside "winid"
5393		All numbers are 1-based.
5394
5395		If not over a window, e.g. when in the command line, then only
5396		"screenrow" and "screencol" are valid, the others are zero.
5397
5398		When on the status line below a window or the vertical
5399		separater right of a window, the "line" and "column" values
5400		are zero.
5401
5402		When the position is after the text then "column" is the
5403		length of the text in bytes.
5404
5405		If the mouse is over a popup window then that window is used.
5406
5407
5408		When using |getchar()| the Vim variables |v:mouse_lnum|,
5409		|v:mouse_col| and |v:mouse_winid| also provide these values.
5410
5411							*getpid()*
5412getpid()	Return a Number which is the process ID of the Vim process.
5413		On Unix and MS-Windows this is a unique number, until Vim
5414		exits.
5415
5416							*getpos()*
5417getpos({expr})	Get the position for {expr}.  For possible values of {expr}
5418		see |line()|.  For getting the cursor position see
5419		|getcurpos()|.
5420		The result is a |List| with four numbers:
5421		    [bufnum, lnum, col, off]
5422		"bufnum" is zero, unless a mark like '0 or 'A is used, then it
5423		is the buffer number of the mark.
5424		"lnum" and "col" are the position in the buffer.  The first
5425		column is 1.
5426		The "off" number is zero, unless 'virtualedit' is used.  Then
5427		it is the offset in screen columns from the start of the
5428		character.  E.g., a position within a <Tab> or after the last
5429		character.
5430		Note that for '< and '> Visual mode matters: when it is "V"
5431		(visual line mode) the column of '< is zero and the column of
5432		'> is a large number.
5433		This can be used to save and restore the position of a mark: >
5434			let save_a_mark = getpos("'a")
5435			...
5436			call setpos("'a", save_a_mark)
5437<		Also see |getcurpos()| and |setpos()|.
5438
5439		Can also be used as a |method|: >
5440			GetMark()->getpos()
5441
5442
5443getqflist([{what}])					*getqflist()*
5444		Returns a list with all the current quickfix errors.  Each
5445		list item is a dictionary with these entries:
5446			bufnr	number of buffer that has the file name, use
5447				bufname() to get the name
5448			module	module name
5449			lnum	line number in the buffer (first line is 1)
5450			col	column number (first column is 1)
5451			vcol	|TRUE|: "col" is visual column
5452				|FALSE|: "col" is byte index
5453			nr	error number
5454			pattern	search pattern used to locate the error
5455			text	description of the error
5456			type	type of the error, 'E', '1', etc.
5457			valid	|TRUE|: recognized error message
5458
5459		When there is no error list or it's empty, an empty list is
5460		returned. Quickfix list entries with non-existing buffer
5461		number are returned with "bufnr" set to zero.
5462
5463		Useful application: Find pattern matches in multiple files and
5464		do something with them: >
5465			:vimgrep /theword/jg *.c
5466			:for d in getqflist()
5467			:   echo bufname(d.bufnr) ':' d.lnum '=' d.text
5468			:endfor
5469<
5470		If the optional {what} dictionary argument is supplied, then
5471		returns only the items listed in {what} as a dictionary. The
5472		following string items are supported in {what}:
5473			changedtick	get the total number of changes made
5474					to the list |quickfix-changedtick|
5475			context	get the |quickfix-context|
5476			efm	errorformat to use when parsing "lines". If
5477				not present, then the 'errorformat' option
5478				value is used.
5479			id	get information for the quickfix list with
5480				|quickfix-ID|; zero means the id for the
5481				current list or the list specified by "nr"
5482			idx	index of the current entry in the quickfix
5483				list specified by 'id' or 'nr'.
5484				See |quickfix-index|
5485			items	quickfix list entries
5486			lines	parse a list of lines using 'efm' and return
5487				the resulting entries.  Only a |List| type is
5488				accepted.  The current quickfix list is not
5489				modified. See |quickfix-parse|.
5490			nr	get information for this quickfix list; zero
5491				means the current quickfix list and "$" means
5492				the last quickfix list
5493			qfbufnr number of the buffer displayed in the quickfix
5494				window. Returns 0 if the quickfix buffer is
5495				not present. See |quickfix-buffer|.
5496			size	number of entries in the quickfix list
5497			title	get the list title |quickfix-title|
5498			winid	get the quickfix |window-ID|
5499			all	all of the above quickfix properties
5500		Non-string items in {what} are ignored. To get the value of a
5501		particular item, set it to zero.
5502		If "nr" is not present then the current quickfix list is used.
5503		If both "nr" and a non-zero "id" are specified, then the list
5504		specified by "id" is used.
5505		To get the number of lists in the quickfix stack, set "nr" to
5506		"$" in {what}. The "nr" value in the returned dictionary
5507		contains the quickfix stack size.
5508		When "lines" is specified, all the other items except "efm"
5509		are ignored.  The returned dictionary contains the entry
5510		"items" with the list of entries.
5511
5512		The returned dictionary contains the following entries:
5513			changedtick	total number of changes made to the
5514					list |quickfix-changedtick|
5515			context	quickfix list context. See |quickfix-context|
5516				If not present, set to "".
5517			id	quickfix list ID |quickfix-ID|. If not
5518				present, set to 0.
5519			idx	index of the current entry in the list. If not
5520				present, set to 0.
5521			items	quickfix list entries. If not present, set to
5522				an empty list.
5523			nr	quickfix list number. If not present, set to 0
5524			qfbufnr	number of the buffer displayed in the quickfix
5525				window. If not present, set to 0.
5526			size	number of entries in the quickfix list. If not
5527				present, set to 0.
5528			title	quickfix list title text. If not present, set
5529				to "".
5530			winid	quickfix |window-ID|. If not present, set to 0
5531
5532		Examples (See also |getqflist-examples|): >
5533			:echo getqflist({'all': 1})
5534			:echo getqflist({'nr': 2, 'title': 1})
5535			:echo getqflist({'lines' : ["F1:10:L10"]})
5536<
5537getreg([{regname} [, 1 [, {list}]]])			*getreg()*
5538		The result is a String, which is the contents of register
5539		{regname}.  Example: >
5540			:let cliptext = getreg('*')
5541<		When {regname} was not set the result is an empty string.
5542
5543		getreg('=') returns the last evaluated value of the expression
5544		register.  (For use in maps.)
5545		getreg('=', 1) returns the expression itself, so that it can
5546		be restored with |setreg()|.  For other registers the extra
5547		argument is ignored, thus you can always give it.
5548
5549		If {list} is present and |TRUE|, the result type is changed
5550		to |List|. Each list item is one text line. Use it if you care
5551		about zero bytes possibly present inside register: without
5552		third argument both NLs and zero bytes are represented as NLs
5553		(see |NL-used-for-Nul|).
5554		When the register was not set an empty list is returned.
5555
5556		If {regname} is not specified, |v:register| is used.
5557
5558		Can also be used as a |method|: >
5559			GetRegname()->getreg()
5560
5561
5562getregtype([{regname}])					*getregtype()*
5563		The result is a String, which is type of register {regname}.
5564		The value will be one of:
5565		    "v"			for |characterwise| text
5566		    "V"			for |linewise| text
5567		    "<CTRL-V>{width}"	for |blockwise-visual| text
5568		    ""			for an empty or unknown register
5569		<CTRL-V> is one character with value 0x16.
5570		If {regname} is not specified, |v:register| is used.
5571
5572		Can also be used as a |method|: >
5573			GetRegname()->getregtype()
5574
5575gettabinfo([{arg}])					*gettabinfo()*
5576		If {arg} is not specified, then information about all the tab
5577		pages is returned as a List. Each List item is a Dictionary.
5578		Otherwise, {arg} specifies the tab page number and information
5579		about that one is returned.  If the tab page does not exist an
5580		empty List is returned.
5581
5582		Each List item is a Dictionary with the following entries:
5583			tabnr		tab page number.
5584			variables	a reference to the dictionary with
5585					tabpage-local variables
5586			windows		List of |window-ID|s in the tab page.
5587
5588		Can also be used as a |method|: >
5589			GetTabnr()->gettabinfo()
5590
5591gettabvar({tabnr}, {varname} [, {def}])				*gettabvar()*
5592		Get the value of a tab-local variable {varname} in tab page
5593		{tabnr}. |t:var|
5594		Tabs are numbered starting with one.
5595		When {varname} is empty a dictionary with all tab-local
5596		variables is returned.
5597		Note that the name without "t:" must be used.
5598		When the tab or variable doesn't exist {def} or an empty
5599		string is returned, there is no error message.
5600
5601		Can also be used as a |method|: >
5602			GetTabnr()->gettabvar(varname)
5603
5604gettabwinvar({tabnr}, {winnr}, {varname} [, {def}])		*gettabwinvar()*
5605		Get the value of window-local variable {varname} in window
5606		{winnr} in tab page {tabnr}.
5607		When {varname} is empty a dictionary with all window-local
5608		variables is returned.
5609		When {varname} is equal to "&" get the values of all
5610		window-local options in a Dictionary.
5611		Otherwise, when {varname} starts with "&" get the value of a
5612		window-local option.
5613		Note that {varname} must be the name without "w:".
5614		Tabs are numbered starting with one.  For the current tabpage
5615		use |getwinvar()|.
5616		{winnr} can be the window number or the |window-ID|.
5617		When {winnr} is zero the current window is used.
5618		This also works for a global option, buffer-local option and
5619		window-local option, but it doesn't work for a global variable
5620		or buffer-local variable.
5621		When the tab, window or variable doesn't exist {def} or an
5622		empty string is returned, there is no error message.
5623		Examples: >
5624			:let list_is_on = gettabwinvar(1, 2, '&list')
5625			:echo "myvar = " . gettabwinvar(3, 1, 'myvar')
5626<
5627		To obtain all window-local variables use: >
5628			gettabwinvar({tabnr}, {winnr}, '&')
5629
5630<		Can also be used as a |method|: >
5631			GetTabnr()->gettabwinvar(winnr, varname)
5632
5633gettagstack([{nr}])					*gettagstack()*
5634		The result is a Dict, which is the tag stack of window {nr}.
5635		{nr} can be the window number or the |window-ID|.
5636		When {nr} is not specified, the current window is used.
5637		When window {nr} doesn't exist, an empty Dict is returned.
5638
5639		The returned dictionary contains the following entries:
5640			curidx		Current index in the stack. When at
5641					top of the stack, set to (length + 1).
5642					Index of bottom of the stack is 1.
5643			items		List of items in the stack. Each item
5644					is a dictionary containing the
5645					entries described below.
5646			length		Number of entries in the stack.
5647
5648		Each item in the stack is a dictionary with the following
5649		entries:
5650			bufnr		buffer number of the current jump
5651			from		cursor position before the tag jump.
5652					See |getpos()| for the format of the
5653					returned list.
5654			matchnr		current matching tag number. Used when
5655					multiple matching tags are found for a
5656					name.
5657			tagname		name of the tag
5658
5659		See |tagstack| for more information about the tag stack.
5660
5661		Can also be used as a |method|: >
5662			GetWinnr()->gettagstack()
5663
5664getwininfo([{winid}])					*getwininfo()*
5665		Returns information about windows as a List with Dictionaries.
5666
5667		If {winid} is given Information about the window with that ID
5668		is returned.  If the window does not exist the result is an
5669		empty list.
5670
5671		Without {winid} information about all the windows in all the
5672		tab pages is returned.
5673
5674		Each List item is a Dictionary with the following entries:
5675			botline		last displayed buffer line
5676			bufnr		number of buffer in the window
5677			height		window height (excluding winbar)
5678			loclist		1 if showing a location list
5679					{only with the +quickfix feature}
5680			quickfix	1 if quickfix or location list window
5681					{only with the +quickfix feature}
5682			terminal	1 if a terminal window
5683					{only with the +terminal feature}
5684			tabnr		tab page number
5685			topline		first displayed buffer line
5686			variables	a reference to the dictionary with
5687					window-local variables
5688			width		window width
5689			winbar		1 if the window has a toolbar, 0
5690					otherwise
5691			wincol		leftmost screen column of the window,
5692					col from |win_screenpos()|
5693			winid		|window-ID|
5694			winnr		window number
5695			winrow		topmost screen column of the window,
5696					row from |win_screenpos()|
5697
5698		Can also be used as a |method|: >
5699			GetWinnr()->getwininfo()
5700
5701getwinpos([{timeout}])					*getwinpos()*
5702		The result is a List with two numbers, the result of
5703		|getwinposx()| and |getwinposy()| combined:
5704			[x-pos, y-pos]
5705		{timeout} can be used to specify how long to wait in msec for
5706		a response from the terminal.  When omitted 100 msec is used.
5707		Use a longer time for a remote terminal.
5708		When using a value less than 10 and no response is received
5709		within that time, a previously reported position is returned,
5710		if available.  This can be used to poll for the position and
5711		do some work in the meantime: >
5712			while 1
5713			  let res = getwinpos(1)
5714			  if res[0] >= 0
5715			    break
5716			  endif
5717			  " Do some work here
5718			endwhile
5719<
5720
5721		Can also be used as a |method|: >
5722			GetTimeout()->getwinpos()
5723<
5724							*getwinposx()*
5725getwinposx()	The result is a Number, which is the X coordinate in pixels of
5726		the left hand side of the GUI Vim window. Also works for an
5727		xterm (uses a timeout of 100 msec).
5728		The result will be -1 if the information is not available.
5729		The value can be used with `:winpos`.
5730
5731							*getwinposy()*
5732getwinposy()	The result is a Number, which is the Y coordinate in pixels of
5733		the top of the GUI Vim window.  Also works for an xterm (uses
5734		a timeout of 100 msec).
5735		The result will be -1 if the information is not available.
5736		The value can be used with `:winpos`.
5737
5738getwinvar({winnr}, {varname} [, {def}])				*getwinvar()*
5739		Like |gettabwinvar()| for the current tabpage.
5740		Examples: >
5741			:let list_is_on = getwinvar(2, '&list')
5742			:echo "myvar = " . getwinvar(1, 'myvar')
5743
5744<		Can also be used as a |method|: >
5745			GetWinnr()->getwinvar(varname)
5746<
5747glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])		*glob()*
5748		Expand the file wildcards in {expr}.  See |wildcards| for the
5749		use of special characters.
5750
5751		Unless the optional {nosuf} argument is given and is |TRUE|,
5752		the 'suffixes' and 'wildignore' options apply: Names matching
5753		one of the patterns in 'wildignore' will be skipped and
5754		'suffixes' affect the ordering of matches.
5755		'wildignorecase' always applies.
5756
5757		When {list} is present and it is |TRUE| the result is a List
5758		with all matching files. The advantage of using a List is,
5759		you also get filenames containing newlines correctly.
5760		Otherwise the result is a String and when there are several
5761		matches, they are separated by <NL> characters.
5762
5763		If the expansion fails, the result is an empty String or List.
5764
5765		You can also use |readdir()| if you need to do complicated
5766		things, such as limiting the number of matches.
5767
5768		A name for a non-existing file is not included.  A symbolic
5769		link is only included if it points to an existing file.
5770		However, when the {alllinks} argument is present and it is
5771		|TRUE| then all symbolic links are included.
5772
5773		For most systems backticks can be used to get files names from
5774		any external command.  Example: >
5775			:let tagfiles = glob("`find . -name tags -print`")
5776			:let &tags = substitute(tagfiles, "\n", ",", "g")
5777<		The result of the program inside the backticks should be one
5778		item per line.  Spaces inside an item are allowed.
5779
5780		See |expand()| for expanding special Vim variables.  See
5781		|system()| for getting the raw output of an external command.
5782
5783		Can also be used as a |method|: >
5784			GetExpr()->glob()
5785
5786glob2regpat({expr})					 *glob2regpat()*
5787		Convert a file pattern, as used by glob(), into a search
5788		pattern.  The result can be used to match with a string that
5789		is a file name.  E.g. >
5790			if filename =~ glob2regpat('Make*.mak')
5791<		This is equivalent to: >
5792			if filename =~ '^Make.*\.mak$'
5793<		When {expr} is an empty string the result is "^$", match an
5794		empty string.
5795		Note that the result depends on the system.  On MS-Windows
5796		a backslash usually means a path separator.
5797
5798		Can also be used as a |method|: >
5799			GetExpr()->glob2regpat()
5800<								*globpath()*
5801globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
5802		Perform glob() for {expr} on all directories in {path} and
5803		concatenate the results.  Example: >
5804			:echo globpath(&rtp, "syntax/c.vim")
5805<
5806		{path} is a comma-separated list of directory names.  Each
5807		directory name is prepended to {expr} and expanded like with
5808		|glob()|.  A path separator is inserted when needed.
5809		To add a comma inside a directory name escape it with a
5810		backslash.  Note that on MS-Windows a directory may have a
5811		trailing backslash, remove it if you put a comma after it.
5812		If the expansion fails for one of the directories, there is no
5813		error message.
5814
5815		Unless the optional {nosuf} argument is given and is |TRUE|,
5816		the 'suffixes' and 'wildignore' options apply: Names matching
5817		one of the patterns in 'wildignore' will be skipped and
5818		'suffixes' affect the ordering of matches.
5819
5820		When {list} is present and it is |TRUE| the result is a List
5821		with all matching files. The advantage of using a List is, you
5822		also get filenames containing newlines correctly. Otherwise
5823		the result is a String and when there are several matches,
5824		they are separated by <NL> characters.  Example: >
5825			:echo globpath(&rtp, "syntax/c.vim", 0, 1)
5826<
5827		{alllinks} is used as with |glob()|.
5828
5829		The "**" item can be used to search in a directory tree.
5830		For example, to find all "README.txt" files in the directories
5831		in 'runtimepath' and below: >
5832			:echo globpath(&rtp, "**/README.txt")
5833<		Upwards search and limiting the depth of "**" is not
5834		supported, thus using 'path' will not always work properly.
5835
5836		Can also be used as a |method|, the base is passed as the
5837		second argument: >
5838			GetExpr()->globpath(&rtp)
5839<
5840							*has()*
5841has({feature} [, {check}])
5842		When {check} is omitted or is zero: The result is a Number,
5843		which is 1 if the feature {feature} is supported, zero
5844		otherwise.  The {feature} argument is a string, case is
5845		ignored.  See |feature-list| below.
5846
5847		When {check} is present and not zero: The result is a Number,
5848		which is 1 if the feature {feature} could ever be supported,
5849		zero otherwise.  This is useful to check for a typo in
5850		{feature} and to detect dead code.  Keep in mind that an older
5851		Vim version will not know about a feature added later and
5852		features that have been abandoned will not be know by the
5853		current Vim version.
5854
5855		Also see |exists()|.
5856
5857		Note that to skip code that has a syntax error when the
5858		feature is not available, Vim may skip the rest of the line
5859		and miss a following `endif`.  Therefore put the `endif` on a
5860		separate line: >
5861			if has('feature')
5862			  let x = this->breaks->without->the->feature
5863			endif
5864<		If the `endif` would be moved to the second line as "| endif" it
5865		would not be found.
5866
5867
5868has_key({dict}, {key})					*has_key()*
5869		The result is a Number, which is 1 if |Dictionary| {dict} has
5870		an entry with key {key}.  Zero otherwise.
5871
5872		Can also be used as a |method|: >
5873			mydict->has_key(key)
5874
5875haslocaldir([{winnr} [, {tabnr}]])			*haslocaldir()*
5876		The result is a Number:
5877		    1   when the window has set a local directory via |:lcd|
5878		    2   when the tab-page has set a local directory via |:tcd|
5879		    0   otherwise.
5880
5881		Without arguments use the current window.
5882		With {winnr} use this window in the current tab page.
5883		With {winnr} and {tabnr} use the window in the specified tab
5884		page.
5885		{winnr} can be the window number or the |window-ID|.
5886		If {winnr} is -1 it is ignored and only the tabpage is used.
5887		Return 0 if the arguments are invalid.
5888		Examples: >
5889			if haslocaldir() == 1
5890			  " window local directory case
5891			elseif haslocaldir() == 2
5892			  " tab-local directory case
5893			else
5894			  " global directory case
5895			endif
5896
5897			" current window
5898			:echo haslocaldir()
5899			:echo haslocaldir(0)
5900			:echo haslocaldir(0, 0)
5901			" window n in current tab page
5902			:echo haslocaldir(n)
5903			:echo haslocaldir(n, 0)
5904			" window n in tab page m
5905			:echo haslocaldir(n, m)
5906			" tab page m
5907			:echo haslocaldir(-1, m)
5908<
5909		Can also be used as a |method|: >
5910			GetWinnr()->haslocaldir()
5911
5912hasmapto({what} [, {mode} [, {abbr}]])			*hasmapto()*
5913		The result is a Number, which is 1 if there is a mapping that
5914		contains {what} in somewhere in the rhs (what it is mapped to)
5915		and this mapping exists in one of the modes indicated by
5916		{mode}.
5917		When {abbr} is there and it is |TRUE| use abbreviations
5918		instead of mappings.  Don't forget to specify Insert and/or
5919		Command-line mode.
5920		Both the global mappings and the mappings local to the current
5921		buffer are checked for a match.
5922		If no matching mapping is found 0 is returned.
5923		The following characters are recognized in {mode}:
5924			n	Normal mode
5925			v	Visual and Select mode
5926			x	Visual mode
5927			s	Select mode
5928			o	Operator-pending mode
5929			i	Insert mode
5930			l	Language-Argument ("r", "f", "t", etc.)
5931			c	Command-line mode
5932		When {mode} is omitted, "nvo" is used.
5933
5934		This function is useful to check if a mapping already exists
5935		to a function in a Vim script.  Example: >
5936			:if !hasmapto('\ABCdoit')
5937			:   map <Leader>d \ABCdoit
5938			:endif
5939<		This installs the mapping to "\ABCdoit" only if there isn't
5940		already a mapping to "\ABCdoit".
5941
5942		Can also be used as a |method|: >
5943			GetRHS()->hasmapto()
5944
5945histadd({history}, {item})				*histadd()*
5946		Add the String {item} to the history {history} which can be
5947		one of:					*hist-names*
5948			"cmd"	 or ":"	  command line history
5949			"search" or "/"   search pattern history
5950			"expr"	 or "="   typed expression history
5951			"input"  or "@"	  input line history
5952			"debug"  or ">"   debug command history
5953			empty		  the current or last used history
5954		The {history} string does not need to be the whole name, one
5955		character is sufficient.
5956		If {item} does already exist in the history, it will be
5957		shifted to become the newest entry.
5958		The result is a Number: 1 if the operation was successful,
5959		otherwise 0 is returned.
5960
5961		Example: >
5962			:call histadd("input", strftime("%Y %b %d"))
5963			:let date=input("Enter date: ")
5964<		This function is not available in the |sandbox|.
5965
5966		Can also be used as a |method|, the base is passed as the
5967		second argument: >
5968			GetHistory()->histadd('search')
5969
5970histdel({history} [, {item}])				*histdel()*
5971		Clear {history}, i.e. delete all its entries.  See |hist-names|
5972		for the possible values of {history}.
5973
5974		If the parameter {item} evaluates to a String, it is used as a
5975		regular expression.  All entries matching that expression will
5976		be removed from the history (if there are any).
5977		Upper/lowercase must match, unless "\c" is used |/\c|.
5978		If {item} evaluates to a Number, it will be interpreted as
5979		an index, see |:history-indexing|.  The respective entry will
5980		be removed if it exists.
5981
5982		The result is a Number: 1 for a successful operation,
5983		otherwise 0 is returned.
5984
5985		Examples:
5986		Clear expression register history: >
5987			:call histdel("expr")
5988<
5989		Remove all entries starting with "*" from the search history: >
5990			:call histdel("/", '^\*')
5991<
5992		The following three are equivalent: >
5993			:call histdel("search", histnr("search"))
5994			:call histdel("search", -1)
5995			:call histdel("search", '^'.histget("search", -1).'$')
5996<
5997		To delete the last search pattern and use the last-but-one for
5998		the "n" command and 'hlsearch': >
5999			:call histdel("search", -1)
6000			:let @/ = histget("search", -1)
6001<
6002		Can also be used as a |method|: >
6003			GetHistory()->histdel()
6004
6005histget({history} [, {index}])				*histget()*
6006		The result is a String, the entry with Number {index} from
6007		{history}.  See |hist-names| for the possible values of
6008		{history}, and |:history-indexing| for {index}.  If there is
6009		no such entry, an empty String is returned.  When {index} is
6010		omitted, the most recent item from the history is used.
6011
6012		Examples:
6013		Redo the second last search from history. >
6014			:execute '/' . histget("search", -2)
6015
6016<		Define an Ex command ":H {num}" that supports re-execution of
6017		the {num}th entry from the output of |:history|. >
6018			:command -nargs=1 H execute histget("cmd", 0+<args>)
6019<
6020		Can also be used as a |method|: >
6021			GetHistory()->histget()
6022
6023histnr({history})					*histnr()*
6024		The result is the Number of the current entry in {history}.
6025		See |hist-names| for the possible values of {history}.
6026		If an error occurred, -1 is returned.
6027
6028		Example: >
6029			:let inp_index = histnr("expr")
6030
6031<		Can also be used as a |method|: >
6032			GetHistory()->histnr()
6033<
6034hlexists({name})					*hlexists()*
6035		The result is a Number, which is non-zero if a highlight group
6036		called {name} exists.  This is when the group has been
6037		defined in some way.  Not necessarily when highlighting has
6038		been defined for it, it may also have been used for a syntax
6039		item.
6040							*highlight_exists()*
6041		Obsolete name: highlight_exists().
6042
6043		Can also be used as a |method|: >
6044			GetName()->hlexists()
6045<
6046							*hlID()*
6047hlID({name})	The result is a Number, which is the ID of the highlight group
6048		with name {name}.  When the highlight group doesn't exist,
6049		zero is returned.
6050		This can be used to retrieve information about the highlight
6051		group.  For example, to get the background color of the
6052		"Comment" group: >
6053	:echo synIDattr(synIDtrans(hlID("Comment")), "bg")
6054<							*highlightID()*
6055		Obsolete name: highlightID().
6056
6057		Can also be used as a |method|: >
6058			GetName()->hlID()
6059
6060hostname()						*hostname()*
6061		The result is a String, which is the name of the machine on
6062		which Vim is currently running.  Machine names greater than
6063		256 characters long are truncated.
6064
6065iconv({expr}, {from}, {to})				*iconv()*
6066		The result is a String, which is the text {expr} converted
6067		from encoding {from} to encoding {to}.
6068		When the conversion completely fails an empty string is
6069		returned.  When some characters could not be converted they
6070		are replaced with "?".
6071		The encoding names are whatever the iconv() library function
6072		can accept, see ":!man 3 iconv".
6073		Most conversions require Vim to be compiled with the |+iconv|
6074		feature.  Otherwise only UTF-8 to latin1 conversion and back
6075		can be done.
6076		This can be used to display messages with special characters,
6077		no matter what 'encoding' is set to.  Write the message in
6078		UTF-8 and use: >
6079			echo iconv(utf8_str, "utf-8", &enc)
6080<		Note that Vim uses UTF-8 for all Unicode encodings, conversion
6081		from/to UCS-2 is automatically changed to use UTF-8.  You
6082		cannot use UCS-2 in a string anyway, because of the NUL bytes.
6083
6084		Can also be used as a |method|: >
6085			GetText()->iconv('latin1', 'utf-8')
6086<
6087							*indent()*
6088indent({lnum})	The result is a Number, which is indent of line {lnum} in the
6089		current buffer.  The indent is counted in spaces, the value
6090		of 'tabstop' is relevant.  {lnum} is used just like in
6091		|getline()|.
6092		When {lnum} is invalid -1 is returned.
6093
6094		Can also be used as a |method|: >
6095			GetLnum()->indent()
6096
6097index({object}, {expr} [, {start} [, {ic}]])			*index()*
6098		If {object} is a |List| return the lowest index where the item
6099		has a value equal to {expr}.  There is no automatic
6100		conversion, so the String "4" is different from the Number 4.
6101		And the number 4 is different from the Float 4.0.  The value
6102		of 'ignorecase' is not used here, case always matters.
6103
6104		If {object} is |Blob| return the lowest index where the byte
6105		value is equal to {expr}.
6106
6107		If {start} is given then start looking at the item with index
6108		{start} (may be negative for an item relative to the end).
6109		When {ic} is given and it is |TRUE|, ignore case.  Otherwise
6110		case must match.
6111		-1 is returned when {expr} is not found in {object}.
6112		Example: >
6113			:let idx = index(words, "the")
6114			:if index(numbers, 123) >= 0
6115
6116<		Can also be used as a |method|: >
6117			GetObject()->index(what)
6118
6119input({prompt} [, {text} [, {completion}]])		*input()*
6120		The result is a String, which is whatever the user typed on
6121		the command-line.  The {prompt} argument is either a prompt
6122		string, or a blank string (for no prompt).  A '\n' can be used
6123		in the prompt to start a new line.
6124		The highlighting set with |:echohl| is used for the prompt.
6125		The input is entered just like a command-line, with the same
6126		editing commands and mappings.  There is a separate history
6127		for lines typed for input().
6128		Example: >
6129			:if input("Coffee or beer? ") == "beer"
6130			:  echo "Cheers!"
6131			:endif
6132<
6133		If the optional {text} argument is present and not empty, this
6134		is used for the default reply, as if the user typed this.
6135		Example: >
6136			:let color = input("Color? ", "white")
6137
6138<		The optional {completion} argument specifies the type of
6139		completion supported for the input.  Without it completion is
6140		not performed.  The supported completion types are the same as
6141		that can be supplied to a user-defined command using the
6142		"-complete=" argument.  Refer to |:command-completion| for
6143		more information.  Example: >
6144			let fname = input("File: ", "", "file")
6145<
6146		NOTE: This function must not be used in a startup file, for
6147		the versions that only run in GUI mode (e.g., the Win32 GUI).
6148		Note: When input() is called from within a mapping it will
6149		consume remaining characters from that mapping, because a
6150		mapping is handled like the characters were typed.
6151		Use |inputsave()| before input() and |inputrestore()|
6152		after input() to avoid that.  Another solution is to avoid
6153		that further characters follow in the mapping, e.g., by using
6154		|:execute| or |:normal|.
6155
6156		Example with a mapping: >
6157			:nmap \x :call GetFoo()<CR>:exe "/" . Foo<CR>
6158			:function GetFoo()
6159			:  call inputsave()
6160			:  let g:Foo = input("enter search pattern: ")
6161			:  call inputrestore()
6162			:endfunction
6163
6164<		Can also be used as a |method|: >
6165			GetPrompt()->input()
6166
6167inputdialog({prompt} [, {text} [, {cancelreturn}]])		*inputdialog()*
6168		Like |input()|, but when the GUI is running and text dialogs
6169		are supported, a dialog window pops up to input the text.
6170		Example: >
6171		   :let n = inputdialog("value for shiftwidth", shiftwidth())
6172		   :if n != ""
6173		   :  let &sw = n
6174		   :endif
6175<		When the dialog is cancelled {cancelreturn} is returned.  When
6176		omitted an empty string is returned.
6177		Hitting <Enter> works like pressing the OK button.  Hitting
6178		<Esc> works like pressing the Cancel button.
6179		NOTE: Command-line completion is not supported.
6180
6181		Can also be used as a |method|: >
6182			GetPrompt()->inputdialog()
6183
6184inputlist({textlist})					*inputlist()*
6185		{textlist} must be a |List| of strings.  This |List| is
6186		displayed, one string per line.  The user will be prompted to
6187		enter a number, which is returned.
6188		The user can also select an item by clicking on it with the
6189		mouse.  For the first string 0 is returned.  When clicking
6190		above the first item a negative number is returned.  When
6191		clicking on the prompt one more than the length of {textlist}
6192		is returned.
6193		Make sure {textlist} has less than 'lines' entries, otherwise
6194		it won't work.  It's a good idea to put the entry number at
6195		the start of the string.  And put a prompt in the first item.
6196		Example: >
6197			let color = inputlist(['Select color:', '1. red',
6198				\ '2. green', '3. blue'])
6199
6200<		Can also be used as a |method|: >
6201			GetChoices()->inputlist()
6202
6203inputrestore()						*inputrestore()*
6204		Restore typeahead that was saved with a previous |inputsave()|.
6205		Should be called the same number of times inputsave() is
6206		called.  Calling it more often is harmless though.
6207		Returns 1 when there is nothing to restore, 0 otherwise.
6208
6209inputsave()						*inputsave()*
6210		Preserve typeahead (also from mappings) and clear it, so that
6211		a following prompt gets input from the user.  Should be
6212		followed by a matching inputrestore() after the prompt.  Can
6213		be used several times, in which case there must be just as
6214		many inputrestore() calls.
6215		Returns 1 when out of memory, 0 otherwise.
6216
6217inputsecret({prompt} [, {text}])			*inputsecret()*
6218		This function acts much like the |input()| function with but
6219		two exceptions:
6220		a) the user's response will be displayed as a sequence of
6221		asterisks ("*") thereby keeping the entry secret, and
6222		b) the user's response will not be recorded on the input
6223		|history| stack.
6224		The result is a String, which is whatever the user actually
6225		typed on the command-line in response to the issued prompt.
6226		NOTE: Command-line completion is not supported.
6227
6228		Can also be used as a |method|: >
6229			GetPrompt()->inputsecret()
6230
6231insert({object}, {item} [, {idx}])			*insert()*
6232		When {object} is a |List| or a |Blob| insert {item} at the start
6233		of it.
6234
6235		If {idx} is specified insert {item} before the item with index
6236		{idx}.  If {idx} is zero it goes before the first item, just
6237		like omitting {idx}.  A negative {idx} is also possible, see
6238		|list-index|.  -1 inserts just before the last item.
6239
6240		Returns the resulting |List| or |Blob|.  Examples: >
6241			:let mylist = insert([2, 3, 5], 1)
6242			:call insert(mylist, 4, -1)
6243			:call insert(mylist, 6, len(mylist))
6244<		The last example can be done simpler with |add()|.
6245		Note that when {item} is a |List| it is inserted as a single
6246		item.  Use |extend()| to concatenate |Lists|.
6247
6248		Can also be used as a |method|: >
6249			mylist->insert(item)
6250
6251interrupt()						*interrupt()*
6252		Interrupt script execution.  It works more or less like the
6253		user typing CTRL-C, most commands won't execute and control
6254		returns to the user.  This is useful to abort execution
6255		from lower down, e.g. in an autocommand.  Example: >
6256		:function s:check_typoname(file)
6257		:   if fnamemodify(a:file, ':t') == '['
6258		:       echomsg 'Maybe typo'
6259		:       call interrupt()
6260		:   endif
6261		:endfunction
6262		:au BufWritePre * call s:check_typoname(expand('<amatch>'))
6263
6264invert({expr})						*invert()*
6265		Bitwise invert.  The argument is converted to a number.  A
6266		List, Dict or Float argument causes an error.  Example: >
6267			:let bits = invert(bits)
6268<		Can also be used as a |method|: >
6269			:let bits = bits->invert()
6270
6271isdirectory({directory})				*isdirectory()*
6272		The result is a Number, which is |TRUE| when a directory
6273		with the name {directory} exists.  If {directory} doesn't
6274		exist, or isn't a directory, the result is |FALSE|.  {directory}
6275		is any expression, which is used as a String.
6276
6277		Can also be used as a |method|: >
6278			GetName()->isdirectory()
6279
6280isinf({expr})						*isinf()*
6281		Return 1 if {expr} is a positive infinity, or -1 a negative
6282		infinity, otherwise 0. >
6283			:echo isinf(1.0 / 0.0)
6284<			1 >
6285			:echo isinf(-1.0 / 0.0)
6286<			-1
6287
6288		Can also be used as a |method|: >
6289			Compute()->isinf()
6290<
6291		{only available when compiled with the |+float| feature}
6292
6293islocked({expr})					*islocked()* *E786*
6294		The result is a Number, which is |TRUE| when {expr} is the
6295		name of a locked variable.
6296		{expr} must be the name of a variable, |List| item or
6297		|Dictionary| entry, not the variable itself!  Example: >
6298			:let alist = [0, ['a', 'b'], 2, 3]
6299			:lockvar 1 alist
6300			:echo islocked('alist')		" 1
6301			:echo islocked('alist[1]')	" 0
6302
6303<		When {expr} is a variable that does not exist you get an error
6304		message.  Use |exists()| to check for existence.
6305
6306		Can also be used as a |method|: >
6307			GetName()->islocked()
6308
6309isnan({expr})						*isnan()*
6310		Return |TRUE| if {expr} is a float with value NaN. >
6311			echo isnan(0.0 / 0.0)
6312<			1
6313
6314		Can also be used as a |method|: >
6315			Compute()->isnan()
6316<
6317		{only available when compiled with the |+float| feature}
6318
6319items({dict})						*items()*
6320		Return a |List| with all the key-value pairs of {dict}.  Each
6321		|List| item is a list with two items: the key of a {dict}
6322		entry and the value of this entry.  The |List| is in arbitrary
6323		order.  Also see |keys()| and |values()|.
6324		Example: >
6325			for [key, value] in items(mydict)
6326			   echo key . ': ' . value
6327			endfor
6328
6329<		Can also be used as a |method|: >
6330			mydict->items()
6331
6332job_ functions are documented here: |job-functions-details|
6333
6334
6335join({list} [, {sep}])					*join()*
6336		Join the items in {list} together into one String.
6337		When {sep} is specified it is put in between the items.  If
6338		{sep} is omitted a single space is used.
6339		Note that {sep} is not added at the end.  You might want to
6340		add it there too: >
6341			let lines = join(mylist, "\n") . "\n"
6342<		String items are used as-is.  |Lists| and |Dictionaries| are
6343		converted into a string like with |string()|.
6344		The opposite function is |split()|.
6345
6346		Can also be used as a |method|: >
6347			mylist->join()
6348
6349js_decode({string})					*js_decode()*
6350		This is similar to |json_decode()| with these differences:
6351		- Object key names do not have to be in quotes.
6352		- Strings can be in single quotes.
6353		- Empty items in an array (between two commas) are allowed and
6354		  result in v:none items.
6355
6356		Can also be used as a |method|: >
6357			ReadObject()->js_decode()
6358
6359js_encode({expr})					*js_encode()*
6360		This is similar to |json_encode()| with these differences:
6361		- Object key names are not in quotes.
6362		- v:none items in an array result in an empty item between
6363		  commas.
6364		For example, the Vim object:
6365			[1,v:none,{"one":1},v:none] ~
6366		Will be encoded as:
6367			[1,,{one:1},,] ~
6368		While json_encode() would produce:
6369			[1,null,{"one":1},null] ~
6370		This encoding is valid for JavaScript. It is more efficient
6371		than JSON, especially when using an array with optional items.
6372
6373		Can also be used as a |method|: >
6374			GetObject()->js_encode()
6375
6376json_decode({string})					*json_decode()*
6377		This parses a JSON formatted string and returns the equivalent
6378		in Vim values.  See |json_encode()| for the relation between
6379		JSON and Vim values.
6380		The decoding is permissive:
6381		- A trailing comma in an array and object is ignored, e.g.
6382		  "[1, 2, ]" is the same as "[1, 2]".
6383		- Integer keys are accepted in objects, e.g. {1:2} is the
6384		  same as {"1":2}.
6385		- More floating point numbers are recognized, e.g. "1." for
6386		  "1.0", or "001.2" for "1.2". Special floating point values
6387		  "Infinity", "-Infinity" and "NaN" (capitalization ignored)
6388		  are accepted.
6389		- Leading zeroes in integer numbers are ignored, e.g. "012"
6390		  for "12" or "-012" for "-12".
6391		- Capitalization is ignored in literal names null, true or
6392		  false, e.g. "NULL" for "null", "True" for "true".
6393		- Control characters U+0000 through U+001F which are not
6394		  escaped in strings are accepted, e.g. "	" (tab
6395		  character in string) for "\t".
6396		- An empty JSON expression or made of only spaces is accepted
6397		  and results in v:none.
6398		- Backslash in an invalid 2-character sequence escape is
6399		  ignored, e.g. "\a" is decoded as "a".
6400		- A correct surrogate pair in JSON strings should normally be
6401		  a 12 character sequence such as "\uD834\uDD1E", but
6402		  json_decode() silently accepts truncated surrogate pairs
6403		  such as "\uD834" or "\uD834\u"
6404								*E938*
6405		A duplicate key in an object, valid in rfc7159, is not
6406		accepted by json_decode() as the result must be a valid Vim
6407		type, e.g. this fails: {"a":"b", "a":"c"}
6408
6409		Can also be used as a |method|: >
6410			ReadObject()->json_decode()
6411
6412json_encode({expr})					*json_encode()*
6413		Encode {expr} as JSON and return this as a string.
6414		The encoding is specified in:
6415		https://tools.ietf.org/html/rfc7159.html
6416		Vim values are converted as follows:
6417		   |Number|		decimal number
6418		   |Float|		floating point number
6419		   Float nan		"NaN"
6420		   Float inf		"Infinity"
6421		   Float -inf		"-Infinity"
6422		   |String|		in double quotes (possibly null)
6423		   |Funcref|		not possible, error
6424		   |List|		as an array (possibly null); when
6425					used recursively: []
6426		   |Dict|		as an object (possibly null); when
6427					used recursively: {}
6428		   |Blob|		as an array of the individual bytes
6429		   v:false		"false"
6430		   v:true		"true"
6431		   v:none		"null"
6432		   v:null		"null"
6433		Note that NaN and Infinity are passed on as values.  This is
6434		missing in the JSON standard, but several implementations do
6435		allow it.  If not then you will get an error.
6436
6437		Can also be used as a |method|: >
6438			GetObject()->json_encode()
6439
6440keys({dict})						*keys()*
6441		Return a |List| with all the keys of {dict}.  The |List| is in
6442		arbitrary order.  Also see |items()| and |values()|.
6443
6444		Can also be used as a |method|: >
6445			mydict->keys()
6446
6447<							*len()* *E701*
6448len({expr})	The result is a Number, which is the length of the argument.
6449		When {expr} is a String or a Number the length in bytes is
6450		used, as with |strlen()|.
6451		When {expr} is a |List| the number of items in the |List| is
6452		returned.
6453		When {expr} is a |Blob| the number of bytes is returned.
6454		When {expr} is a |Dictionary| the number of entries in the
6455		|Dictionary| is returned.
6456		Otherwise an error is given.
6457
6458		Can also be used as a |method|: >
6459			mylist->len()
6460
6461<						*libcall()* *E364* *E368*
6462libcall({libname}, {funcname}, {argument})
6463		Call function {funcname} in the run-time library {libname}
6464		with single argument {argument}.
6465		This is useful to call functions in a library that you
6466		especially made to be used with Vim.  Since only one argument
6467		is possible, calling standard library functions is rather
6468		limited.
6469		The result is the String returned by the function.  If the
6470		function returns NULL, this will appear as an empty string ""
6471		to Vim.
6472		If the function returns a number, use libcallnr()!
6473		If {argument} is a number, it is passed to the function as an
6474		int; if {argument} is a string, it is passed as a
6475		null-terminated string.
6476		This function will fail in |restricted-mode|.
6477
6478		libcall() allows you to write your own 'plug-in' extensions to
6479		Vim without having to recompile the program.  It is NOT a
6480		means to call system functions!  If you try to do so Vim will
6481		very probably crash.
6482
6483		For Win32, the functions you write must be placed in a DLL
6484		and use the normal C calling convention (NOT Pascal which is
6485		used in Windows System DLLs).  The function must take exactly
6486		one parameter, either a character pointer or a long integer,
6487		and must return a character pointer or NULL.  The character
6488		pointer returned must point to memory that will remain valid
6489		after the function has returned (e.g. in static data in the
6490		DLL).  If it points to allocated memory, that memory will
6491		leak away.  Using a static buffer in the function should work,
6492		it's then freed when the DLL is unloaded.
6493
6494		WARNING: If the function returns a non-valid pointer, Vim may
6495		crash!	This also happens if the function returns a number,
6496		because Vim thinks it's a pointer.
6497		For Win32 systems, {libname} should be the filename of the DLL
6498		without the ".DLL" suffix.  A full path is only required if
6499		the DLL is not in the usual places.
6500		For Unix: When compiling your own plugins, remember that the
6501		object code must be compiled as position-independent ('PIC').
6502		{only in Win32 and some Unix versions, when the |+libcall|
6503		feature is present}
6504		Examples: >
6505			:echo libcall("libc.so", "getenv", "HOME")
6506
6507<		Can also be used as a |method|, the base is passed as the
6508		third argument: >
6509			GetValue()->libcall("libc.so", "getenv")
6510<
6511							*libcallnr()*
6512libcallnr({libname}, {funcname}, {argument})
6513		Just like |libcall()|, but used for a function that returns an
6514		int instead of a string.
6515		{only in Win32 on some Unix versions, when the |+libcall|
6516		feature is present}
6517		Examples: >
6518			:echo libcallnr("/usr/lib/libc.so", "getpid", "")
6519			:call libcallnr("libc.so", "printf", "Hello World!\n")
6520			:call libcallnr("libc.so", "sleep", 10)
6521<
6522		Can also be used as a |method|, the base is passed as the
6523		third argument: >
6524			GetValue()->libcallnr("libc.so", "printf")
6525<
6526
6527line({expr} [, {winid}])				*line()*
6528		The result is a Number, which is the line number of the file
6529		position given with {expr}.  The accepted positions are:
6530		    .	    the cursor position
6531		    $	    the last line in the current buffer
6532		    'x	    position of mark x (if the mark is not set, 0 is
6533			    returned)
6534		    w0	    first line visible in current window (one if the
6535			    display isn't updated, e.g. in silent Ex mode)
6536		    w$	    last line visible in current window (this is one
6537			    less than "w0" if no lines are visible)
6538		    v	    In Visual mode: the start of the Visual area (the
6539			    cursor is the end).  When not in Visual mode
6540			    returns the cursor position.  Differs from |'<| in
6541			    that it's updated right away.
6542		Note that a mark in another file can be used.  The line number
6543		then applies to another buffer.
6544		To get the column number use |col()|.  To get both use
6545		|getpos()|.
6546		With the optional {winid} argument the values are obtained for
6547		that window instead of the current window.
6548		Examples: >
6549			line(".")		line number of the cursor
6550			line(".", winid)	idem, in window "winid"
6551			line("'t")		line number of mark t
6552			line("'" . marker)	line number of mark marker
6553<
6554		To jump to the last known position when opening a file see
6555		|last-position-jump|.
6556
6557		Can also be used as a |method|: >
6558			GetValue()->line()
6559
6560line2byte({lnum})					*line2byte()*
6561		Return the byte count from the start of the buffer for line
6562		{lnum}.  This includes the end-of-line character, depending on
6563		the 'fileformat' option for the current buffer.  The first
6564		line returns 1. 'encoding' matters, 'fileencoding' is ignored.
6565		This can also be used to get the byte count for the line just
6566		below the last line: >
6567			line2byte(line("$") + 1)
6568<		This is the buffer size plus one.  If 'fileencoding' is empty
6569		it is the file size plus one.
6570		When {lnum} is invalid, or the |+byte_offset| feature has been
6571		disabled at compile time, -1 is returned.
6572		Also see |byte2line()|, |go| and |:goto|.
6573
6574		Can also be used as a |method|: >
6575			GetLnum()->line2byte()
6576
6577lispindent({lnum})					*lispindent()*
6578		Get the amount of indent for line {lnum} according the lisp
6579		indenting rules, as with 'lisp'.
6580		The indent is counted in spaces, the value of 'tabstop' is
6581		relevant.  {lnum} is used just like in |getline()|.
6582		When {lnum} is invalid or Vim was not compiled the
6583		|+lispindent| feature, -1 is returned.
6584
6585		Can also be used as a |method|: >
6586			GetLnum()->lispindent()
6587
6588list2str({list} [, {utf8}])				*list2str()*
6589		Convert each number in {list} to a character string can
6590		concatenate them all.  Examples: >
6591			list2str([32])		returns " "
6592			list2str([65, 66, 67])	returns "ABC"
6593<		The same can be done (slowly) with: >
6594			join(map(list, {nr, val -> nr2char(val)}), '')
6595<		|str2list()| does the opposite.
6596
6597		When {utf8} is omitted or zero, the current 'encoding' is used.
6598		With {utf8} is 1, always return utf-8 characters.
6599		With utf-8 composing characters work as expected: >
6600			list2str([97, 769])	returns "á"
6601<
6602		Can also be used as a |method|: >
6603			GetList()->list2str()
6604
6605listener_add({callback} [, {buf}])			*listener_add()*
6606		Add a callback function that will be invoked when changes have
6607		been made to buffer {buf}.
6608		{buf} refers to a buffer name or number. For the accepted
6609		values, see |bufname()|.  When {buf} is omitted the current
6610		buffer is used.
6611		Returns a unique ID that can be passed to |listener_remove()|.
6612
6613		The {callback} is invoked with five arguments:
6614		    a:bufnr	the buffer that was changed
6615		    a:start	first changed line number
6616		    a:end	first line number below the change
6617		    a:added	number of lines added, negative if lines were
6618				deleted
6619		    a:changes	a List of items with details about the changes
6620
6621		Example: >
6622	    func Listener(bufnr, start, end, added, changes)
6623	      echo 'lines ' .. a:start .. ' until ' .. a:end .. ' changed'
6624	    endfunc
6625	    call listener_add('Listener', bufnr)
6626
6627<		The List cannot be changed.  Each item in a:changes is a
6628		dictionary with these entries:
6629		    lnum	the first line number of the change
6630		    end		the first line below the change
6631		    added	number of lines added; negative if lines were
6632				deleted
6633		    col		first column in "lnum" that was affected by
6634				the change; one if unknown or the whole line
6635				was affected; this is a byte index, first
6636				character has a value of one.
6637		When lines are inserted the values are:
6638		    lnum	line above which the new line is added
6639		    end		equal to "lnum"
6640		    added	number of lines inserted
6641		    col		1
6642		When lines are deleted the values are:
6643		    lnum	the first deleted line
6644		    end		the line below the first deleted line, before
6645				the deletion was done
6646		    added	negative, number of lines deleted
6647		    col		1
6648		When lines are changed:
6649		    lnum	the first changed line
6650		    end		the line below the last changed line
6651		    added	0
6652		    col		first column with a change or 1
6653
6654		The entries are in the order the changes were made, thus the
6655		most recent change is at the end.  The line numbers are valid
6656		when the callback is invoked, but later changes may make them
6657		invalid, thus keeping a copy for later might not work.
6658
6659		The {callback} is invoked just before the screen is updated,
6660		when |listener_flush()| is called or when a change is being
6661		made that changes the line count in a way it causes a line
6662		number in the list of changes to become invalid.
6663
6664		The {callback} is invoked with the text locked, see
6665		|textlock|.  If you do need to make changes to the buffer, use
6666		a timer to do this later |timer_start()|.
6667
6668		The {callback} is not invoked when the buffer is first loaded.
6669		Use the |BufReadPost| autocmd event to handle the initial text
6670		of a buffer.
6671		The {callback} is also not invoked when the buffer is
6672		unloaded, use the |BufUnload| autocmd event for that.
6673
6674		Can also be used as a |method|, the base is passed as the
6675		second argument: >
6676			GetBuffer()->listener_add(callback)
6677
6678listener_flush([{buf}])					*listener_flush()*
6679		Invoke listener callbacks for buffer {buf}.  If there are no
6680		pending changes then no callbacks are invoked.
6681
6682		{buf} refers to a buffer name or number. For the accepted
6683		values, see |bufname()|.  When {buf} is omitted the current
6684		buffer is used.
6685
6686		Can also be used as a |method|: >
6687			GetBuffer()->listener_flush()
6688
6689listener_remove({id})					*listener_remove()*
6690		Remove a listener previously added with listener_add().
6691		Returns zero when {id} could not be found, one when {id} was
6692		removed.
6693
6694		Can also be used as a |method|: >
6695			GetListenerId()->listener_remove()
6696
6697localtime()						*localtime()*
6698		Return the current time, measured as seconds since 1st Jan
6699		1970.  See also |strftime()|, |strptime()| and |getftime()|.
6700
6701
6702log({expr})						*log()*
6703		Return the natural logarithm (base e) of {expr} as a |Float|.
6704		{expr} must evaluate to a |Float| or a |Number| in the range
6705		(0, inf].
6706		Examples: >
6707			:echo log(10)
6708<			2.302585 >
6709			:echo log(exp(5))
6710<			5.0
6711
6712		Can also be used as a |method|: >
6713			Compute()->log()
6714<
6715		{only available when compiled with the |+float| feature}
6716
6717
6718log10({expr})						*log10()*
6719		Return the logarithm of Float {expr} to base 10 as a |Float|.
6720		{expr} must evaluate to a |Float| or a |Number|.
6721		Examples: >
6722			:echo log10(1000)
6723<			3.0 >
6724			:echo log10(0.01)
6725<			-2.0
6726
6727		Can also be used as a |method|: >
6728			Compute()->log10()
6729<
6730		{only available when compiled with the |+float| feature}
6731
6732luaeval({expr} [, {expr}])					*luaeval()*
6733		Evaluate Lua expression {expr} and return its result converted
6734		to Vim data structures. Second {expr} may hold additional
6735		argument accessible as _A inside first {expr}.
6736		Strings are returned as they are.
6737		Boolean objects are converted to numbers.
6738		Numbers are converted to |Float| values if vim was compiled
6739		with |+float| and to numbers otherwise.
6740		Dictionaries and lists obtained by vim.eval() are returned
6741		as-is.
6742		Other objects are returned as zero without any errors.
6743		See |lua-luaeval| for more details.
6744
6745		Can also be used as a |method|: >
6746			GetExpr()->luaeval()
6747
6748<		{only available when compiled with the |+lua| feature}
6749
6750map({expr1}, {expr2})					*map()*
6751		{expr1} must be a |List| or a |Dictionary|.
6752		Replace each item in {expr1} with the result of evaluating
6753		{expr2}.  {expr2} must be a |string| or |Funcref|.
6754
6755		If {expr2} is a |string|, inside {expr2} |v:val| has the value
6756		of the current item.  For a |Dictionary| |v:key| has the key
6757		of the current item and for a |List| |v:key| has the index of
6758		the current item.
6759		Example: >
6760			:call map(mylist, '"> " . v:val . " <"')
6761<		This puts "> " before and " <" after each item in "mylist".
6762
6763		Note that {expr2} is the result of an expression and is then
6764		used as an expression again.  Often it is good to use a
6765		|literal-string| to avoid having to double backslashes.  You
6766		still have to double ' quotes
6767
6768		If {expr2} is a |Funcref| it is called with two arguments:
6769			1. The key or the index of the current item.
6770			2. the value of the current item.
6771		The function must return the new value of the item. Example
6772		that changes each value by "key-value": >
6773			func KeyValue(key, val)
6774			  return a:key . '-' . a:val
6775			endfunc
6776			call map(myDict, function('KeyValue'))
6777<		It is shorter when using a |lambda|: >
6778			call map(myDict, {key, val -> key . '-' . val})
6779<		If you do not use "val" you can leave it out: >
6780			call map(myDict, {key -> 'item: ' . key})
6781<		If you do not use "key" you can use a short name: >
6782			call map(myDict, {_, val -> 'item: ' . val})
6783<
6784		The operation is done in-place.  If you want a |List| or
6785		|Dictionary| to remain unmodified make a copy first: >
6786			:let tlist = map(copy(mylist), ' v:val . "\t"')
6787
6788<		Returns {expr1}, the |List| or |Dictionary| that was filtered.
6789		When an error is encountered while evaluating {expr2} no
6790		further items in {expr1} are processed.  When {expr2} is a
6791		Funcref errors inside a function are ignored, unless it was
6792		defined with the "abort" flag.
6793
6794		Can also be used as a |method|: >
6795			mylist->map(expr2)
6796
6797maparg({name} [, {mode} [, {abbr} [, {dict}]]])			*maparg()*
6798		When {dict} is omitted or zero: Return the rhs of mapping
6799		{name} in mode {mode}.  The returned String has special
6800		characters translated like in the output of the ":map" command
6801		listing.
6802
6803		When there is no mapping for {name}, an empty String is
6804		returned.  When the mapping for {name} is empty, then "<Nop>"
6805		is returned.
6806
6807		The {name} can have special key names, like in the ":map"
6808		command.
6809
6810		{mode} can be one of these strings:
6811			"n"	Normal
6812			"v"	Visual (including Select)
6813			"o"	Operator-pending
6814			"i"	Insert
6815			"c"	Cmd-line
6816			"s"	Select
6817			"x"	Visual
6818			"l"	langmap |language-mapping|
6819			"t"	Terminal-Job
6820			""	Normal, Visual and Operator-pending
6821		When {mode} is omitted, the modes for "" are used.
6822
6823		When {abbr} is there and it is |TRUE| use abbreviations
6824		instead of mappings.
6825
6826		When {dict} is there and it is |TRUE| return a dictionary
6827		containing all the information of the mapping with the
6828		following items:
6829		  "lhs"	     The {lhs} of the mapping.
6830		  "rhs"	     The {rhs} of the mapping as typed.
6831		  "silent"   1 for a |:map-silent| mapping, else 0.
6832		  "noremap"  1 if the {rhs} of the mapping is not remappable.
6833		  "script"   1 if mapping was defined with <script>.
6834		  "expr"     1 for an expression mapping (|:map-<expr>|).
6835		  "buffer"   1 for a buffer local mapping (|:map-local|).
6836		  "mode"     Modes for which the mapping is defined. In
6837			     addition to the modes mentioned above, these
6838			     characters will be used:
6839			     " "     Normal, Visual and Operator-pending
6840			     "!"     Insert and Commandline mode
6841				     (|mapmode-ic|)
6842		  "sid"	     The script local ID, used for <sid> mappings
6843			     (|<SID>|).
6844		  "lnum"     The line number in "sid", zero if unknown.
6845		  "nowait"   Do not wait for other, longer mappings.
6846			     (|:map-<nowait>|).
6847
6848		The mappings local to the current buffer are checked first,
6849		then the global mappings.
6850		This function can be used to map a key even when it's already
6851		mapped, and have it do the original mapping too.  Sketch: >
6852			exe 'nnoremap <Tab> ==' . maparg('<Tab>', 'n')
6853
6854<		Can also be used as a |method|: >
6855			GetKey()->maparg('n')
6856
6857mapcheck({name} [, {mode} [, {abbr}]])			*mapcheck()*
6858		Check if there is a mapping that matches with {name} in mode
6859		{mode}.  See |maparg()| for {mode} and special names in
6860		{name}.
6861		When {abbr} is there and it is |TRUE| use abbreviations
6862		instead of mappings.
6863		A match happens with a mapping that starts with {name} and
6864		with a mapping which is equal to the start of {name}.
6865
6866			matches mapping "a"	"ab"	"abc" ~
6867		   mapcheck("a")	yes	yes	 yes
6868		   mapcheck("abc")	yes	yes	 yes
6869		   mapcheck("ax")	yes	no	 no
6870		   mapcheck("b")	no	no	 no
6871
6872		The difference with maparg() is that mapcheck() finds a
6873		mapping that matches with {name}, while maparg() only finds a
6874		mapping for {name} exactly.
6875		When there is no mapping that starts with {name}, an empty
6876		String is returned.  If there is one, the RHS of that mapping
6877		is returned.  If there are several mappings that start with
6878		{name}, the RHS of one of them is returned.  This will be
6879		"<Nop>" if the RHS is empty.
6880		The mappings local to the current buffer are checked first,
6881		then the global mappings.
6882		This function can be used to check if a mapping can be added
6883		without being ambiguous.  Example: >
6884	:if mapcheck("_vv") == ""
6885	:   map _vv :set guifont=7x13<CR>
6886	:endif
6887<		This avoids adding the "_vv" mapping when there already is a
6888		mapping for "_v" or for "_vvv".
6889
6890		Can also be used as a |method|: >
6891			GetKey()->mapcheck('n')
6892
6893match({expr}, {pat} [, {start} [, {count}]])			*match()*
6894		When {expr} is a |List| then this returns the index of the
6895		first item where {pat} matches.  Each item is used as a
6896		String, |Lists| and |Dictionaries| are used as echoed.
6897
6898		Otherwise, {expr} is used as a String.  The result is a
6899		Number, which gives the index (byte offset) in {expr} where
6900		{pat} matches.
6901
6902		A match at the first character or |List| item returns zero.
6903		If there is no match -1 is returned.
6904
6905		For getting submatches see |matchlist()|.
6906		Example: >
6907			:echo match("testing", "ing")	" results in 4
6908			:echo match([1, 'x'], '\a')	" results in 1
6909<		See |string-match| for how {pat} is used.
6910								*strpbrk()*
6911		Vim doesn't have a strpbrk() function.  But you can do: >
6912			:let sepidx = match(line, '[.,;: \t]')
6913<								*strcasestr()*
6914		Vim doesn't have a strcasestr() function.  But you can add
6915		"\c" to the pattern to ignore case: >
6916			:let idx = match(haystack, '\cneedle')
6917<
6918		If {start} is given, the search starts from byte index
6919		{start} in a String or item {start} in a |List|.
6920		The result, however, is still the index counted from the
6921		first character/item.  Example: >
6922			:echo match("testing", "ing", 2)
6923<		result is again "4". >
6924			:echo match("testing", "ing", 4)
6925<		result is again "4". >
6926			:echo match("testing", "t", 2)
6927<		result is "3".
6928		For a String, if {start} > 0 then it is like the string starts
6929		{start} bytes later, thus "^" will match at {start}.  Except
6930		when {count} is given, then it's like matches before the
6931		{start} byte are ignored (this is a bit complicated to keep it
6932		backwards compatible).
6933		For a String, if {start} < 0, it will be set to 0.  For a list
6934		the index is counted from the end.
6935		If {start} is out of range ({start} > strlen({expr}) for a
6936		String or {start} > len({expr}) for a |List|) -1 is returned.
6937
6938		When {count} is given use the {count}'th match.  When a match
6939		is found in a String the search for the next one starts one
6940		character further.  Thus this example results in 1: >
6941			echo match("testing", "..", 0, 2)
6942<		In a |List| the search continues in the next item.
6943		Note that when {count} is added the way {start} works changes,
6944		see above.
6945
6946		See |pattern| for the patterns that are accepted.
6947		The 'ignorecase' option is used to set the ignore-caseness of
6948		the pattern.  'smartcase' is NOT used.  The matching is always
6949		done like 'magic' is set and 'cpoptions' is empty.
6950		Note that a match at the start is preferred, thus when the
6951		pattern is using "*" (any number of matches) it tends to find
6952		zero matches at the start instead of a number of matches
6953		further down in the text.
6954
6955		Can also be used as a |method|: >
6956			GetList()->match('word')
6957<
6958				*matchadd()* *E798* *E799* *E801* *E957*
6959matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
6960		Defines a pattern to be highlighted in the current window (a
6961		"match").  It will be highlighted with {group}.  Returns an
6962		identification number (ID), which can be used to delete the
6963		match using |matchdelete()|.  The ID is bound to the window.
6964		Matching is case sensitive and magic, unless case sensitivity
6965		or magicness are explicitly overridden in {pattern}.  The
6966		'magic', 'smartcase' and 'ignorecase' options are not used.
6967		The "Conceal" value is special, it causes the match to be
6968		concealed.
6969
6970		The optional {priority} argument assigns a priority to the
6971		match.  A match with a high priority will have its
6972		highlighting overrule that of a match with a lower priority.
6973		A priority is specified as an integer (negative numbers are no
6974		exception).  If the {priority} argument is not specified, the
6975		default priority is 10.  The priority of 'hlsearch' is zero,
6976		hence all matches with a priority greater than zero will
6977		overrule it.  Syntax highlighting (see 'syntax') is a separate
6978		mechanism, and regardless of the chosen priority a match will
6979		always overrule syntax highlighting.
6980
6981		The optional {id} argument allows the request for a specific
6982		match ID.  If a specified ID is already taken, an error
6983		message will appear and the match will not be added.  An ID
6984		is specified as a positive integer (zero excluded).  IDs 1, 2
6985		and 3 are reserved for |:match|, |:2match| and |:3match|,
6986		respectively.  If the {id} argument is not specified or -1,
6987		|matchadd()| automatically chooses a free ID.
6988
6989		The optional {dict} argument allows for further custom
6990		values. Currently this is used to specify a match specific
6991		conceal character that will be shown for |hl-Conceal|
6992		highlighted matches. The dict can have the following members:
6993
6994			conceal	    Special character to show instead of the
6995				    match (only for |hl-Conceal| highlighted
6996				    matches, see |:syn-cchar|)
6997			window	    Instead of the current window use the
6998				    window with this number or window ID.
6999
7000		The number of matches is not limited, as it is the case with
7001		the |:match| commands.
7002
7003		Example: >
7004			:highlight MyGroup ctermbg=green guibg=green
7005			:let m = matchadd("MyGroup", "TODO")
7006<		Deletion of the pattern: >
7007			:call matchdelete(m)
7008
7009<		A list of matches defined by |matchadd()| and |:match| are
7010		available from |getmatches()|.  All matches can be deleted in
7011		one operation by |clearmatches()|.
7012
7013		Can also be used as a |method|: >
7014			GetGroup()->matchadd('TODO')
7015<
7016							*matchaddpos()*
7017matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
7018		Same as |matchadd()|, but requires a list of positions {pos}
7019		instead of a pattern. This command is faster than |matchadd()|
7020		because it does not require to handle regular expressions and
7021		sets buffer line boundaries to redraw screen. It is supposed
7022		to be used when fast match additions and deletions are
7023		required, for example to highlight matching parentheses.
7024
7025		The list {pos} can contain one of these items:
7026		- A number.  This whole line will be highlighted.  The first
7027		  line has number 1.
7028		- A list with one number, e.g., [23]. The whole line with this
7029		  number will be highlighted.
7030		- A list with two numbers, e.g., [23, 11]. The first number is
7031		  the line number, the second one is the column number (first
7032		  column is 1, the value must correspond to the byte index as
7033		  |col()| would return).  The character at this position will
7034		  be highlighted.
7035		- A list with three numbers, e.g., [23, 11, 3]. As above, but
7036		  the third number gives the length of the highlight in bytes.
7037
7038		The maximum number of positions is 8.
7039
7040		Example: >
7041			:highlight MyGroup ctermbg=green guibg=green
7042			:let m = matchaddpos("MyGroup", [[23, 24], 34])
7043<		Deletion of the pattern: >
7044			:call matchdelete(m)
7045
7046<		Matches added by |matchaddpos()| are returned by
7047		|getmatches()| with an entry "pos1", "pos2", etc., with the
7048		value a list like the {pos} item.
7049
7050		Can also be used as a |method|: >
7051			GetGroup()->matchaddpos([23, 11])
7052
7053matcharg({nr})							*matcharg()*
7054		Selects the {nr} match item, as set with a |:match|,
7055		|:2match| or |:3match| command.
7056		Return a |List| with two elements:
7057			The name of the highlight group used
7058			The pattern used.
7059		When {nr} is not 1, 2 or 3 returns an empty |List|.
7060		When there is no match item set returns ['', ''].
7061		This is useful to save and restore a |:match|.
7062		Highlighting matches using the |:match| commands are limited
7063		to three matches. |matchadd()| does not have this limitation.
7064
7065		Can also be used as a |method|: >
7066			GetMatch()->matcharg()
7067
7068matchdelete({id} [, {win})		       *matchdelete()* *E802* *E803*
7069		Deletes a match with ID {id} previously defined by |matchadd()|
7070		or one of the |:match| commands.  Returns 0 if successful,
7071		otherwise -1.  See example for |matchadd()|.  All matches can
7072		be deleted in one operation by |clearmatches()|.
7073		If {win} is specified, use the window with this number or
7074		window ID instead of the current window.
7075
7076		Can also be used as a |method|: >
7077			GetMatch()->matchdelete()
7078
7079matchend({expr}, {pat} [, {start} [, {count}]])			*matchend()*
7080		Same as |match()|, but return the index of first character
7081		after the match.  Example: >
7082			:echo matchend("testing", "ing")
7083<		results in "7".
7084							*strspn()* *strcspn()*
7085		Vim doesn't have a strspn() or strcspn() function, but you can
7086		do it with matchend(): >
7087			:let span = matchend(line, '[a-zA-Z]')
7088			:let span = matchend(line, '[^a-zA-Z]')
7089<		Except that -1 is returned when there are no matches.
7090
7091		The {start}, if given, has the same meaning as for |match()|. >
7092			:echo matchend("testing", "ing", 2)
7093<		results in "7". >
7094			:echo matchend("testing", "ing", 5)
7095<		result is "-1".
7096		When {expr} is a |List| the result is equal to |match()|.
7097
7098		Can also be used as a |method|: >
7099			GetText()->matchend('word')
7100
7101matchlist({expr}, {pat} [, {start} [, {count}]])		*matchlist()*
7102		Same as |match()|, but return a |List|.  The first item in the
7103		list is the matched string, same as what matchstr() would
7104		return.  Following items are submatches, like "\1", "\2", etc.
7105		in |:substitute|.  When an optional submatch didn't match an
7106		empty string is used.  Example: >
7107			echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)')
7108<		Results in: ['acd', 'a', '', 'c', 'd', '', '', '', '', '']
7109		When there is no match an empty list is returned.
7110
7111		Can also be used as a |method|: >
7112			GetList()->matchlist('word')
7113
7114matchstr({expr}, {pat} [, {start} [, {count}]])			*matchstr()*
7115		Same as |match()|, but return the matched string.  Example: >
7116			:echo matchstr("testing", "ing")
7117<		results in "ing".
7118		When there is no match "" is returned.
7119		The {start}, if given, has the same meaning as for |match()|. >
7120			:echo matchstr("testing", "ing", 2)
7121<		results in "ing". >
7122			:echo matchstr("testing", "ing", 5)
7123<		result is "".
7124		When {expr} is a |List| then the matching item is returned.
7125		The type isn't changed, it's not necessarily a String.
7126
7127		Can also be used as a |method|: >
7128			GetText()->matchstr('word')
7129
7130matchstrpos({expr}, {pat} [, {start} [, {count}]])		*matchstrpos()*
7131		Same as |matchstr()|, but return the matched string, the start
7132		position and the end position of the match.  Example: >
7133			:echo matchstrpos("testing", "ing")
7134<		results in ["ing", 4, 7].
7135		When there is no match ["", -1, -1] is returned.
7136		The {start}, if given, has the same meaning as for |match()|. >
7137			:echo matchstrpos("testing", "ing", 2)
7138<		results in ["ing", 4, 7]. >
7139			:echo matchstrpos("testing", "ing", 5)
7140<		result is ["", -1, -1].
7141		When {expr} is a |List| then the matching item, the index
7142		of first item where {pat} matches, the start position and the
7143		end position of the match are returned. >
7144			:echo matchstrpos([1, '__x'], '\a')
7145<		result is ["x", 1, 2, 3].
7146		The type isn't changed, it's not necessarily a String.
7147
7148		Can also be used as a |method|: >
7149			GetText()->matchstrpos('word')
7150<
7151
7152							*max()*
7153max({expr})	Return the maximum value of all items in {expr}.
7154		{expr} can be a List or a Dictionary.  For a Dictionary,
7155		it returns the maximum of all values in the Dictionary.
7156		If {expr} is neither a List nor a Dictionary, or one of the
7157		items in {expr} cannot be used as a Number this results in
7158		an error.  An empty |List| or |Dictionary| results in zero.
7159
7160		Can also be used as a |method|: >
7161			mylist->max()
7162
7163
7164menu_info({name} [, {mode}])				*menu_info()*
7165		Return information about the specified menu {name} in
7166		mode {mode}. The menu name should be specified without the
7167		shortcut character ('&').
7168
7169		{mode} can be one of these strings:
7170			"n"	Normal
7171			"v"	Visual (including Select)
7172			"o"	Operator-pending
7173			"i"	Insert
7174			"c"	Cmd-line
7175			"s"	Select
7176			"x"	Visual
7177			"t"	Terminal-Job
7178			""	Normal, Visual and Operator-pending
7179			"!"	Insert and Cmd-line
7180		When {mode} is omitted, the modes for "" are used.
7181
7182		Returns a |Dictionary| containing the following items:
7183		  accel		menu item accelerator text |menu-text|
7184		  display	display name (name without '&')
7185		  enabled	v:true if this menu item is enabled
7186				Refer to |:menu-enable|
7187		  icon		name of the icon file (for toolbar)
7188				|toolbar-icon|
7189		  iconidx	index of a built-in icon
7190		  modes		modes for which the menu is defined. In
7191				addition to the modes mentioned above, these
7192				characters will be used:
7193				" "	Normal, Visual and Operator-pending
7194		  name		menu item name.
7195		  noremenu	v:true if the {rhs} of the menu item is not
7196				remappable else v:false.
7197		  priority	menu order priority |menu-priority|
7198		  rhs		right-hand-side of the menu item. The returned
7199				string has special characters translated like
7200				in the output of the ":menu" command listing.
7201				When the {rhs} of a menu item is empty, then
7202				"<Nop>" is returned.
7203		  script	v:true if script-local remapping of {rhs} is
7204				allowed else v:false.  See |:menu-script|.
7205		  shortcut	shortcut key (character after '&' in
7206				the menu name) |menu-shortcut|
7207		  silent	v:true if the menu item is created
7208				with <silent> argument |:menu-silent|
7209		  submenus	|List| containing the names of
7210				all the submenus.  Present only if the menu
7211				item has submenus.
7212
7213		Returns an empty dictionary if the menu item is not found.
7214
7215		Examples: >
7216			:echo menu_info('Edit.Cut')
7217			:echo menu_info('File.Save', 'n')
7218<
7219		Can also be used as a |method|: >
7220			GetMenuName()->menu_info('v')
7221
7222
7223<							*min()*
7224min({expr})	Return the minimum value of all items in {expr}.
7225		{expr} can be a List or a Dictionary.  For a Dictionary,
7226		it returns the minimum of all values in the Dictionary.
7227		If {expr} is neither a List nor a Dictionary, or one of the
7228		items in {expr} cannot be used as a Number this results in
7229		an error.  An empty |List| or |Dictionary| results in zero.
7230
7231		Can also be used as a |method|: >
7232			mylist->min()
7233
7234<							*mkdir()* *E739*
7235mkdir({name} [, {path} [, {prot}]])
7236		Create directory {name}.
7237
7238		If {path} is "p" then intermediate directories are created as
7239		necessary.  Otherwise it must be "".
7240
7241		If {prot} is given it is used to set the protection bits of
7242		the new directory.  The default is 0755 (rwxr-xr-x: r/w for
7243		the user readable for others).  Use 0700 to make it unreadable
7244		for others.  This is only used for the last part of {name}.
7245		Thus if you create /tmp/foo/bar then /tmp/foo will be created
7246		with 0755.
7247		Example: >
7248			:call mkdir($HOME . "/tmp/foo/bar", "p", 0700)
7249
7250<		This function is not available in the |sandbox|.
7251
7252		There is no error if the directory already exists and the "p"
7253		flag is passed (since patch 8.0.1708).  However, without the
7254		"p" option the call will fail.
7255
7256		The function result is a Number, which is 1 if the call was
7257		successful or 0 if the directory creation failed or partly
7258		failed.
7259
7260		Not available on all systems.  To check use: >
7261			:if exists("*mkdir")
7262
7263<		Can also be used as a |method|: >
7264			GetName()->mkdir()
7265<
7266							*mode()*
7267mode([expr])	Return a string that indicates the current mode.
7268		If [expr] is supplied and it evaluates to a non-zero Number or
7269		a non-empty String (|non-zero-arg|), then the full mode is
7270		returned, otherwise only the first letter is returned.
7271		Also see |state()|.
7272
7273		   n	    Normal, Terminal-Normal
7274		   no	    Operator-pending
7275		   nov	    Operator-pending (forced characterwise |o_v|)
7276		   noV	    Operator-pending (forced linewise |o_V|)
7277		   noCTRL-V Operator-pending (forced blockwise |o_CTRL-V|);
7278				CTRL-V is one character
7279		   niI	    Normal using |i_CTRL-O| in |Insert-mode|
7280		   niR	    Normal using |i_CTRL-O| in |Replace-mode|
7281		   niV	    Normal using |i_CTRL-O| in |Virtual-Replace-mode|
7282		   v	    Visual by character
7283		   V	    Visual by line
7284		   CTRL-V   Visual blockwise
7285		   s	    Select by character
7286		   S	    Select by line
7287		   CTRL-S   Select blockwise
7288		   i	    Insert
7289		   ic	    Insert mode completion |compl-generic|
7290		   ix	    Insert mode |i_CTRL-X| completion
7291		   R	    Replace |R|
7292		   Rc	    Replace mode completion |compl-generic|
7293		   Rv	    Virtual Replace |gR|
7294		   Rx	    Replace mode |i_CTRL-X| completion
7295		   c	    Command-line editing
7296		   cv	    Vim Ex mode |gQ|
7297		   ce	    Normal Ex mode |Q|
7298		   r	    Hit-enter prompt
7299		   rm	    The -- more -- prompt
7300		   r?	    A |:confirm| query of some sort
7301		   !	    Shell or external command is executing
7302		   t	    Terminal-Job mode: keys go to the job
7303		This is useful in the 'statusline' option or when used
7304		with |remote_expr()| In most other places it always returns
7305		"c" or "n".
7306		Note that in the future more modes and more specific modes may
7307		be added. It's better not to compare the whole string but only
7308		the leading character(s).
7309		Also see |visualmode()|.
7310
7311		Can also be used as a |method|: >
7312			DoFull()->mode()
7313
7314mzeval({expr})							*mzeval()*
7315		Evaluate MzScheme expression {expr} and return its result
7316		converted to Vim data structures.
7317		Numbers and strings are returned as they are.
7318		Pairs (including lists and improper lists) and vectors are
7319		returned as Vim |Lists|.
7320		Hash tables are represented as Vim |Dictionary| type with keys
7321		converted to strings.
7322		All other types are converted to string with display function.
7323		Examples: >
7324		    :mz (define l (list 1 2 3))
7325		    :mz (define h (make-hash)) (hash-set! h "list" l)
7326		    :echo mzeval("l")
7327		    :echo mzeval("h")
7328<
7329		Can also be used as a |method|: >
7330			GetExpr()->mzeval()
7331<
7332		{only available when compiled with the |+mzscheme| feature}
7333
7334nextnonblank({lnum})					*nextnonblank()*
7335		Return the line number of the first line at or below {lnum}
7336		that is not blank.  Example: >
7337			if getline(nextnonblank(1)) =~ "Java"
7338<		When {lnum} is invalid or there is no non-blank line at or
7339		below it, zero is returned.
7340		See also |prevnonblank()|.
7341
7342		Can also be used as a |method|: >
7343			GetLnum()->nextnonblank()
7344
7345nr2char({expr} [, {utf8}])				*nr2char()*
7346		Return a string with a single character, which has the number
7347		value {expr}.  Examples: >
7348			nr2char(64)		returns "@"
7349			nr2char(32)		returns " "
7350<		When {utf8} is omitted or zero, the current 'encoding' is used.
7351		Example for "utf-8": >
7352			nr2char(300)		returns I with bow character
7353<		With {utf8} set to 1, always return utf-8 characters.
7354		Note that a NUL character in the file is specified with
7355		nr2char(10), because NULs are represented with newline
7356		characters.  nr2char(0) is a real NUL and terminates the
7357		string, thus results in an empty string.
7358		To turn a list of character numbers into a string: >
7359		    let list = [65, 66, 67]
7360		    let str = join(map(list, {_, val -> nr2char(val)}), '')
7361<		Result: "ABC"
7362
7363		Can also be used as a |method|: >
7364			GetNumber()->nr2char()
7365
7366or({expr}, {expr})					*or()*
7367		Bitwise OR on the two arguments.  The arguments are converted
7368		to a number.  A List, Dict or Float argument causes an error.
7369		Example: >
7370			:let bits = or(bits, 0x80)
7371<		Can also be used as a |method|: >
7372			:let bits = bits->or(0x80)
7373
7374
7375pathshorten({expr})					*pathshorten()*
7376		Shorten directory names in the path {expr} and return the
7377		result.  The tail, the file name, is kept as-is.  The other
7378		components in the path are reduced to single letters.  Leading
7379		'~' and '.' characters are kept.  Example: >
7380			:echo pathshorten('~/.vim/autoload/myfile.vim')
7381<			~/.v/a/myfile.vim ~
7382		It doesn't matter if the path exists or not.
7383
7384		Can also be used as a |method|: >
7385			GetDirectories()->pathshorten()
7386
7387perleval({expr})					*perleval()*
7388		Evaluate Perl expression {expr} in scalar context and return
7389		its result converted to Vim data structures. If value can't be
7390		converted, it is returned as a string Perl representation.
7391		Note: If you want an array or hash, {expr} must return a
7392		reference to it.
7393		Example: >
7394			:echo perleval('[1 .. 4]')
7395<			[1, 2, 3, 4]
7396
7397		Can also be used as a |method|: >
7398			GetExpr()->perleval()
7399
7400<		{only available when compiled with the |+perl| feature}
7401
7402
7403popup_ functions are documented here: |popup-functions|.
7404
7405
7406pow({x}, {y})						*pow()*
7407		Return the power of {x} to the exponent {y} as a |Float|.
7408		{x} and {y} must evaluate to a |Float| or a |Number|.
7409		Examples: >
7410			:echo pow(3, 3)
7411<			27.0 >
7412			:echo pow(2, 16)
7413<			65536.0 >
7414			:echo pow(32, 0.20)
7415<			2.0
7416
7417		Can also be used as a |method|: >
7418			Compute()->pow(3)
7419<
7420		{only available when compiled with the |+float| feature}
7421
7422prevnonblank({lnum})					*prevnonblank()*
7423		Return the line number of the first line at or above {lnum}
7424		that is not blank.  Example: >
7425			let ind = indent(prevnonblank(v:lnum - 1))
7426<		When {lnum} is invalid or there is no non-blank line at or
7427		above it, zero is returned.
7428		Also see |nextnonblank()|.
7429
7430		Can also be used as a |method|: >
7431			GetLnum()->prevnonblank()
7432
7433printf({fmt}, {expr1} ...)				*printf()*
7434		Return a String with {fmt}, where "%" items are replaced by
7435		the formatted form of their respective arguments.  Example: >
7436			printf("%4d: E%d %.30s", lnum, errno, msg)
7437<		May result in:
7438			"  99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~
7439
7440		When used as a |method| the base is passed as the second
7441		argument: >
7442			Compute()->printf("result: %d")
7443
7444<		Often used items are:
7445		  %s	string
7446		  %6S	string right-aligned in 6 display cells
7447		  %6s	string right-aligned in 6 bytes
7448		  %.9s	string truncated to 9 bytes
7449		  %c	single byte
7450		  %d	decimal number
7451		  %5d	decimal number padded with spaces to 5 characters
7452		  %x	hex number
7453		  %04x	hex number padded with zeros to at least 4 characters
7454		  %X	hex number using upper case letters
7455		  %o	octal number
7456		  %08b	binary number padded with zeros to at least 8 chars
7457		  %f	floating point number as 12.23, inf, -inf or nan
7458		  %F	floating point number as 12.23, INF, -INF or NAN
7459		  %e	floating point number as 1.23e3, inf, -inf or nan
7460		  %E	floating point number as 1.23E3, INF, -INF or NAN
7461		  %g	floating point number, as %f or %e depending on value
7462		  %G	floating point number, as %F or %E depending on value
7463		  %%	the % character itself
7464
7465		Conversion specifications start with '%' and end with the
7466		conversion type.  All other characters are copied unchanged to
7467		the result.
7468
7469		The "%" starts a conversion specification.  The following
7470		arguments appear in sequence:
7471
7472			%  [flags]  [field-width]  [.precision]  type
7473
7474		flags
7475			Zero or more of the following flags:
7476
7477		    #	      The value should be converted to an "alternate
7478			      form".  For c, d, and s conversions, this option
7479			      has no effect.  For o conversions, the precision
7480			      of the number is increased to force the first
7481			      character of the output string to a zero (except
7482			      if a zero value is printed with an explicit
7483			      precision of zero).
7484			      For b and B conversions, a non-zero result has
7485			      the string "0b" (or "0B" for B conversions)
7486			      prepended to it.
7487			      For x and X conversions, a non-zero result has
7488			      the string "0x" (or "0X" for X conversions)
7489			      prepended to it.
7490
7491		    0 (zero)  Zero padding.  For all conversions the converted
7492			      value is padded on the left with zeros rather
7493			      than blanks.  If a precision is given with a
7494			      numeric conversion (d, b, B, o, x, and X), the 0
7495			      flag is ignored.
7496
7497		    -	      A negative field width flag; the converted value
7498			      is to be left adjusted on the field boundary.
7499			      The converted value is padded on the right with
7500			      blanks, rather than on the left with blanks or
7501			      zeros.  A - overrides a 0 if both are given.
7502
7503		    ' ' (space)  A blank should be left before a positive
7504			      number produced by a signed conversion (d).
7505
7506		    +	      A sign must always be placed before a number
7507			      produced by a signed conversion.  A + overrides
7508			      a space if both are used.
7509
7510		field-width
7511			An optional decimal digit string specifying a minimum
7512			field width.  If the converted value has fewer bytes
7513			than the field width, it will be padded with spaces on
7514			the left (or right, if the left-adjustment flag has
7515			been given) to fill out the field width.
7516
7517		.precision
7518			An optional precision, in the form of a period '.'
7519			followed by an optional digit string.  If the digit
7520			string is omitted, the precision is taken as zero.
7521			This gives the minimum number of digits to appear for
7522			d, o, x, and X conversions, or the maximum number of
7523			bytes to be printed from a string for s conversions.
7524			For floating point it is the number of digits after
7525			the decimal point.
7526
7527		type
7528			A character that specifies the type of conversion to
7529			be applied, see below.
7530
7531		A field width or precision, or both, may be indicated by an
7532		asterisk '*' instead of a digit string.  In this case, a
7533		Number argument supplies the field width or precision.  A
7534		negative field width is treated as a left adjustment flag
7535		followed by a positive field width; a negative precision is
7536		treated as though it were missing.  Example: >
7537			:echo printf("%d: %.*s", nr, width, line)
7538<		This limits the length of the text used from "line" to
7539		"width" bytes.
7540
7541		The conversion specifiers and their meanings are:
7542
7543				*printf-d* *printf-b* *printf-B* *printf-o*
7544				*printf-x* *printf-X*
7545		dbBoxX	The Number argument is converted to signed decimal
7546			(d), unsigned binary (b and B), unsigned octal (o), or
7547			unsigned hexadecimal (x and X) notation.  The letters
7548			"abcdef" are used for x conversions; the letters
7549			"ABCDEF" are used for X conversions.
7550			The precision, if any, gives the minimum number of
7551			digits that must appear; if the converted value
7552			requires fewer digits, it is padded on the left with
7553			zeros.
7554			In no case does a non-existent or small field width
7555			cause truncation of a numeric field; if the result of
7556			a conversion is wider than the field width, the field
7557			is expanded to contain the conversion result.
7558			The 'h' modifier indicates the argument is 16 bits.
7559			The 'l' modifier indicates the argument is 32 bits.
7560			The 'L' modifier indicates the argument is 64 bits.
7561			Generally, these modifiers are not useful. They are
7562			ignored when type is known from the argument.
7563
7564		i	alias for d
7565		D	alias for ld
7566		U	alias for lu
7567		O	alias for lo
7568
7569							*printf-c*
7570		c	The Number argument is converted to a byte, and the
7571			resulting character is written.
7572
7573							*printf-s*
7574		s	The text of the String argument is used.  If a
7575			precision is specified, no more bytes than the number
7576			specified are used.
7577			If the argument is not a String type, it is
7578			automatically converted to text with the same format
7579			as ":echo".
7580							*printf-S*
7581		S	The text of the String argument is used.  If a
7582			precision is specified, no more display cells than the
7583			number specified are used.
7584
7585							*printf-f* *E807*
7586		f F	The Float argument is converted into a string of the
7587			form 123.456.  The precision specifies the number of
7588			digits after the decimal point.  When the precision is
7589			zero the decimal point is omitted.  When the precision
7590			is not specified 6 is used.  A really big number
7591			(out of range or dividing by zero) results in "inf"
7592			or "-inf" with %f (INF or -INF with %F).
7593			"0.0 / 0.0" results in "nan" with %f (NAN with %F).
7594			Example: >
7595				echo printf("%.2f", 12.115)
7596<				12.12
7597			Note that roundoff depends on the system libraries.
7598			Use |round()| when in doubt.
7599
7600							*printf-e* *printf-E*
7601		e E	The Float argument is converted into a string of the
7602			form 1.234e+03 or 1.234E+03 when using 'E'.  The
7603			precision specifies the number of digits after the
7604			decimal point, like with 'f'.
7605
7606							*printf-g* *printf-G*
7607		g G	The Float argument is converted like with 'f' if the
7608			value is between 0.001 (inclusive) and 10000000.0
7609			(exclusive).  Otherwise 'e' is used for 'g' and 'E'
7610			for 'G'.  When no precision is specified superfluous
7611			zeroes and '+' signs are removed, except for the zero
7612			immediately after the decimal point.  Thus 10000000.0
7613			results in 1.0e7.
7614
7615							*printf-%*
7616		%	A '%' is written.  No argument is converted.  The
7617			complete conversion specification is "%%".
7618
7619		When a Number argument is expected a String argument is also
7620		accepted and automatically converted.
7621		When a Float or String argument is expected a Number argument
7622		is also accepted and automatically converted.
7623		Any other argument type results in an error message.
7624
7625							*E766* *E767*
7626		The number of {exprN} arguments must exactly match the number
7627		of "%" items.  If there are not sufficient or too many
7628		arguments an error is given.  Up to 18 arguments can be used.
7629
7630
7631prompt_setcallback({buf}, {expr})			*prompt_setcallback()*
7632		Set prompt callback for buffer {buf} to {expr}.  When {expr}
7633		is an empty string the callback is removed.  This has only
7634		effect if {buf} has 'buftype' set to "prompt".
7635
7636		The callback is invoked when pressing Enter.  The current
7637		buffer will always be the prompt buffer.  A new line for a
7638		prompt is added before invoking the callback, thus the prompt
7639		for which the callback was invoked will be in the last but one
7640		line.
7641		If the callback wants to add text to the buffer, it must
7642		insert it above the last line, since that is where the current
7643		prompt is.  This can also be done asynchronously.
7644		The callback is invoked with one argument, which is the text
7645		that was entered at the prompt.  This can be an empty string
7646		if the user only typed Enter.
7647		Example: >
7648		   call prompt_setcallback(bufnr(), function('s:TextEntered'))
7649		   func s:TextEntered(text)
7650		     if a:text == 'exit' || a:text == 'quit'
7651		       stopinsert
7652		       close
7653		     else
7654		       call append(line('$') - 1, 'Entered: "' . a:text . '"')
7655		       " Reset 'modified' to allow the buffer to be closed.
7656		       set nomodified
7657		     endif
7658		   endfunc
7659
7660<		Can also be used as a |method|: >
7661			GetBuffer()->prompt_setcallback(callback)
7662
7663
7664prompt_setinterrupt({buf}, {expr})			*prompt_setinterrupt()*
7665		Set a callback for buffer {buf} to {expr}.  When {expr} is an
7666		empty string the callback is removed.  This has only effect if
7667		{buf} has 'buftype' set to "prompt".
7668
7669		This callback will be invoked when pressing CTRL-C in Insert
7670		mode.  Without setting a callback Vim will exit Insert mode,
7671		as in any buffer.
7672
7673		Can also be used as a |method|: >
7674			GetBuffer()->prompt_setinterrupt(callback)
7675
7676prompt_setprompt({buf}, {text})				*prompt_setprompt()*
7677		Set prompt for buffer {buf} to {text}.  You most likely want
7678		{text} to end in a space.
7679		The result is only visible if {buf} has 'buftype' set to
7680		"prompt".  Example: >
7681			call prompt_setprompt(bufnr(), 'command: ')
7682<
7683		Can also be used as a |method|: >
7684			GetBuffer()->prompt_setprompt('command: ')
7685
7686prop_ functions are documented here: |text-prop-functions|.
7687
7688pum_getpos()						*pum_getpos()*
7689		If the popup menu (see |ins-completion-menu|) is not visible,
7690		returns an empty |Dictionary|, otherwise, returns a
7691		|Dictionary| with the following keys:
7692			height		nr of items visible
7693			width		screen cells
7694			row		top screen row (0 first row)
7695			col		leftmost screen column (0 first col)
7696			size		total nr of items
7697			scrollbar	|TRUE| if scrollbar is visible
7698
7699		The values are the same as in |v:event| during
7700		|CompleteChanged|.
7701
7702pumvisible()						*pumvisible()*
7703		Returns non-zero when the popup menu is visible, zero
7704		otherwise.  See |ins-completion-menu|.
7705		This can be used to avoid some things that would remove the
7706		popup menu.
7707
7708py3eval({expr})						*py3eval()*
7709		Evaluate Python expression {expr} and return its result
7710		converted to Vim data structures.
7711		Numbers and strings are returned as they are (strings are
7712		copied though, Unicode strings are additionally converted to
7713		'encoding').
7714		Lists are represented as Vim |List| type.
7715		Dictionaries are represented as Vim |Dictionary| type with
7716		keys converted to strings.
7717
7718		Can also be used as a |method|: >
7719			GetExpr()->py3eval()
7720
7721<		{only available when compiled with the |+python3| feature}
7722
7723							*E858* *E859*
7724pyeval({expr})						*pyeval()*
7725		Evaluate Python expression {expr} and return its result
7726		converted to Vim data structures.
7727		Numbers and strings are returned as they are (strings are
7728		copied though).
7729		Lists are represented as Vim |List| type.
7730		Dictionaries are represented as Vim |Dictionary| type,
7731		non-string keys result in error.
7732
7733		Can also be used as a |method|: >
7734			GetExpr()->pyeval()
7735
7736<		{only available when compiled with the |+python| feature}
7737
7738pyxeval({expr})						*pyxeval()*
7739		Evaluate Python expression {expr} and return its result
7740		converted to Vim data structures.
7741		Uses Python 2 or 3, see |python_x| and 'pyxversion'.
7742		See also: |pyeval()|, |py3eval()|
7743
7744		Can also be used as a |method|: >
7745			GetExpr()->pyxeval()
7746
7747<		{only available when compiled with the |+python| or the
7748		|+python3| feature}
7749
7750							*E726* *E727*
7751range({expr} [, {max} [, {stride}]])				*range()*
7752		Returns a |List| with Numbers:
7753		- If only {expr} is specified: [0, 1, ..., {expr} - 1]
7754		- If {max} is specified: [{expr}, {expr} + 1, ..., {max}]
7755		- If {stride} is specified: [{expr}, {expr} + {stride}, ...,
7756		  {max}] (increasing {expr} with {stride} each time, not
7757		  producing a value past {max}).
7758		When the maximum is one before the start the result is an
7759		empty list.  When the maximum is more than one before the
7760		start this is an error.
7761		Examples: >
7762			range(4)		" [0, 1, 2, 3]
7763			range(2, 4)		" [2, 3, 4]
7764			range(2, 9, 3)		" [2, 5, 8]
7765			range(2, -2, -1)	" [2, 1, 0, -1, -2]
7766			range(0)		" []
7767			range(2, 0)		" error!
7768<
7769		Can also be used as a |method|: >
7770			GetExpr()->range()
7771<
7772
7773rand([{expr}])						*rand()* *random*
7774		Return a pseudo-random Number generated with an xoshiro128**
7775		algorithm using seed {expr}.  The returned number is 32 bits,
7776		also on 64 bits systems, for consistency.
7777		{expr} can be initialized by |srand()| and will be updated by
7778		rand().  If {expr} is omitted, an internal seed value is used
7779		and updated.
7780
7781		Examples: >
7782			:echo rand()
7783			:let seed = srand()
7784			:echo rand(seed)
7785			:echo rand(seed) % 16  " random number 0 - 15
7786<
7787							*readdir()*
7788readdir({directory} [, {expr}])
7789		Return a list with file and directory names in {directory}.
7790		You can also use |glob()| if you don't need to do complicated
7791		things, such as limiting the number of matches.
7792
7793		When {expr} is omitted all entries are included.
7794		When {expr} is given, it is evaluated to check what to do:
7795			If {expr} results in -1 then no further entries will
7796			be handled.
7797			If {expr} results in 0 then this entry will not be
7798			added to the list.
7799			If {expr} results in 1 then this entry will be added
7800			to the list.
7801		Each time {expr} is evaluated |v:val| is set to the entry name.
7802		When {expr} is a function the name is passed as the argument.
7803		For example, to get a list of files ending in ".txt": >
7804		  readdir(dirname, {n -> n =~ '.txt$'})
7805<		To skip hidden and backup files: >
7806		  readdir(dirname, {n -> n !~ '^\.\|\~$'})
7807
7808<		If you want to get a directory tree: >
7809                  function! s:tree(dir)
7810                      return {a:dir : map(readdir(a:dir),
7811		      \ {_, x -> isdirectory(x) ?
7812		      \          {x : s:tree(a:dir . '/' . x)} : x})}
7813                  endfunction
7814                  echo s:tree(".")
7815<
7816		Can also be used as a |method|: >
7817			GetDirName()->readdir()
7818<
7819							*readfile()*
7820readfile({fname} [, {type} [, {max}]])
7821		Read file {fname} and return a |List|, each line of the file
7822		as an item.  Lines are broken at NL characters.  Macintosh
7823		files separated with CR will result in a single long line
7824		(unless a NL appears somewhere).
7825		All NUL characters are replaced with a NL character.
7826		When {type} contains "b" binary mode is used:
7827		- When the last line ends in a NL an extra empty list item is
7828		  added.
7829		- No CR characters are removed.
7830		When {type} contains "B" a |Blob| is returned with the binary
7831		data of the file unmodified.
7832		Otherwise:
7833		- CR characters that appear before a NL are removed.
7834		- Whether the last line ends in a NL or not does not matter.
7835		- When 'encoding' is Unicode any UTF-8 byte order mark is
7836		  removed from the text.
7837		When {max} is given this specifies the maximum number of lines
7838		to be read.  Useful if you only want to check the first ten
7839		lines of a file: >
7840			:for line in readfile(fname, '', 10)
7841			:  if line =~ 'Date' | echo line | endif
7842			:endfor
7843<		When {max} is negative -{max} lines from the end of the file
7844		are returned, or as many as there are.
7845		When {max} is zero the result is an empty list.
7846		Note that without {max} the whole file is read into memory.
7847		Also note that there is no recognition of encoding.  Read a
7848		file into a buffer if you need to.
7849		When the file can't be opened an error message is given and
7850		the result is an empty list.
7851		Also see |writefile()|.
7852
7853		Can also be used as a |method|: >
7854			GetFileName()->readfile()
7855
7856reg_executing()						*reg_executing()*
7857		Returns the single letter name of the register being executed.
7858		Returns an empty string when no register is being executed.
7859		See |@|.
7860
7861reg_recording()						*reg_recording()*
7862		Returns the single letter name of the register being recorded.
7863		Returns an empty string when not recording.  See |q|.
7864
7865reltime([{start} [, {end}]])				*reltime()*
7866		Return an item that represents a time value.  The format of
7867		the item depends on the system.  It can be passed to
7868		|reltimestr()| to convert it to a string  or |reltimefloat()|
7869		to convert to a Float.
7870		Without an argument it returns the current time.
7871		With one argument is returns the time passed since the time
7872		specified in the argument.
7873		With two arguments it returns the time passed between {start}
7874		and {end}.
7875		The {start} and {end} arguments must be values returned by
7876		reltime().
7877
7878		Can also be used as a |method|: >
7879			GetStart()->reltime()
7880<
7881		{only available when compiled with the |+reltime| feature}
7882
7883reltimefloat({time})				*reltimefloat()*
7884		Return a Float that represents the time value of {time}.
7885		Example: >
7886			let start = reltime()
7887			call MyFunction()
7888			let seconds = reltimefloat(reltime(start))
7889<		See the note of reltimestr() about overhead.
7890		Also see |profiling|.
7891
7892		Can also be used as a |method|: >
7893			reltime(start)->reltimefloat()
7894
7895<		{only available when compiled with the |+reltime| feature}
7896
7897reltimestr({time})				*reltimestr()*
7898		Return a String that represents the time value of {time}.
7899		This is the number of seconds, a dot and the number of
7900		microseconds.  Example: >
7901			let start = reltime()
7902			call MyFunction()
7903			echo reltimestr(reltime(start))
7904<		Note that overhead for the commands will be added to the time.
7905		The accuracy depends on the system.
7906		Leading spaces are used to make the string align nicely.  You
7907		can use split() to remove it. >
7908			echo split(reltimestr(reltime(start)))[0]
7909<		Also see |profiling|.
7910
7911		Can also be used as a |method|: >
7912			reltime(start)->reltimestr()
7913
7914<		{only available when compiled with the |+reltime| feature}
7915
7916							*remote_expr()* *E449*
7917remote_expr({server}, {string} [, {idvar} [, {timeout}]])
7918		Send the {string} to {server}.  The string is sent as an
7919		expression and the result is returned after evaluation.
7920		The result must be a String or a |List|.  A |List| is turned
7921		into a String by joining the items with a line break in
7922		between (not at the end), like with join(expr, "\n").
7923		If {idvar} is present and not empty, it is taken as the name
7924		of a variable and a {serverid} for later use with
7925		|remote_read()| is stored there.
7926		If {timeout} is given the read times out after this many
7927		seconds.  Otherwise a timeout of 600 seconds is used.
7928		See also |clientserver| |RemoteReply|.
7929		This function is not available in the |sandbox|.
7930		{only available when compiled with the |+clientserver| feature}
7931		Note: Any errors will cause a local error message to be issued
7932		and the result will be the empty string.
7933
7934		Variables will be evaluated in the global namespace,
7935		independent of a function currently being active.  Except
7936		when in debug mode, then local function variables and
7937		arguments can be evaluated.
7938
7939		Examples: >
7940			:echo remote_expr("gvim", "2+2")
7941			:echo remote_expr("gvim1", "b:current_syntax")
7942<
7943		Can also be used as a |method|: >
7944			ServerName()->remote_expr(expr)
7945
7946remote_foreground({server})				*remote_foreground()*
7947		Move the Vim server with the name {server} to the foreground.
7948		This works like: >
7949			remote_expr({server}, "foreground()")
7950<		Except that on Win32 systems the client does the work, to work
7951		around the problem that the OS doesn't always allow the server
7952		to bring itself to the foreground.
7953		Note: This does not restore the window if it was minimized,
7954		like foreground() does.
7955		This function is not available in the |sandbox|.
7956
7957		Can also be used as a |method|: >
7958			ServerName()->remote_foreground()
7959
7960<		{only in the Win32, Athena, Motif and GTK GUI versions and the
7961		Win32 console version}
7962
7963
7964remote_peek({serverid} [, {retvar}])		*remote_peek()*
7965		Returns a positive number if there are available strings
7966		from {serverid}.  Copies any reply string into the variable
7967		{retvar} if specified.  {retvar} must be a string with the
7968		name of a variable.
7969		Returns zero if none are available.
7970		Returns -1 if something is wrong.
7971		See also |clientserver|.
7972		This function is not available in the |sandbox|.
7973		{only available when compiled with the |+clientserver| feature}
7974		Examples: >
7975			:let repl = ""
7976			:echo "PEEK: ".remote_peek(id, "repl").": ".repl
7977
7978<		Can also be used as a |method|: >
7979			ServerId()->remote_peek()
7980
7981remote_read({serverid}, [{timeout}])			*remote_read()*
7982		Return the oldest available reply from {serverid} and consume
7983		it.  Unless a {timeout} in seconds is given, it blocks until a
7984		reply is available.
7985		See also |clientserver|.
7986		This function is not available in the |sandbox|.
7987		{only available when compiled with the |+clientserver| feature}
7988		Example: >
7989			:echo remote_read(id)
7990
7991<		Can also be used as a |method|: >
7992			ServerId()->remote_read()
7993<
7994							*remote_send()* *E241*
7995remote_send({server}, {string} [, {idvar}])
7996		Send the {string} to {server}.  The string is sent as input
7997		keys and the function returns immediately.  At the Vim server
7998		the keys are not mapped |:map|.
7999		If {idvar} is present, it is taken as the name of a variable
8000		and a {serverid} for later use with remote_read() is stored
8001		there.
8002		See also |clientserver| |RemoteReply|.
8003		This function is not available in the |sandbox|.
8004		{only available when compiled with the |+clientserver| feature}
8005
8006		Note: Any errors will be reported in the server and may mess
8007		up the display.
8008		Examples: >
8009		:echo remote_send("gvim", ":DropAndReply ".file, "serverid").
8010		 \ remote_read(serverid)
8011
8012		:autocmd NONE RemoteReply *
8013		 \ echo remote_read(expand("<amatch>"))
8014		:echo remote_send("gvim", ":sleep 10 | echo ".
8015		 \ 'server2client(expand("<client>"), "HELLO")<CR>')
8016<
8017		Can also be used as a |method|: >
8018			ServerName()->remote_send(keys)
8019<
8020					*remote_startserver()* *E941* *E942*
8021remote_startserver({name})
8022		Become the server {name}.  This fails if already running as a
8023		server, when |v:servername| is not empty.
8024
8025		Can also be used as a |method|: >
8026			ServerName()->remote_startserver()
8027
8028<		{only available when compiled with the |+clientserver| feature}
8029
8030remove({list}, {idx} [, {end}])				*remove()*
8031		Without {end}: Remove the item at {idx} from |List| {list} and
8032		return the item.
8033		With {end}: Remove items from {idx} to {end} (inclusive) and
8034		return a List with these items.  When {idx} points to the same
8035		item as {end} a list with one item is returned.  When {end}
8036		points to an item before {idx} this is an error.
8037		See |list-index| for possible values of {idx} and {end}.
8038		Example: >
8039			:echo "last item: " . remove(mylist, -1)
8040			:call remove(mylist, 0, 9)
8041<
8042		Use |delete()| to remove a file.
8043
8044		Can also be used as a |method|: >
8045			mylist->remove(idx)
8046
8047remove({blob}, {idx} [, {end}])
8048		Without {end}: Remove the byte at {idx} from |Blob| {blob} and
8049		return the byte.
8050		With {end}: Remove bytes from {idx} to {end} (inclusive) and
8051		return a |Blob| with these bytes.  When {idx} points to the same
8052		byte as {end} a |Blob| with one byte is returned.  When {end}
8053		points to a byte before {idx} this is an error.
8054		Example: >
8055			:echo "last byte: " . remove(myblob, -1)
8056			:call remove(mylist, 0, 9)
8057
8058remove({dict}, {key})
8059		Remove the entry from {dict} with key {key} and return it.
8060		Example: >
8061			:echo "removed " . remove(dict, "one")
8062<		If there is no {key} in {dict} this is an error.
8063
8064rename({from}, {to})					*rename()*
8065		Rename the file by the name {from} to the name {to}.  This
8066		should also work to move files across file systems.  The
8067		result is a Number, which is 0 if the file was renamed
8068		successfully, and non-zero when the renaming failed.
8069		NOTE: If {to} exists it is overwritten without warning.
8070		This function is not available in the |sandbox|.
8071
8072		Can also be used as a |method|: >
8073			GetOldName()->rename(newname)
8074
8075repeat({expr}, {count})					*repeat()*
8076		Repeat {expr} {count} times and return the concatenated
8077		result.  Example: >
8078			:let separator = repeat('-', 80)
8079<		When {count} is zero or negative the result is empty.
8080		When {expr} is a |List| the result is {expr} concatenated
8081		{count} times.  Example: >
8082			:let longlist = repeat(['a', 'b'], 3)
8083<		Results in ['a', 'b', 'a', 'b', 'a', 'b'].
8084
8085		Can also be used as a |method|: >
8086			mylist->repeat(count)
8087
8088resolve({filename})					*resolve()* *E655*
8089		On MS-Windows, when {filename} is a shortcut (a .lnk file),
8090		returns the path the shortcut points to in a simplified form.
8091		When {filename} is a symbolic link or junction point, return
8092		the full path to the target. If the target of junction is
8093		removed, return {filename}.
8094		On Unix, repeat resolving symbolic links in all path
8095		components of {filename} and return the simplified result.
8096		To cope with link cycles, resolving of symbolic links is
8097		stopped after 100 iterations.
8098		On other systems, return the simplified {filename}.
8099		The simplification step is done as by |simplify()|.
8100		resolve() keeps a leading path component specifying the
8101		current directory (provided the result is still a relative
8102		path name) and also keeps a trailing path separator.
8103
8104		Can also be used as a |method|: >
8105			GetName()->resolve()
8106
8107reverse({object})					*reverse()*
8108		Reverse the order of items in {object} in-place.
8109		{object} can be a |List| or a |Blob|.
8110		Returns {object}.
8111		If you want an object to remain unmodified make a copy first: >
8112			:let revlist = reverse(copy(mylist))
8113<		Can also be used as a |method|: >
8114			mylist->reverse()
8115
8116round({expr})							*round()*
8117		Round off {expr} to the nearest integral value and return it
8118		as a |Float|.  If {expr} lies halfway between two integral
8119		values, then use the larger one (away from zero).
8120		{expr} must evaluate to a |Float| or a |Number|.
8121		Examples: >
8122			echo round(0.456)
8123<			0.0  >
8124			echo round(4.5)
8125<			5.0 >
8126			echo round(-4.5)
8127<			-5.0
8128
8129		Can also be used as a |method|: >
8130			Compute()->round()
8131<
8132		{only available when compiled with the |+float| feature}
8133
8134rubyeval({expr})					*rubyeval()*
8135		Evaluate Ruby expression {expr} and return its result
8136		converted to Vim data structures.
8137		Numbers, floats and strings are returned as they are (strings
8138		are copied though).
8139		Arrays are represented as Vim |List| type.
8140		Hashes are represented as Vim |Dictionary| type.
8141		Other objects are represented as strings resulted from their
8142		"Object#to_s" method.
8143
8144		Can also be used as a |method|: >
8145			GetRubyExpr()->rubyeval()
8146
8147<		{only available when compiled with the |+ruby| feature}
8148
8149screenattr({row}, {col})					*screenattr()*
8150		Like |screenchar()|, but return the attribute.  This is a rather
8151		arbitrary number that can only be used to compare to the
8152		attribute at other positions.
8153
8154		Can also be used as a |method|: >
8155			GetRow()->screenattr(col)
8156
8157screenchar({row}, {col})					*screenchar()*
8158		The result is a Number, which is the character at position
8159		[row, col] on the screen.  This works for every possible
8160		screen position, also status lines, window separators and the
8161		command line.  The top left position is row one, column one
8162		The character excludes composing characters.  For double-byte
8163		encodings it may only be the first byte.
8164		This is mainly to be used for testing.
8165		Returns -1 when row or col is out of range.
8166
8167		Can also be used as a |method|: >
8168			GetRow()->screenchar(col)
8169
8170screenchars({row}, {col})					*screenchars()*
8171		The result is a List of Numbers.  The first number is the same
8172		as what |screenchar()| returns.  Further numbers are
8173		composing characters on top of the base character.
8174		This is mainly to be used for testing.
8175		Returns an empty List when row or col is out of range.
8176
8177		Can also be used as a |method|: >
8178			GetRow()->screenchars(col)
8179
8180screencol()							*screencol()*
8181		The result is a Number, which is the current screen column of
8182		the cursor. The leftmost column has number 1.
8183		This function is mainly used for testing.
8184
8185		Note: Always returns the current screen column, thus if used
8186		in a command (e.g. ":echo screencol()") it will return the
8187		column inside the command line, which is 1 when the command is
8188		executed. To get the cursor position in the file use one of
8189		the following mappings: >
8190			nnoremap <expr> GG ":echom ".screencol()."\n"
8191			nnoremap <silent> GG :echom screencol()<CR>
8192<
8193screenpos({winid}, {lnum}, {col})				*screenpos()*
8194		The result is a Dict with the screen position of the text
8195		character in window {winid} at buffer line {lnum} and column
8196		{col}.  {col} is a one-based byte index.
8197		The Dict has these members:
8198			row	screen row
8199			col	first screen column
8200			endcol	last screen column
8201			curscol	cursor screen column
8202		If the specified position is not visible, all values are zero.
8203		The "endcol" value differs from "col" when the character
8204		occupies more than one screen cell.  E.g. for a Tab "col" can
8205		be 1 and "endcol" can be 8.
8206		The "curscol" value is where the cursor would be placed.  For
8207		a Tab it would be the same as "endcol", while for a double
8208		width character it would be the same as "col".
8209
8210		Can also be used as a |method|: >
8211			GetWinid()->screenpos(lnum, col)
8212
8213screenrow()							*screenrow()*
8214		The result is a Number, which is the current screen row of the
8215		cursor.  The top line has number one.
8216		This function is mainly used for testing.
8217		Alternatively you can use |winline()|.
8218
8219		Note: Same restrictions as with |screencol()|.
8220
8221screenstring({row}, {col})					*screenstring()*
8222		The result is a String that contains the base character and
8223		any composing characters at position [row, col] on the screen.
8224		This is like |screenchars()| but returning a String with the
8225		characters.
8226		This is mainly to be used for testing.
8227		Returns an empty String when row or col is out of range.
8228
8229		Can also be used as a |method|: >
8230			GetRow()->screenstring(col)
8231
8232search({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*search()*
8233		Search for regexp pattern {pattern}.  The search starts at the
8234		cursor position (you can use |cursor()| to set it).
8235
8236		When a match has been found its line number is returned.
8237		If there is no match a 0 is returned and the cursor doesn't
8238		move.  No error message is given.
8239
8240		{flags} is a String, which can contain these character flags:
8241		'b'	search Backward instead of forward
8242		'c'	accept a match at the Cursor position
8243		'e'	move to the End of the match
8244		'n'	do Not move the cursor
8245		'p'	return number of matching sub-Pattern (see below)
8246		's'	Set the ' mark at the previous location of the cursor
8247		'w'	Wrap around the end of the file
8248		'W'	don't Wrap around the end of the file
8249		'z'	start searching at the cursor column instead of zero
8250		If neither 'w' or 'W' is given, the 'wrapscan' option applies.
8251
8252		If the 's' flag is supplied, the ' mark is set, only if the
8253		cursor is moved. The 's' flag cannot be combined with the 'n'
8254		flag.
8255
8256		'ignorecase', 'smartcase' and 'magic' are used.
8257
8258		When the 'z' flag is not given, searching always starts in
8259		column zero and then matches before the cursor are skipped.
8260		When the 'c' flag is present in 'cpo' the next search starts
8261		after the match.  Without the 'c' flag the next search starts
8262		one column further.
8263
8264		When the {stopline} argument is given then the search stops
8265		after searching this line.  This is useful to restrict the
8266		search to a range of lines.  Examples: >
8267			let match = search('(', 'b', line("w0"))
8268			let end = search('END', '', line("w$"))
8269<		When {stopline} is used and it is not zero this also implies
8270		that the search does not wrap around the end of the file.
8271		A zero value is equal to not giving the argument.
8272
8273		When the {timeout} argument is given the search stops when
8274		more than this many milliseconds have passed.  Thus when
8275		{timeout} is 500 the search stops after half a second.
8276		The value must not be negative.  A zero value is like not
8277		giving the argument.
8278		{only available when compiled with the |+reltime| feature}
8279
8280							*search()-sub-match*
8281		With the 'p' flag the returned value is one more than the
8282		first sub-match in \(\).  One if none of them matched but the
8283		whole pattern did match.
8284		To get the column number too use |searchpos()|.
8285
8286		The cursor will be positioned at the match, unless the 'n'
8287		flag is used.
8288
8289		Example (goes over all files in the argument list): >
8290		    :let n = 1
8291		    :while n <= argc()	    " loop over all files in arglist
8292		    :  exe "argument " . n
8293		    :  " start at the last char in the file and wrap for the
8294		    :  " first search to find match at start of file
8295		    :  normal G$
8296		    :  let flags = "w"
8297		    :  while search("foo", flags) > 0
8298		    :	 s/foo/bar/g
8299		    :	 let flags = "W"
8300		    :  endwhile
8301		    :  update		    " write the file if modified
8302		    :  let n = n + 1
8303		    :endwhile
8304<
8305		Example for using some flags: >
8306		    :echo search('\<if\|\(else\)\|\(endif\)', 'ncpe')
8307<		This will search for the keywords "if", "else", and "endif"
8308		under or after the cursor.  Because of the 'p' flag, it
8309		returns 1, 2, or 3 depending on which keyword is found, or 0
8310		if the search fails.  With the cursor on the first word of the
8311		line:
8312		    if (foo == 0) | let foo = foo + 1 | endif ~
8313		the function returns 1.  Without the 'c' flag, the function
8314		finds the "endif" and returns 3.  The same thing happens
8315		without the 'e' flag if the cursor is on the "f" of "if".
8316		The 'n' flag tells the function not to move the cursor.
8317
8318		Can also be used as a |method|: >
8319			GetPattern()->search()
8320
8321searchdecl({name} [, {global} [, {thisblock}]])			*searchdecl()*
8322		Search for the declaration of {name}.
8323
8324		With a non-zero {global} argument it works like |gD|, find
8325		first match in the file.  Otherwise it works like |gd|, find
8326		first match in the function.
8327
8328		With a non-zero {thisblock} argument matches in a {} block
8329		that ends before the cursor position are ignored.  Avoids
8330		finding variable declarations only valid in another scope.
8331
8332		Moves the cursor to the found match.
8333		Returns zero for success, non-zero for failure.
8334		Example: >
8335			if searchdecl('myvar') == 0
8336			   echo getline('.')
8337			endif
8338<
8339		Can also be used as a |method|: >
8340			GetName()->searchdecl()
8341<
8342							*searchpair()*
8343searchpair({start}, {middle}, {end} [, {flags} [, {skip}
8344				[, {stopline} [, {timeout}]]]])
8345		Search for the match of a nested start-end pair.  This can be
8346		used to find the "endif" that matches an "if", while other
8347		if/endif pairs in between are ignored.
8348		The search starts at the cursor.  The default is to search
8349		forward, include 'b' in {flags} to search backward.
8350		If a match is found, the cursor is positioned at it and the
8351		line number is returned.  If no match is found 0 or -1 is
8352		returned and the cursor doesn't move.  No error message is
8353		given.
8354
8355		{start}, {middle} and {end} are patterns, see |pattern|.  They
8356		must not contain \( \) pairs.  Use of \%( \) is allowed.  When
8357		{middle} is not empty, it is found when searching from either
8358		direction, but only when not in a nested start-end pair.  A
8359		typical use is: >
8360			searchpair('\<if\>', '\<else\>', '\<endif\>')
8361<		By leaving {middle} empty the "else" is skipped.
8362
8363		{flags} 'b', 'c', 'n', 's', 'w' and 'W' are used like with
8364		|search()|.  Additionally:
8365		'r'	Repeat until no more matches found; will find the
8366			outer pair.  Implies the 'W' flag.
8367		'm'	Return number of matches instead of line number with
8368			the match; will be > 1 when 'r' is used.
8369		Note: it's nearly always a good idea to use the 'W' flag, to
8370		avoid wrapping around the end of the file.
8371
8372		When a match for {start}, {middle} or {end} is found, the
8373		{skip} expression is evaluated with the cursor positioned on
8374		the start of the match.  It should return non-zero if this
8375		match is to be skipped.  E.g., because it is inside a comment
8376		or a string.
8377		When {skip} is omitted or empty, every match is accepted.
8378		When evaluating {skip} causes an error the search is aborted
8379		and -1 returned.
8380		{skip} can be a string, a lambda, a funcref or a partial.
8381		Anything else makes the function fail.
8382
8383		For {stopline} and {timeout} see |search()|.
8384
8385		The value of 'ignorecase' is used.  'magic' is ignored, the
8386		patterns are used like it's on.
8387
8388		The search starts exactly at the cursor.  A match with
8389		{start}, {middle} or {end} at the next character, in the
8390		direction of searching, is the first one found.  Example: >
8391			if 1
8392			  if 2
8393			  endif 2
8394			endif 1
8395<		When starting at the "if 2", with the cursor on the "i", and
8396		searching forwards, the "endif 2" is found.  When starting on
8397		the character just before the "if 2", the "endif 1" will be
8398		found.  That's because the "if 2" will be found first, and
8399		then this is considered to be a nested if/endif from "if 2" to
8400		"endif 2".
8401		When searching backwards and {end} is more than one character,
8402		it may be useful to put "\zs" at the end of the pattern, so
8403		that when the cursor is inside a match with the end it finds
8404		the matching start.
8405
8406		Example, to find the "endif" command in a Vim script: >
8407
8408	:echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W',
8409			\ 'getline(".") =~ "^\\s*\""')
8410
8411<		The cursor must be at or after the "if" for which a match is
8412		to be found.  Note that single-quote strings are used to avoid
8413		having to double the backslashes.  The skip expression only
8414		catches comments at the start of a line, not after a command.
8415		Also, a word "en" or "if" halfway a line is considered a
8416		match.
8417		Another example, to search for the matching "{" of a "}": >
8418
8419	:echo searchpair('{', '', '}', 'bW')
8420
8421<		This works when the cursor is at or before the "}" for which a
8422		match is to be found.  To reject matches that syntax
8423		highlighting recognized as strings: >
8424
8425	:echo searchpair('{', '', '}', 'bW',
8426	     \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
8427<
8428							*searchpairpos()*
8429searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
8430				[, {stopline} [, {timeout}]]]])
8431		Same as |searchpair()|, but returns a |List| with the line and
8432		column position of the match. The first element of the |List|
8433		is the line number and the second element is the byte index of
8434		the column position of the match.  If no match is found,
8435		returns [0, 0]. >
8436
8437			:let [lnum,col] = searchpairpos('{', '', '}', 'n')
8438<
8439		See |match-parens| for a bigger and more useful example.
8440
8441searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*searchpos()*
8442		Same as |search()|, but returns a |List| with the line and
8443		column position of the match. The first element of the |List|
8444		is the line number and the second element is the byte index of
8445		the column position of the match. If no match is found,
8446		returns [0, 0].
8447		Example: >
8448	:let [lnum, col] = searchpos('mypattern', 'n')
8449
8450<		When the 'p' flag is given then there is an extra item with
8451		the sub-pattern match number |search()-sub-match|.  Example: >
8452	:let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np')
8453<		In this example "submatch" is 2 when a lowercase letter is
8454		found |/\l|, 3 when an uppercase letter is found |/\u|.
8455
8456		Can also be used as a |method|: >
8457			GetPattern()->searchpos()
8458
8459server2client({clientid}, {string})			*server2client()*
8460		Send a reply string to {clientid}.  The most recent {clientid}
8461		that sent a string can be retrieved with expand("<client>").
8462		{only available when compiled with the |+clientserver| feature}
8463		Note:
8464		This id has to be stored before the next command can be
8465		received.  I.e. before returning from the received command and
8466		before calling any commands that waits for input.
8467		See also |clientserver|.
8468		Example: >
8469			:echo server2client(expand("<client>"), "HELLO")
8470
8471<		Can also be used as a |method|: >
8472			GetClientId()->server2client(string)
8473<
8474serverlist()					*serverlist()*
8475		Return a list of available server names, one per line.
8476		When there are no servers or the information is not available
8477		an empty string is returned.  See also |clientserver|.
8478		{only available when compiled with the |+clientserver| feature}
8479		Example: >
8480			:echo serverlist()
8481<
8482setbufline({expr}, {lnum}, {text})			*setbufline()*
8483		Set line {lnum} to {text} in buffer {expr}.  This works like
8484		|setline()| for the specified buffer.
8485
8486		This function works only for loaded buffers. First call
8487		|bufload()| if needed.
8488
8489		To insert lines use |appendbufline()|.
8490		Any text properties in {lnum} are cleared.
8491
8492		{text} can be a string to set one line, or a list of strings
8493		to set multiple lines.  If the list extends below the last
8494		line then those lines are added.
8495
8496		For the use of {expr}, see |bufname()| above.
8497
8498		{lnum} is used like with |setline()|.
8499		When {lnum} is just below the last line the {text} will be
8500		added below the last line.
8501
8502		When {expr} is not a valid buffer, the buffer is not loaded or
8503		{lnum} is not valid then 1 is returned.  On success 0 is
8504		returned.
8505
8506		Can also be used as a |method|, the base is passed as the
8507		third argument: >
8508			GetText()->setbufline(buf, lnum)
8509
8510setbufvar({expr}, {varname}, {val})			*setbufvar()*
8511		Set option or local variable {varname} in buffer {expr} to
8512		{val}.
8513		This also works for a global or local window option, but it
8514		doesn't work for a global or local window variable.
8515		For a local window option the global value is unchanged.
8516		For the use of {expr}, see |bufname()| above.
8517		Note that the variable name without "b:" must be used.
8518		Examples: >
8519			:call setbufvar(1, "&mod", 1)
8520			:call setbufvar("todo", "myvar", "foobar")
8521<		This function is not available in the |sandbox|.
8522
8523		Can also be used as a |method|, the base is passed as the
8524		third argument: >
8525			GetValue()->setbufvar(buf, varname)
8526
8527setcharsearch({dict})					*setcharsearch()*
8528		Set the current character search information to {dict},
8529		which contains one or more of the following entries:
8530
8531		    char	character which will be used for a subsequent
8532				|,| or |;| command; an empty string clears the
8533				character search
8534		    forward	direction of character search; 1 for forward,
8535				0 for backward
8536		    until	type of character search; 1 for a |t| or |T|
8537				character search, 0 for an |f| or |F|
8538				character search
8539
8540		This can be useful to save/restore a user's character search
8541		from a script: >
8542			:let prevsearch = getcharsearch()
8543			:" Perform a command which clobbers user's search
8544			:call setcharsearch(prevsearch)
8545<		Also see |getcharsearch()|.
8546
8547		Can also be used as a |method|: >
8548			SavedSearch()->setcharsearch()
8549
8550setcmdpos({pos})					*setcmdpos()*
8551		Set the cursor position in the command line to byte position
8552		{pos}.  The first position is 1.
8553		Use |getcmdpos()| to obtain the current position.
8554		Only works while editing the command line, thus you must use
8555		|c_CTRL-\_e|, |c_CTRL-R_=| or |c_CTRL-R_CTRL-R| with '='.  For
8556		|c_CTRL-\_e| and |c_CTRL-R_CTRL-R| with '=' the position is
8557		set after the command line is set to the expression.  For
8558		|c_CTRL-R_=| it is set after evaluating the expression but
8559		before inserting the resulting text.
8560		When the number is too big the cursor is put at the end of the
8561		line.  A number smaller than one has undefined results.
8562		Returns 0 when successful, 1 when not editing the command
8563		line.
8564
8565		Can also be used as a |method|: >
8566			GetPos()->setcmdpos()
8567
8568setenv({name}, {val})						*setenv()*
8569		Set environment variable {name} to {val}.
8570		When {val} is |v:null| the environment variable is deleted.
8571		See also |expr-env|.
8572
8573		Can also be used as a |method|, the base is passed as the
8574		second argument: >
8575			GetPath()->setenv('PATH')
8576
8577setfperm({fname}, {mode})				*setfperm()* *chmod*
8578		Set the file permissions for {fname} to {mode}.
8579		{mode} must be a string with 9 characters.  It is of the form
8580		"rwxrwxrwx", where each group of "rwx" flags represent, in
8581		turn, the permissions of the owner of the file, the group the
8582		file belongs to, and other users.  A '-' character means the
8583		permission is off, any other character means on.  Multi-byte
8584		characters are not supported.
8585
8586		For example "rw-r-----" means read-write for the user,
8587		readable by the group, not accessible by others.  "xx-x-----"
8588		would do the same thing.
8589
8590		Returns non-zero for success, zero for failure.
8591
8592		Can also be used as a |method|: >
8593			GetFilename()->setfperm(mode)
8594<
8595		To read permissions see |getfperm()|.
8596
8597
8598setline({lnum}, {text})					*setline()*
8599		Set line {lnum} of the current buffer to {text}.  To insert
8600		lines use |append()|. To set lines in another buffer use
8601		|setbufline()|.  Any text properties in {lnum} are cleared.
8602
8603		{lnum} is used like with |getline()|.
8604		When {lnum} is just below the last line the {text} will be
8605		added below the last line.
8606
8607		If this succeeds, 0 is returned.  If this fails (most likely
8608		because {lnum} is invalid) 1 is returned.
8609
8610		Example: >
8611			:call setline(5, strftime("%c"))
8612
8613<		When {text} is a |List| then line {lnum} and following lines
8614		will be set to the items in the list.  Example: >
8615			:call setline(5, ['aaa', 'bbb', 'ccc'])
8616<		This is equivalent to: >
8617			:for [n, l] in [[5, 'aaa'], [6, 'bbb'], [7, 'ccc']]
8618			:  call setline(n, l)
8619			:endfor
8620
8621<		Note: The '[ and '] marks are not set.
8622
8623		Can also be used as a |method|, the base is passed as the
8624		second argument: >
8625			GetText()->setline(lnum)
8626
8627setloclist({nr}, {list} [, {action} [, {what}]])		*setloclist()*
8628		Create or replace or add to the location list for window {nr}.
8629		{nr} can be the window number or the |window-ID|.
8630		When {nr} is zero the current window is used.
8631
8632		For a location list window, the displayed location list is
8633		modified.  For an invalid window number {nr}, -1 is returned.
8634		Otherwise, same as |setqflist()|.
8635		Also see |location-list|.
8636
8637		If the optional {what} dictionary argument is supplied, then
8638		only the items listed in {what} are set. Refer to |setqflist()|
8639		for the list of supported keys in {what}.
8640
8641		Can also be used as a |method|, the base is passed as the
8642		second argument: >
8643			GetLoclist()->setloclist(winnr)
8644
8645setmatches({list} [, {win}])				*setmatches()*
8646		Restores a list of matches saved by |getmatches()| for the
8647		current window.  Returns 0 if successful, otherwise -1.  All
8648		current matches are cleared before the list is restored.  See
8649		example for |getmatches()|.
8650		If {win} is specified, use the window with this number or
8651		window ID instead of the current window.
8652
8653		Can also be used as a |method|: >
8654			GetMatches()->setmatches()
8655<
8656							*setpos()*
8657setpos({expr}, {list})
8658		Set the position for {expr}.  Possible values:
8659			.	the cursor
8660			'x	mark x
8661
8662		{list} must be a |List| with four or five numbers:
8663		    [bufnum, lnum, col, off]
8664		    [bufnum, lnum, col, off, curswant]
8665
8666		"bufnum" is the buffer number.  Zero can be used for the
8667		current buffer.  When setting an uppercase mark "bufnum" is
8668		used for the mark position.  For other marks it specifies the
8669		buffer to set the mark in.  You can use the |bufnr()| function
8670		to turn a file name into a buffer number.
8671		For setting the cursor and the ' mark "bufnum" is ignored,
8672		since these are associated with a window, not a buffer.
8673		Does not change the jumplist.
8674
8675		"lnum" and "col" are the position in the buffer.  The first
8676		column is 1.  Use a zero "lnum" to delete a mark.  If "col" is
8677		smaller than 1 then 1 is used.
8678
8679		The "off" number is only used when 'virtualedit' is set. Then
8680		it is the offset in screen columns from the start of the
8681		character.  E.g., a position within a <Tab> or after the last
8682		character.
8683
8684		The "curswant" number is only used when setting the cursor
8685		position.  It sets the preferred column for when moving the
8686		cursor vertically.  When the "curswant" number is missing the
8687		preferred column is not set.  When it is present and setting a
8688		mark position it is not used.
8689
8690		Note that for '< and '> changing the line number may result in
8691		the marks to be effectively be swapped, so that '< is always
8692		before '>.
8693
8694		Returns 0 when the position could be set, -1 otherwise.
8695		An error message is given if {expr} is invalid.
8696
8697		Also see |getpos()| and |getcurpos()|.
8698
8699		This does not restore the preferred column for moving
8700		vertically; if you set the cursor position with this, |j| and
8701		|k| motions will jump to previous columns!  Use |cursor()| to
8702		also set the preferred column.  Also see the "curswant" key in
8703		|winrestview()|.
8704
8705		Can also be used as a |method|: >
8706			GetPosition()->setpos('.')
8707
8708setqflist({list} [, {action} [, {what}]])		*setqflist()*
8709		Create or replace or add to the quickfix list.
8710
8711		If the optional {what} dictionary argument is supplied, then
8712		only the items listed in {what} are set. The first {list}
8713		argument is ignored.  See below for the supported items in
8714		{what}.
8715
8716		When {what} is not present, the items in {list} or used.  Each
8717		item must be a dictionary.  Non-dictionary items in {list} are
8718		ignored.  Each dictionary item can contain the following
8719		entries:
8720
8721		    bufnr	buffer number; must be the number of a valid
8722				buffer
8723		    filename	name of a file; only used when "bufnr" is not
8724				present or it is invalid.
8725		    module	name of a module; if given it will be used in
8726				quickfix error window instead of the filename.
8727		    lnum	line number in the file
8728		    pattern	search pattern used to locate the error
8729		    col		column number
8730		    vcol	when non-zero: "col" is visual column
8731				when zero: "col" is byte index
8732		    nr		error number
8733		    text	description of the error
8734		    type	single-character error type, 'E', 'W', etc.
8735		    valid	recognized error message
8736
8737		The "col", "vcol", "nr", "type" and "text" entries are
8738		optional.  Either "lnum" or "pattern" entry can be used to
8739		locate a matching error line.
8740		If the "filename" and "bufnr" entries are not present or
8741		neither the "lnum" or "pattern" entries are present, then the
8742		item will not be handled as an error line.
8743		If both "pattern" and "lnum" are present then "pattern" will
8744		be used.
8745		If the "valid" entry is not supplied, then the valid flag is
8746		set when "bufnr" is a valid buffer or "filename" exists.
8747		If you supply an empty {list}, the quickfix list will be
8748		cleared.
8749		Note that the list is not exactly the same as what
8750		|getqflist()| returns.
8751
8752		{action} values:				*E927*
8753		'a'	The items from {list} are added to the existing
8754			quickfix list. If there is no existing list, then a
8755			new list is created.
8756
8757		'r'	The items from the current quickfix list are replaced
8758			with the items from {list}.  This can also be used to
8759			clear the list: >
8760				:call setqflist([], 'r')
8761<
8762		'f'	All the quickfix lists in the quickfix stack are
8763			freed.
8764
8765		If {action} is not present or is set to ' ', then a new list
8766		is created. The new quickfix list is added after the current
8767		quickfix list in the stack and all the following lists are
8768		freed. To add a new quickfix list at the end of the stack,
8769		set "nr" in {what} to "$".
8770
8771		The following items can be specified in dictionary {what}:
8772		    context	quickfix list context. See |quickfix-context|
8773		    efm		errorformat to use when parsing text from
8774				"lines". If this is not present, then the
8775				'errorformat' option value is used.
8776				See |quickfix-parse|
8777		    id		quickfix list identifier |quickfix-ID|
8778		    idx		index of the current entry in the quickfix
8779				list specified by 'id' or 'nr'. If set to '$',
8780				then the last entry in the list is set as the
8781				current entry.  See |quickfix-index|
8782		    items	list of quickfix entries. Same as the {list}
8783				argument.
8784		    lines	use 'errorformat' to parse a list of lines and
8785				add the resulting entries to the quickfix list
8786				{nr} or {id}.  Only a |List| value is supported.
8787				See |quickfix-parse|
8788		    nr		list number in the quickfix stack; zero
8789				means the current quickfix list and "$" means
8790				the last quickfix list.
8791		    title	quickfix list title text. See |quickfix-title|
8792		Unsupported keys in {what} are ignored.
8793		If the "nr" item is not present, then the current quickfix list
8794		is modified. When creating a new quickfix list, "nr" can be
8795		set to a value one greater than the quickfix stack size.
8796		When modifying a quickfix list, to guarantee that the correct
8797		list is modified, "id" should be used instead of "nr" to
8798		specify the list.
8799
8800		Examples (See also |setqflist-examples|): >
8801		   :call setqflist([], 'r', {'title': 'My search'})
8802		   :call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
8803		   :call setqflist([], 'a', {'id':qfid, 'lines':["F1:10:L10"]})
8804<
8805		Returns zero for success, -1 for failure.
8806
8807		This function can be used to create a quickfix list
8808		independent of the 'errorformat' setting.  Use a command like
8809		`:cc 1` to jump to the first position.
8810
8811		Can also be used as a |method|, the base is passed as the
8812		second argument: >
8813			GetErrorlist()->setqflist()
8814<
8815							*setreg()*
8816setreg({regname}, {value} [, {options}])
8817		Set the register {regname} to {value}.
8818		If {regname} is "" or "@", the unnamed register '"' is used.
8819		{value} may be any value returned by |getreg()|, including
8820		a |List|.
8821		If {options} contains "a" or {regname} is upper case,
8822		then the value is appended.
8823		{options} can also contain a register type specification:
8824		    "c" or "v"	      |characterwise| mode
8825		    "l" or "V"	      |linewise| mode
8826		    "b" or "<CTRL-V>" |blockwise-visual| mode
8827		If a number immediately follows "b" or "<CTRL-V>" then this is
8828		used as the width of the selection - if it is not specified
8829		then the width of the block is set to the number of characters
8830		in the longest line (counting a <Tab> as 1 character).
8831
8832		If {options} contains no register settings, then the default
8833		is to use character mode unless {value} ends in a <NL> for
8834		string {value} and linewise mode for list {value}. Blockwise
8835		mode is never selected automatically.
8836		Returns zero for success, non-zero for failure.
8837
8838							*E883*
8839		Note: you may not use |List| containing more than one item to
8840		      set search and expression registers. Lists containing no
8841		      items act like empty strings.
8842
8843		Examples: >
8844			:call setreg(v:register, @*)
8845			:call setreg('*', @%, 'ac')
8846			:call setreg('a', "1\n2\n3", 'b5')
8847
8848<		This example shows using the functions to save and restore a
8849		register: >
8850			:let var_a = getreg('a', 1, 1)
8851			:let var_amode = getregtype('a')
8852			    ....
8853			:call setreg('a', var_a, var_amode)
8854<		Note: you may not reliably restore register value
8855		without using the third argument to |getreg()| as without it
8856		newlines are represented as newlines AND Nul bytes are
8857		represented as newlines as well, see |NL-used-for-Nul|.
8858
8859		You can also change the type of a register by appending
8860		nothing: >
8861			:call setreg('a', '', 'al')
8862
8863<		Can also be used as a |method|, the base is passed as the
8864		second argument: >
8865			GetText()->setreg('a')
8866
8867settabvar({tabnr}, {varname}, {val})			*settabvar()*
8868		Set tab-local variable {varname} to {val} in tab page {tabnr}.
8869		|t:var|
8870		Note that autocommands are blocked, side effects may not be
8871		triggered, e.g. when setting 'filetype'.
8872		Note that the variable name without "t:" must be used.
8873		Tabs are numbered starting with one.
8874		This function is not available in the |sandbox|.
8875
8876		Can also be used as a |method|, the base is passed as the
8877		third argument: >
8878			GetValue()->settabvar(tab, name)
8879
8880settabwinvar({tabnr}, {winnr}, {varname}, {val})	*settabwinvar()*
8881		Set option or local variable {varname} in window {winnr} to
8882		{val}.
8883		Tabs are numbered starting with one.  For the current tabpage
8884		use |setwinvar()|.
8885		{winnr} can be the window number or the |window-ID|.
8886		When {winnr} is zero the current window is used.
8887		Note that autocommands are blocked, side effects may not be
8888		triggered, e.g. when setting 'filetype' or 'syntax'.
8889		This also works for a global or local buffer option, but it
8890		doesn't work for a global or local buffer variable.
8891		For a local buffer option the global value is unchanged.
8892		Note that the variable name without "w:" must be used.
8893		Examples: >
8894			:call settabwinvar(1, 1, "&list", 0)
8895			:call settabwinvar(3, 2, "myvar", "foobar")
8896<		This function is not available in the |sandbox|.
8897
8898		Can also be used as a |method|, the base is passed as the
8899		fourth argument: >
8900			GetValue()->settabvar(tab, winnr, name)
8901
8902settagstack({nr}, {dict} [, {action}])			*settagstack()*
8903		Modify the tag stack of the window {nr} using {dict}.
8904		{nr} can be the window number or the |window-ID|.
8905
8906		For a list of supported items in {dict}, refer to
8907		|gettagstack()|. "curidx" takes effect before changing the tag
8908		stack.
8909							*E962*
8910		How the tag stack is modified depends on the {action}
8911		argument:
8912		- If {action} is not present or is set to 'r', then the tag
8913		  stack is replaced.
8914		- If {action} is set to 'a', then new entries from {dict} are
8915		  pushed (added) onto the tag stack.
8916		- If {action} is set to 't', then all the entries from the
8917		  current entry in the tag stack or "curidx" in {dict} are
8918		  removed and then new entries are pushed to the stack.
8919
8920		The current index is set to one after the length of the tag
8921		stack after the modification.
8922
8923		Returns zero for success, -1 for failure.
8924
8925		Examples (for more examples see |tagstack-examples||):
8926		    Empty the tag stack of window 3: >
8927			call settagstack(3, {'items' : []})
8928
8929<		    Save and restore the tag stack: >
8930			let stack = gettagstack(1003)
8931			" do something else
8932			call settagstack(1003, stack)
8933			unlet stack
8934<
8935		Can also be used as a |method|, the base is passed as the
8936		second argument: >
8937			GetStack()->settagstack(winnr)
8938
8939setwinvar({winnr}, {varname}, {val})			*setwinvar()*
8940		Like |settabwinvar()| for the current tab page.
8941		Examples: >
8942			:call setwinvar(1, "&list", 0)
8943			:call setwinvar(2, "myvar", "foobar")
8944
8945<		Can also be used as a |method|, the base is passed as the
8946		third argument: >
8947			GetValue()->setwinvar(winnr, name)
8948
8949sha256({string})						*sha256()*
8950		Returns a String with 64 hex characters, which is the SHA256
8951		checksum of {string}.
8952
8953		Can also be used as a |method|: >
8954			GetText()->sha256()
8955
8956<		{only available when compiled with the |+cryptv| feature}
8957
8958shellescape({string} [, {special}])			*shellescape()*
8959		Escape {string} for use as a shell command argument.
8960		On MS-Windows, when 'shellslash' is not set, it will enclose
8961		{string} in double quotes and double all double quotes within
8962		{string}.
8963		Otherwise it will enclose {string} in single quotes and
8964		replace all "'" with "'\''".
8965
8966		When the {special} argument is present and it's a non-zero
8967		Number or a non-empty String (|non-zero-arg|), then special
8968		items such as "!", "%", "#" and "<cword>" will be preceded by
8969		a backslash.  This backslash will be removed again by the |:!|
8970		command.
8971
8972		The "!" character will be escaped (again with a |non-zero-arg|
8973		{special}) when 'shell' contains "csh" in the tail.  That is
8974		because for csh and tcsh "!" is used for history replacement
8975		even when inside single quotes.
8976
8977		With a |non-zero-arg| {special} the <NL> character is also
8978		escaped.  When 'shell' containing "csh" in the tail it's
8979		escaped a second time.
8980
8981		Example of use with a |:!| command: >
8982		    :exe '!dir ' . shellescape(expand('<cfile>'), 1)
8983<		This results in a directory listing for the file under the
8984		cursor.  Example of use with |system()|: >
8985		    :call system("chmod +w -- " . shellescape(expand("%")))
8986<		See also |::S|.
8987
8988		Can also be used as a |method|: >
8989			GetCommand()->shellescape()
8990
8991shiftwidth([{col}])						*shiftwidth()*
8992		Returns the effective value of 'shiftwidth'. This is the
8993		'shiftwidth' value unless it is zero, in which case it is the
8994		'tabstop' value.  This function was introduced with patch
8995		7.3.694 in 2012, everybody should have it by now (however it
8996		did not allow for the optional {col} argument until 8.1.542).
8997
8998		When there is one argument {col} this is used as column number
8999		for which to return the 'shiftwidth' value. This matters for the
9000		'vartabstop' feature. If the 'vartabstop' setting is enabled and
9001		no {col} argument is given, column 1 will be assumed.
9002
9003		Can also be used as a |method|: >
9004			GetColumn()->shiftwidth()
9005
9006sign_ functions are documented here: |sign-functions-details|
9007
9008
9009simplify({filename})					*simplify()*
9010		Simplify the file name as much as possible without changing
9011		the meaning.  Shortcuts (on MS-Windows) or symbolic links (on
9012		Unix) are not resolved.  If the first path component in
9013		{filename} designates the current directory, this will be
9014		valid for the result as well.  A trailing path separator is
9015		not removed either.
9016		Example: >
9017			simplify("./dir/.././/file/") == "./file/"
9018<		Note: The combination "dir/.." is only removed if "dir" is
9019		a searchable directory or does not exist.  On Unix, it is also
9020		removed when "dir" is a symbolic link within the same
9021		directory.  In order to resolve all the involved symbolic
9022		links before simplifying the path name, use |resolve()|.
9023
9024		Can also be used as a |method|: >
9025			GetName()->simplify()
9026
9027sin({expr})						*sin()*
9028		Return the sine of {expr}, measured in radians, as a |Float|.
9029		{expr} must evaluate to a |Float| or a |Number|.
9030		Examples: >
9031			:echo sin(100)
9032<			-0.506366 >
9033			:echo sin(-4.01)
9034<			0.763301
9035
9036		Can also be used as a |method|: >
9037			Compute()->sin()
9038<
9039		{only available when compiled with the |+float| feature}
9040
9041
9042sinh({expr})						*sinh()*
9043		Return the hyperbolic sine of {expr} as a |Float| in the range
9044		[-inf, inf].
9045		{expr} must evaluate to a |Float| or a |Number|.
9046		Examples: >
9047			:echo sinh(0.5)
9048<			0.521095 >
9049			:echo sinh(-0.9)
9050<			-1.026517
9051
9052		Can also be used as a |method|: >
9053			Compute()->sinh()
9054<
9055		{only available when compiled with the |+float| feature}
9056
9057
9058sort({list} [, {func} [, {dict}]])			*sort()* *E702*
9059		Sort the items in {list} in-place.  Returns {list}.
9060
9061		If you want a list to remain unmodified make a copy first: >
9062			:let sortedlist = sort(copy(mylist))
9063
9064<		When {func} is omitted, is empty or zero, then sort() uses the
9065		string representation of each item to sort on.  Numbers sort
9066		after Strings, |Lists| after Numbers.  For sorting text in the
9067		current buffer use |:sort|.
9068
9069		When {func} is given and it is '1' or 'i' then case is
9070		ignored.
9071
9072		When {func} is given and it is 'n' then all items will be
9073		sorted numerical (Implementation detail: This uses the
9074		strtod() function to parse numbers, Strings, Lists, Dicts and
9075		Funcrefs will be considered as being 0).
9076
9077		When {func} is given and it is 'N' then all items will be
9078		sorted numerical. This is like 'n' but a string containing
9079		digits will be used as the number they represent.
9080
9081		When {func} is given and it is 'f' then all items will be
9082		sorted numerical. All values must be a Number or a Float.
9083
9084		When {func} is a |Funcref| or a function name, this function
9085		is called to compare items.  The function is invoked with two
9086		items as argument and must return zero if they are equal, 1 or
9087		bigger if the first one sorts after the second one, -1 or
9088		smaller if the first one sorts before the second one.
9089
9090		{dict} is for functions with the "dict" attribute.  It will be
9091		used to set the local variable "self". |Dictionary-function|
9092
9093		The sort is stable, items which compare equal (as number or as
9094		string) will keep their relative position. E.g., when sorting
9095		on numbers, text strings will sort next to each other, in the
9096		same order as they were originally.
9097
9098		Can also be used as a |method|: >
9099			mylist->sort()
9100
9101<		Also see |uniq()|.
9102
9103		Example: >
9104			func MyCompare(i1, i2)
9105			   return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
9106			endfunc
9107			let sortedlist = sort(mylist, "MyCompare")
9108<		A shorter compare version for this specific simple case, which
9109		ignores overflow: >
9110			func MyCompare(i1, i2)
9111			   return a:i1 - a:i2
9112			endfunc
9113<
9114sound_clear()						*sound_clear()*
9115		Stop playing all sounds.
9116		{only available when compiled with the |+sound| feature}
9117
9118							*sound_playevent()*
9119sound_playevent({name} [, {callback}])
9120		Play a sound identified by {name}.  Which event names are
9121		supported depends on the system.  Often the XDG sound names
9122		are used.  On Ubuntu they may be found in
9123		/usr/share/sounds/freedesktop/stereo.  Example: >
9124			call sound_playevent('bell')
9125<		On MS-Windows, {name} can be SystemAsterisk, SystemDefault,
9126		SystemExclamation, SystemExit, SystemHand, SystemQuestion,
9127		SystemStart, SystemWelcome, etc.
9128
9129		When {callback} is specified it is invoked when the sound is
9130		finished.  The first argument is the sound ID, the second
9131		argument is the status:
9132			0	sound was played to the end
9133			1	sound was interrupted
9134			2	error occurred after sound started
9135		Example: >
9136		   func Callback(id, status)
9137		     echomsg "sound " .. a:id .. " finished with " .. a:status
9138		   endfunc
9139		   call sound_playevent('bell', 'Callback')
9140
9141<		MS-Windows: {callback} doesn't work for this function.
9142
9143		Returns the sound ID, which can be passed to `sound_stop()`.
9144		Returns zero if the sound could not be played.
9145
9146		Can also be used as a |method|: >
9147			GetSoundName()->sound_playevent()
9148
9149<		{only available when compiled with the |+sound| feature}
9150
9151							*sound_playfile()*
9152sound_playfile({path} [, {callback}])
9153		Like `sound_playevent()` but play sound file {path}.  {path}
9154		must be a full path.  On Ubuntu you may find files to play
9155		with this command: >
9156		    :!find /usr/share/sounds -type f | grep -v index.theme
9157
9158<		Can also be used as a |method|: >
9159			GetSoundPath()->sound_playfile()
9160
9161<		{only available when compiled with the |+sound| feature}
9162
9163
9164sound_stop({id})					*sound_stop()*
9165		Stop playing sound {id}.  {id} must be previously returned by
9166		`sound_playevent()` or `sound_playfile()`.
9167
9168		On MS-Windows, this does not work for event sound started by
9169		`sound_playevent()`. To stop event sounds, use `sound_clear()`.
9170
9171		Can also be used as a |method|: >
9172			soundid->sound_stop()
9173
9174<		{only available when compiled with the |+sound| feature}
9175
9176							*soundfold()*
9177soundfold({word})
9178		Return the sound-folded equivalent of {word}.  Uses the first
9179		language in 'spelllang' for the current window that supports
9180		soundfolding.  'spell' must be set.  When no sound folding is
9181		possible the {word} is returned unmodified.
9182		This can be used for making spelling suggestions.  Note that
9183		the method can be quite slow.
9184
9185		Can also be used as a |method|: >
9186			GetWord()->soundfold()
9187<
9188							*spellbadword()*
9189spellbadword([{sentence}])
9190		Without argument: The result is the badly spelled word under
9191		or after the cursor.  The cursor is moved to the start of the
9192		bad word.  When no bad word is found in the cursor line the
9193		result is an empty string and the cursor doesn't move.
9194
9195		With argument: The result is the first word in {sentence} that
9196		is badly spelled.  If there are no spelling mistakes the
9197		result is an empty string.
9198
9199		The return value is a list with two items:
9200		- The badly spelled word or an empty string.
9201		- The type of the spelling error:
9202			"bad"		spelling mistake
9203			"rare"		rare word
9204			"local"		word only valid in another region
9205			"caps"		word should start with Capital
9206		Example: >
9207			echo spellbadword("the quik brown fox")
9208<			['quik', 'bad'] ~
9209
9210		The spelling information for the current window is used.  The
9211		'spell' option must be set and the value of 'spelllang' is
9212		used.
9213
9214		Can also be used as a |method|: >
9215			GetText()->spellbadword()
9216<
9217							*spellsuggest()*
9218spellsuggest({word} [, {max} [, {capital}]])
9219		Return a |List| with spelling suggestions to replace {word}.
9220		When {max} is given up to this number of suggestions are
9221		returned.  Otherwise up to 25 suggestions are returned.
9222
9223		When the {capital} argument is given and it's non-zero only
9224		suggestions with a leading capital will be given.  Use this
9225		after a match with 'spellcapcheck'.
9226
9227		{word} can be a badly spelled word followed by other text.
9228		This allows for joining two words that were split.  The
9229		suggestions also include the following text, thus you can
9230		replace a line.
9231
9232		{word} may also be a good word.  Similar words will then be
9233		returned.  {word} itself is not included in the suggestions,
9234		although it may appear capitalized.
9235
9236		The spelling information for the current window is used.  The
9237		'spell' option must be set and the values of 'spelllang' and
9238		'spellsuggest' are used.
9239
9240		Can also be used as a |method|: >
9241			GetWord()->spellsuggest()
9242
9243split({expr} [, {pattern} [, {keepempty}]])			*split()*
9244		Make a |List| out of {expr}.  When {pattern} is omitted or
9245		empty each white-separated sequence of characters becomes an
9246		item.
9247		Otherwise the string is split where {pattern} matches,
9248		removing the matched characters. 'ignorecase' is not used
9249		here, add \c to ignore case. |/\c|
9250		When the first or last item is empty it is omitted, unless the
9251		{keepempty} argument is given and it's non-zero.
9252		Other empty items are kept when {pattern} matches at least one
9253		character or when {keepempty} is non-zero.
9254		Example: >
9255			:let words = split(getline('.'), '\W\+')
9256<		To split a string in individual characters: >
9257			:for c in split(mystring, '\zs')
9258<		If you want to keep the separator you can also use '\zs' at
9259		the end of the pattern: >
9260			:echo split('abc:def:ghi', ':\zs')
9261<			['abc:', 'def:', 'ghi'] ~
9262		Splitting a table where the first element can be empty: >
9263			:let items = split(line, ':', 1)
9264<		The opposite function is |join()|.
9265
9266		Can also be used as a |method|: >
9267			GetString()->split()
9268
9269sqrt({expr})						*sqrt()*
9270		Return the non-negative square root of Float {expr} as a
9271		|Float|.
9272		{expr} must evaluate to a |Float| or a |Number|.  When {expr}
9273		is negative the result is NaN (Not a Number).
9274		Examples: >
9275			:echo sqrt(100)
9276<			10.0 >
9277			:echo sqrt(-4.01)
9278<			nan
9279		"nan" may be different, it depends on system libraries.
9280
9281		Can also be used as a |method|: >
9282			Compute()->sqrt()
9283<
9284		{only available when compiled with the |+float| feature}
9285
9286
9287srand([{expr}])						*srand()*
9288		Initialize seed used by |rand()|:
9289		- If {expr} is not given, seed values are initialized by
9290		  reading from /dev/urandom, if possible, or using time(NULL)
9291		  a.k.a. epoch time otherwise; this only has second accuracy.
9292		- If {expr} is given it must be a Number.  It is used to
9293		  initialize the seed values.  This is useful for testing or
9294		  when a predictable sequence is intended.
9295
9296		Examples: >
9297			:let seed = srand()
9298			:let seed = srand(userinput)
9299			:echo rand(seed)
9300
9301state([{what}])						*state()*
9302		Return a string which contains characters indicating the
9303		current state.  Mostly useful in callbacks that want to do
9304		work that may not always be safe.  Roughly this works like:
9305		- callback uses state() to check if work is safe to do.
9306		  Yes: then do it right away.
9307		  No:  add to work queue and add a |SafeState| and/or
9308		       |SafeStateAgain| autocommand (|SafeState| triggers at
9309		       toplevel, |SafeStateAgain| triggers after handling
9310		       messages and callbacks).
9311		- When SafeState or SafeStateAgain is triggered and executes
9312		  your autocommand, check with `state()` if the work can be
9313		  done now, and if yes remove it from the queue and execute.
9314		  Remove the autocommand if the queue is now empty.
9315		Also see |mode()|.
9316
9317		When {what} is given only characters in this string will be
9318		added.  E.g, this checks if the screen has scrolled: >
9319			if state('s') == ''
9320			   " screen has not scrolled
9321<
9322		These characters indicate the state, generally indicating that
9323		something is busy:
9324		    m	halfway a mapping, :normal command, feedkeys() or
9325			stuffed command
9326		    o	operator pending or waiting for a command argument,
9327		        e.g. after |f|
9328		    a	Insert mode autocomplete active
9329		    x	executing an autocommand
9330		    w	blocked on waiting, e.g. ch_evalexpr(), ch_read() and
9331			ch_readraw() when reading json.
9332		    S	not triggering SafeState or SafeStateAgain
9333		    c	callback invoked, including timer (repeats for
9334			recursiveness up to "ccc")
9335		    s	screen has scrolled for messages
9336
9337str2float({expr})					*str2float()*
9338		Convert String {expr} to a Float.  This mostly works the same
9339		as when using a floating point number in an expression, see
9340		|floating-point-format|.  But it's a bit more permissive.
9341		E.g., "1e40" is accepted, while in an expression you need to
9342		write "1.0e40".  The hexadecimal form "0x123" is also
9343		accepted, but not others, like binary or octal.
9344		Text after the number is silently ignored.
9345		The decimal point is always '.', no matter what the locale is
9346		set to.  A comma ends the number: "12,345.67" is converted to
9347		12.0.  You can strip out thousands separators with
9348		|substitute()|: >
9349			let f = str2float(substitute(text, ',', '', 'g'))
9350<
9351		Can also be used as a |method|: >
9352			let f = text->substitute(',', '', 'g')->str2float()
9353<
9354		{only available when compiled with the |+float| feature}
9355
9356str2list({expr} [, {utf8}])				*str2list()*
9357		Return a list containing the number values which represent
9358		each character in String {expr}.  Examples: >
9359			str2list(" ")		returns [32]
9360			str2list("ABC")		returns [65, 66, 67]
9361<		|list2str()| does the opposite.
9362
9363		When {utf8} is omitted or zero, the current 'encoding' is used.
9364		With {utf8} set to 1, always treat the String as utf-8
9365		characters.  With utf-8 composing characters are handled
9366		properly: >
9367			str2list("á")		returns [97, 769]
9368
9369<		Can also be used as a |method|: >
9370			GetString()->str2list()
9371
9372
9373str2nr({expr} [, {base} [, {quoted}]])				*str2nr()*
9374		Convert string {expr} to a number.
9375		{base} is the conversion base, it can be 2, 8, 10 or 16.
9376		When {quoted} is present and non-zero then embedded single
9377		quotes are ignored, thus "1'000'000" is a million.
9378
9379		When {base} is omitted base 10 is used.  This also means that
9380		a leading zero doesn't cause octal conversion to be used, as
9381		with the default String to Number conversion.  Example: >
9382			let nr = str2nr('0123')
9383<
9384		When {base} is 16 a leading "0x" or "0X" is ignored.  With a
9385		different base the result will be zero.  Similarly, when
9386		{base} is 8 a leading "0" is ignored, and when {base} is 2 a
9387		leading "0b" or "0B" is ignored.
9388		Text after the number is silently ignored.
9389
9390		Can also be used as a |method|: >
9391			GetText()->str2nr()
9392
9393strcharpart({src}, {start} [, {len}])			*strcharpart()*
9394		Like |strpart()| but using character index and length instead
9395		of byte index and length.
9396		When a character index is used where a character does not
9397		exist it is assumed to be one character.  For example: >
9398			strcharpart('abc', -1, 2)
9399<		results in 'a'.
9400
9401		Can also be used as a |method|: >
9402			GetText()->strcharpart(5)
9403
9404strchars({expr} [, {skipcc}])					*strchars()*
9405		The result is a Number, which is the number of characters
9406		in String {expr}.
9407		When {skipcc} is omitted or zero, composing characters are
9408		counted separately.
9409		When {skipcc} set to 1, Composing characters are ignored.
9410		Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
9411
9412		{skipcc} is only available after 7.4.755.  For backward
9413		compatibility, you can define a wrapper function: >
9414		    if has("patch-7.4.755")
9415		      function s:strchars(str, skipcc)
9416			return strchars(a:str, a:skipcc)
9417		      endfunction
9418		    else
9419		      function s:strchars(str, skipcc)
9420			if a:skipcc
9421			  return strlen(substitute(a:str, ".", "x", "g"))
9422			else
9423			  return strchars(a:str)
9424			endif
9425		      endfunction
9426		    endif
9427<
9428		Can also be used as a |method|: >
9429			GetText()->strchars()
9430
9431strdisplaywidth({expr} [, {col}])			*strdisplaywidth()*
9432		The result is a Number, which is the number of display cells
9433		String {expr} occupies on the screen when it starts at {col}
9434		(first column is zero).  When {col} is omitted zero is used.
9435		Otherwise it is the screen column where to start.  This
9436		matters for Tab characters.
9437		The option settings of the current window are used.  This
9438		matters for anything that's displayed differently, such as
9439		'tabstop' and 'display'.
9440		When {expr} contains characters with East Asian Width Class
9441		Ambiguous, this function's return value depends on 'ambiwidth'.
9442		Also see |strlen()|, |strwidth()| and |strchars()|.
9443
9444		Can also be used as a |method|: >
9445			GetText()->strdisplaywidth()
9446
9447strftime({format} [, {time}])				*strftime()*
9448		The result is a String, which is a formatted date and time, as
9449		specified by the {format} string.  The given {time} is used,
9450		or the current time if no time is given.  The accepted
9451		{format} depends on your system, thus this is not portable!
9452		See the manual page of the C function strftime() for the
9453		format.  The maximum length of the result is 80 characters.
9454		See also |localtime()|, |getftime()| and |strptime()|.
9455		The language can be changed with the |:language| command.
9456		Examples: >
9457		  :echo strftime("%c")		   Sun Apr 27 11:49:23 1997
9458		  :echo strftime("%Y %b %d %X")	   1997 Apr 27 11:53:25
9459		  :echo strftime("%y%m%d %T")	   970427 11:53:55
9460		  :echo strftime("%H:%M")	   11:55
9461		  :echo strftime("%c", getftime("file.c"))
9462						   Show mod time of file.c.
9463<		Not available on all systems.  To check use: >
9464			:if exists("*strftime")
9465
9466<		Can also be used as a |method|: >
9467			GetFormat()->strftime()
9468
9469strgetchar({str}, {index})				*strgetchar()*
9470		Get character {index} from {str}.  This uses a character
9471		index, not a byte index.  Composing characters are considered
9472		separate characters here.
9473		Also see |strcharpart()| and |strchars()|.
9474
9475		Can also be used as a |method|: >
9476			GetText()->strgetchar(5)
9477
9478stridx({haystack}, {needle} [, {start}])		*stridx()*
9479		The result is a Number, which gives the byte index in
9480		{haystack} of the first occurrence of the String {needle}.
9481		If {start} is specified, the search starts at index {start}.
9482		This can be used to find a second match: >
9483			:let colon1 = stridx(line, ":")
9484			:let colon2 = stridx(line, ":", colon1 + 1)
9485<		The search is done case-sensitive.
9486		For pattern searches use |match()|.
9487		-1 is returned if the {needle} does not occur in {haystack}.
9488		See also |strridx()|.
9489		Examples: >
9490		  :echo stridx("An Example", "Example")	     3
9491		  :echo stridx("Starting point", "Start")    0
9492		  :echo stridx("Starting point", "start")   -1
9493<						*strstr()* *strchr()*
9494		stridx() works similar to the C function strstr().  When used
9495		with a single character it works similar to strchr().
9496
9497		Can also be used as a |method|: >
9498			GetHaystack()->stridx(needle)
9499<
9500							*string()*
9501string({expr})	Return {expr} converted to a String.  If {expr} is a Number,
9502		Float, String, Blob or a composition of them, then the result
9503		can be parsed back with |eval()|.
9504			{expr} type	result ~
9505			String		'string' (single quotes are doubled)
9506			Number		123
9507			Float		123.123456 or 1.123456e8
9508			Funcref		function('name')
9509			Blob		0z00112233.44556677.8899
9510			List		[item, item]
9511			Dictionary	{key: value, key: value}
9512
9513		When a List or Dictionary has a recursive reference it is
9514		replaced by "[...]" or "{...}".  Using eval() on the result
9515		will then fail.
9516
9517		Can also be used as a |method|: >
9518			mylist->string()
9519
9520<		Also see |strtrans()|.
9521
9522							*strlen()*
9523strlen({expr})	The result is a Number, which is the length of the String
9524		{expr} in bytes.
9525		If the argument is a Number it is first converted to a String.
9526		For other types an error is given.
9527		If you want to count the number of multi-byte characters use
9528		|strchars()|.
9529		Also see |len()|, |strdisplaywidth()| and |strwidth()|.
9530
9531		Can also be used as a |method|: >
9532			GetString()->strlen()
9533
9534strpart({src}, {start} [, {len}])			*strpart()*
9535		The result is a String, which is part of {src}, starting from
9536		byte {start}, with the byte length {len}.
9537		To count characters instead of bytes use |strcharpart()|.
9538
9539		When bytes are selected which do not exist, this doesn't
9540		result in an error, the bytes are simply omitted.
9541		If {len} is missing, the copy continues from {start} till the
9542		end of the {src}. >
9543			strpart("abcdefg", 3, 2)    == "de"
9544			strpart("abcdefg", -2, 4)   == "ab"
9545			strpart("abcdefg", 5, 4)    == "fg"
9546			strpart("abcdefg", 3)	    == "defg"
9547
9548<		Note: To get the first character, {start} must be 0.  For
9549		example, to get three bytes under and after the cursor: >
9550			strpart(getline("."), col(".") - 1, 3)
9551<
9552		Can also be used as a |method|: >
9553			GetText()->strpart(5)
9554
9555strptime({format}, {timestring})				*strptime()*
9556		The result is a Number, which is a unix timestamp representing
9557		the date and time in {timestring}, which is expected to match
9558		the format specified in {format}.
9559
9560		The accepted {format} depends on your system, thus this is not
9561		portable!  See the manual page of the C function strptime()
9562		for the format.  Especially avoid "%c".  The value of $TZ also
9563		matters.
9564
9565		If the {timestring} cannot be parsed with {format} zero is
9566		returned.  If you do not know the format of {timestring} you
9567		can try different {format} values until you get a non-zero
9568		result.
9569
9570		See also |strftime()|.
9571		Examples: >
9572		  :echo strptime("%Y %b %d %X", "1997 Apr 27 11:49:23")
9573<		  862156163 >
9574		  :echo strftime("%c", strptime("%y%m%d %T", "970427 11:53:55"))
9575<		  Sun Apr 27 11:53:55 1997 >
9576		  :echo strftime("%c", strptime("%Y%m%d%H%M%S", "19970427115355") + 3600)
9577<		  Sun Apr 27 12:53:55 1997
9578
9579		Not available on all systems.  To check use: >
9580			:if exists("*strptime")
9581
9582
9583strridx({haystack}, {needle} [, {start}])			*strridx()*
9584		The result is a Number, which gives the byte index in
9585		{haystack} of the last occurrence of the String {needle}.
9586		When {start} is specified, matches beyond this index are
9587		ignored.  This can be used to find a match before a previous
9588		match: >
9589			:let lastcomma = strridx(line, ",")
9590			:let comma2 = strridx(line, ",", lastcomma - 1)
9591<		The search is done case-sensitive.
9592		For pattern searches use |match()|.
9593		-1 is returned if the {needle} does not occur in {haystack}.
9594		If the {needle} is empty the length of {haystack} is returned.
9595		See also |stridx()|.  Examples: >
9596		  :echo strridx("an angry armadillo", "an")	     3
9597<							*strrchr()*
9598		When used with a single character it works similar to the C
9599		function strrchr().
9600
9601		Can also be used as a |method|: >
9602			GetHaystack()->strridx(needle)
9603
9604strtrans({expr})					*strtrans()*
9605		The result is a String, which is {expr} with all unprintable
9606		characters translated into printable characters |'isprint'|.
9607		Like they are shown in a window.  Example: >
9608			echo strtrans(@a)
9609<		This displays a newline in register a as "^@" instead of
9610		starting a new line.
9611
9612		Can also be used as a |method|: >
9613			GetString()->strtrans()
9614
9615strwidth({expr})					*strwidth()*
9616		The result is a Number, which is the number of display cells
9617		String {expr} occupies.  A Tab character is counted as one
9618		cell, alternatively use |strdisplaywidth()|.
9619		When {expr} contains characters with East Asian Width Class
9620		Ambiguous, this function's return value depends on 'ambiwidth'.
9621		Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
9622
9623		Can also be used as a |method|: >
9624			GetString()->strwidth()
9625
9626submatch({nr} [, {list}])			*submatch()* *E935*
9627		Only for an expression in a |:substitute| command or
9628		substitute() function.
9629		Returns the {nr}'th submatch of the matched text.  When {nr}
9630		is 0 the whole matched text is returned.
9631		Note that a NL in the string can stand for a line break of a
9632		multi-line match or a NUL character in the text.
9633		Also see |sub-replace-expression|.
9634
9635		If {list} is present and non-zero then submatch() returns
9636		a list of strings, similar to |getline()| with two arguments.
9637		NL characters in the text represent NUL characters in the
9638		text.
9639		Only returns more than one item for |:substitute|, inside
9640		|substitute()| this list will always contain one or zero
9641		items, since there are no real line breaks.
9642
9643		When substitute() is used recursively only the submatches in
9644		the current (deepest) call can be obtained.
9645
9646		Examples: >
9647			:s/\d\+/\=submatch(0) + 1/
9648			:echo substitute(text, '\d\+', '\=submatch(0) + 1', '')
9649<		This finds the first number in the line and adds one to it.
9650		A line break is included as a newline character.
9651
9652		Can also be used as a |method|: >
9653			GetNr()->submatch()
9654
9655substitute({expr}, {pat}, {sub}, {flags})		*substitute()*
9656		The result is a String, which is a copy of {expr}, in which
9657		the first match of {pat} is replaced with {sub}.
9658		When {flags} is "g", all matches of {pat} in {expr} are
9659		replaced.  Otherwise {flags} should be "".
9660
9661		This works like the ":substitute" command (without any flags).
9662		But the matching with {pat} is always done like the 'magic'
9663		option is set and 'cpoptions' is empty (to make scripts
9664		portable).  'ignorecase' is still relevant, use |/\c| or |/\C|
9665		if you want to ignore or match case and ignore 'ignorecase'.
9666		'smartcase' is not used.  See |string-match| for how {pat} is
9667		used.
9668
9669		A "~" in {sub} is not replaced with the previous {sub}.
9670		Note that some codes in {sub} have a special meaning
9671		|sub-replace-special|.  For example, to replace something with
9672		"\n" (two characters), use "\\\\n" or '\\n'.
9673
9674		When {pat} does not match in {expr}, {expr} is returned
9675		unmodified.
9676
9677		Example: >
9678		   :let &path = substitute(&path, ",\\=[^,]*$", "", "")
9679<		This removes the last component of the 'path' option. >
9680		   :echo substitute("testing", ".*", "\\U\\0", "")
9681<		results in "TESTING".
9682
9683		When {sub} starts with "\=", the remainder is interpreted as
9684		an expression. See |sub-replace-expression|.  Example: >
9685		   :echo substitute(s, '%\(\x\x\)',
9686			   \ '\=nr2char("0x" . submatch(1))', 'g')
9687
9688<		When {sub} is a Funcref that function is called, with one
9689		optional argument.  Example: >
9690		   :echo substitute(s, '%\(\x\x\)', SubNr, 'g')
9691<		The optional argument is a list which contains the whole
9692		matched string and up to nine submatches, like what
9693		|submatch()| returns.  Example: >
9694		   :echo substitute(s, '%\(\x\x\)', {m -> '0x' . m[1]}, 'g')
9695
9696<		Can also be used as a |method|: >
9697			GetString()->substitute(pat, sub, flags)
9698
9699swapinfo({fname})					*swapinfo()*
9700		The result is a dictionary, which holds information about the
9701		swapfile {fname}. The available fields are:
9702			version Vim version
9703			user	user name
9704			host	host name
9705			fname	original file name
9706			pid	PID of the Vim process that created the swap
9707				file
9708			mtime	last modification time in seconds
9709			inode	Optional: INODE number of the file
9710			dirty	1 if file was modified, 0 if not
9711		Note that "user" and "host" are truncated to at most 39 bytes.
9712		In case of failure an "error" item is added with the reason:
9713			Cannot open file: file not found or in accessible
9714			Cannot read file: cannot read first block
9715			Not a swap file: does not contain correct block ID
9716			Magic number mismatch: Info in first block is invalid
9717
9718		Can also be used as a |method|: >
9719			GetFilename()->swapinfo()
9720
9721swapname({expr})					*swapname()*
9722		The result is the swap file path of the buffer {expr}.
9723		For the use of {expr}, see |bufname()| above.
9724		If buffer {expr} is the current buffer, the result is equal to
9725		|:swapname| (unless no swap file).
9726		If buffer {expr} has no swap file, returns an empty string.
9727
9728		Can also be used as a |method|: >
9729			GetBufname()->swapname()
9730
9731synID({lnum}, {col}, {trans})				*synID()*
9732		The result is a Number, which is the syntax ID at the position
9733		{lnum} and {col} in the current window.
9734		The syntax ID can be used with |synIDattr()| and
9735		|synIDtrans()| to obtain syntax information about text.
9736
9737		{col} is 1 for the leftmost column, {lnum} is 1 for the first
9738		line.  'synmaxcol' applies, in a longer line zero is returned.
9739		Note that when the position is after the last character,
9740		that's where the cursor can be in Insert mode, synID() returns
9741		zero.
9742
9743		When {trans} is |TRUE|, transparent items are reduced to the
9744		item that they reveal.  This is useful when wanting to know
9745		the effective color.  When {trans} is |FALSE|, the transparent
9746		item is returned.  This is useful when wanting to know which
9747		syntax item is effective (e.g. inside parens).
9748		Warning: This function can be very slow.  Best speed is
9749		obtained by going through the file in forward direction.
9750
9751		Example (echoes the name of the syntax item under the cursor): >
9752			:echo synIDattr(synID(line("."), col("."), 1), "name")
9753<
9754
9755synIDattr({synID}, {what} [, {mode}])			*synIDattr()*
9756		The result is a String, which is the {what} attribute of
9757		syntax ID {synID}.  This can be used to obtain information
9758		about a syntax item.
9759		{mode} can be "gui", "cterm" or "term", to get the attributes
9760		for that mode.  When {mode} is omitted, or an invalid value is
9761		used, the attributes for the currently active highlighting are
9762		used (GUI, cterm or term).
9763		Use synIDtrans() to follow linked highlight groups.
9764		{what}		result
9765		"name"		the name of the syntax item
9766		"fg"		foreground color (GUI: color name used to set
9767				the color, cterm: color number as a string,
9768				term: empty string)
9769		"bg"		background color (as with "fg")
9770		"font"		font name (only available in the GUI)
9771				|highlight-font|
9772		"sp"		special color (as with "fg") |highlight-guisp|
9773		"fg#"		like "fg", but for the GUI and the GUI is
9774				running the name in "#RRGGBB" form
9775		"bg#"		like "fg#" for "bg"
9776		"sp#"		like "fg#" for "sp"
9777		"bold"		"1" if bold
9778		"italic"	"1" if italic
9779		"reverse"	"1" if reverse
9780		"inverse"	"1" if inverse (= reverse)
9781		"standout"	"1" if standout
9782		"underline"	"1" if underlined
9783		"undercurl"	"1" if undercurled
9784		"strike"	"1" if strikethrough
9785
9786		Example (echoes the color of the syntax item under the
9787		cursor): >
9788	:echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg")
9789<
9790		Can also be used as a |method|: >
9791	:echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
9792
9793
9794synIDtrans({synID})					*synIDtrans()*
9795		The result is a Number, which is the translated syntax ID of
9796		{synID}.  This is the syntax group ID of what is being used to
9797		highlight the character.  Highlight links given with
9798		":highlight link" are followed.
9799
9800		Can also be used as a |method|: >
9801	:echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
9802
9803synconcealed({lnum}, {col})				*synconcealed()*
9804		The result is a List with currently three items:
9805		1. The first item in the list is 0 if the character at the
9806		   position {lnum} and {col} is not part of a concealable
9807		   region, 1 if it is.
9808		2. The second item in the list is a string. If the first item
9809		   is 1, the second item contains the text which will be
9810		   displayed in place of the concealed text, depending on the
9811		   current setting of 'conceallevel' and 'listchars'.
9812		3. The third and final item in the list is a number
9813		   representing the specific syntax region matched in the
9814		   line. When the character is not concealed the value is
9815		   zero. This allows detection of the beginning of a new
9816		   concealable region if there are two consecutive regions
9817		   with the same replacement character.  For an example, if
9818		   the text is "123456" and both "23" and "45" are concealed
9819		   and replaced by the character "X", then:
9820			call			returns ~
9821			synconcealed(lnum, 1)   [0, '', 0]
9822			synconcealed(lnum, 2)   [1, 'X', 1]
9823			synconcealed(lnum, 3)   [1, 'X', 1]
9824			synconcealed(lnum, 4)   [1, 'X', 2]
9825			synconcealed(lnum, 5)   [1, 'X', 2]
9826			synconcealed(lnum, 6)   [0, '', 0]
9827
9828
9829synstack({lnum}, {col})					*synstack()*
9830		Return a |List|, which is the stack of syntax items at the
9831		position {lnum} and {col} in the current window.  Each item in
9832		the List is an ID like what |synID()| returns.
9833		The first item in the List is the outer region, following are
9834		items contained in that one.  The last one is what |synID()|
9835		returns, unless not the whole item is highlighted or it is a
9836		transparent item.
9837		This function is useful for debugging a syntax file.
9838		Example that shows the syntax stack under the cursor: >
9839			for id in synstack(line("."), col("."))
9840			   echo synIDattr(id, "name")
9841			endfor
9842<		When the position specified with {lnum} and {col} is invalid
9843		nothing is returned.  The position just after the last
9844		character in a line and the first column in an empty line are
9845		valid positions.
9846
9847system({expr} [, {input}])				*system()* *E677*
9848		Get the output of the shell command {expr} as a string.  See
9849		|systemlist()| to get the output as a List.
9850
9851		When {input} is given and is a string this string is written
9852		to a file and passed as stdin to the command.  The string is
9853		written as-is, you need to take care of using the correct line
9854		separators yourself.
9855		If {input} is given and is a |List| it is written to the file
9856		in a way |writefile()| does with {binary} set to "b" (i.e.
9857		with a newline between each list item with newlines inside
9858		list items converted to NULs).
9859		When {input} is given and is a number that is a valid id for
9860		an existing buffer then the content of the buffer is written
9861		to the file line by line, each line terminated by a NL and
9862		NULs characters where the text has a NL.
9863
9864		Pipes are not used, the 'shelltemp' option is not used.
9865
9866		When prepended by |:silent| the terminal will not be set to
9867		cooked mode.  This is meant to be used for commands that do
9868		not need the user to type.  It avoids stray characters showing
9869		up on the screen which require |CTRL-L| to remove. >
9870			:silent let f = system('ls *.vim')
9871<
9872		Note: Use |shellescape()| or |::S| with |expand()| or
9873		|fnamemodify()| to escape special characters in a command
9874		argument.  Newlines in {expr} may cause the command to fail.
9875		The characters in 'shellquote' and 'shellxquote' may also
9876		cause trouble.
9877		This is not to be used for interactive commands.
9878
9879		The result is a String.  Example: >
9880		    :let files = system("ls " .  shellescape(expand('%:h')))
9881		    :let files = system('ls ' . expand('%:h:S'))
9882
9883<		To make the result more system-independent, the shell output
9884		is filtered to replace <CR> with <NL> for Macintosh, and
9885		<CR><NL> with <NL> for DOS-like systems.
9886		To avoid the string being truncated at a NUL, all NUL
9887		characters are replaced with SOH (0x01).
9888
9889		The command executed is constructed using several options:
9890	'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote'
9891		({tmp} is an automatically generated file name).
9892		For Unix, braces are put around {expr} to allow for
9893		concatenated commands.
9894
9895		The command will be executed in "cooked" mode, so that a
9896		CTRL-C will interrupt the command (on Unix at least).
9897
9898		The resulting error code can be found in |v:shell_error|.
9899		This function will fail in |restricted-mode|.
9900
9901		Note that any wrong value in the options mentioned above may
9902		make the function fail.  It has also been reported to fail
9903		when using a security agent application.
9904		Unlike ":!cmd" there is no automatic check for changed files.
9905		Use |:checktime| to force a check.
9906
9907		Can also be used as a |method|: >
9908			:echo GetCmd()->system()
9909
9910
9911systemlist({expr} [, {input}])				*systemlist()*
9912		Same as |system()|, but returns a |List| with lines (parts of
9913		output separated by NL) with NULs transformed into NLs. Output
9914		is the same as |readfile()| will output with {binary} argument
9915		set to "b", except that there is no extra empty item when the
9916		result ends in a NL.
9917		Note that on MS-Windows you may get trailing CR characters.
9918
9919		To see the difference between "echo hello" and "echo -n hello"
9920		use |system()| and |split()|: >
9921			echo system('echo hello')->split('\n', 1)
9922<
9923		Returns an empty string on error.
9924
9925		Can also be used as a |method|: >
9926			:echo GetCmd()->systemlist()
9927
9928
9929tabpagebuflist([{arg}])					*tabpagebuflist()*
9930		The result is a |List|, where each item is the number of the
9931		buffer associated with each window in the current tab page.
9932		{arg} specifies the number of the tab page to be used. When
9933		omitted the current tab page is used.
9934		When {arg} is invalid the number zero is returned.
9935		To get a list of all buffers in all tabs use this: >
9936			let buflist = []
9937			for i in range(tabpagenr('$'))
9938			   call extend(buflist, tabpagebuflist(i + 1))
9939			endfor
9940<		Note that a buffer may appear in more than one window.
9941
9942		Can also be used as a |method|: >
9943			GetTabpage()->tabpagebuflist()
9944
9945tabpagenr([{arg}])					*tabpagenr()*
9946		The result is a Number, which is the number of the current
9947		tab page.  The first tab page has number 1.
9948		When the optional argument is "$", the number of the last tab
9949		page is returned (the tab page count).
9950		The number can be used with the |:tab| command.
9951
9952
9953tabpagewinnr({tabarg} [, {arg}])			*tabpagewinnr()*
9954		Like |winnr()| but for tab page {tabarg}.
9955		{tabarg} specifies the number of tab page to be used.
9956		{arg} is used like with |winnr()|:
9957		- When omitted the current window number is returned.  This is
9958		  the window which will be used when going to this tab page.
9959		- When "$" the number of windows is returned.
9960		- When "#" the previous window nr is returned.
9961		Useful examples: >
9962		    tabpagewinnr(1)	    " current window of tab page 1
9963		    tabpagewinnr(4, '$')    " number of windows in tab page 4
9964<		When {tabarg} is invalid zero is returned.
9965
9966		Can also be used as a |method|: >
9967			GetTabpage()->tabpagewinnr()
9968<
9969							*tagfiles()*
9970tagfiles()	Returns a |List| with the file names used to search for tags
9971		for the current buffer.  This is the 'tags' option expanded.
9972
9973
9974taglist({expr} [, {filename}])				*taglist()*
9975		Returns a list of tags matching the regular expression {expr}.
9976
9977		If {filename} is passed it is used to prioritize the results
9978		in the same way that |:tselect| does. See |tag-priority|.
9979		{filename} should be the full path of the file.
9980
9981		Each list item is a dictionary with at least the following
9982		entries:
9983			name		Name of the tag.
9984			filename	Name of the file where the tag is
9985					defined.  It is either relative to the
9986					current directory or a full path.
9987			cmd		Ex command used to locate the tag in
9988					the file.
9989			kind		Type of the tag.  The value for this
9990					entry depends on the language specific
9991					kind values.  Only available when
9992					using a tags file generated by
9993					Exuberant ctags or hdrtag.
9994			static		A file specific tag.  Refer to
9995					|static-tag| for more information.
9996		More entries may be present, depending on the content of the
9997		tags file: access, implementation, inherits and signature.
9998		Refer to the ctags documentation for information about these
9999		fields.  For C code the fields "struct", "class" and "enum"
10000		may appear, they give the name of the entity the tag is
10001		contained in.
10002
10003		The ex-command "cmd" can be either an ex search pattern, a
10004		line number or a line number followed by a byte number.
10005
10006		If there are no matching tags, then an empty list is returned.
10007
10008		To get an exact tag match, the anchors '^' and '$' should be
10009		used in {expr}.  This also make the function work faster.
10010		Refer to |tag-regexp| for more information about the tag
10011		search regular expression pattern.
10012
10013		Refer to |'tags'| for information about how the tags file is
10014		located by Vim. Refer to |tags-file-format| for the format of
10015		the tags file generated by the different ctags tools.
10016
10017		Can also be used as a |method|: >
10018			GetTagpattern()->taglist()
10019
10020tan({expr})						*tan()*
10021		Return the tangent of {expr}, measured in radians, as a |Float|
10022		in the range [-inf, inf].
10023		{expr} must evaluate to a |Float| or a |Number|.
10024		Examples: >
10025			:echo tan(10)
10026<			0.648361 >
10027			:echo tan(-4.01)
10028<			-1.181502
10029
10030		Can also be used as a |method|: >
10031			Compute()->tan()
10032<
10033		{only available when compiled with the |+float| feature}
10034
10035
10036tanh({expr})						*tanh()*
10037		Return the hyperbolic tangent of {expr} as a |Float| in the
10038		range [-1, 1].
10039		{expr} must evaluate to a |Float| or a |Number|.
10040		Examples: >
10041			:echo tanh(0.5)
10042<			0.462117 >
10043			:echo tanh(-1)
10044<			-0.761594
10045
10046		Can also be used as a |method|: >
10047			Compute()->tanh()
10048<
10049		{only available when compiled with the |+float| feature}
10050
10051
10052tempname()					*tempname()* *temp-file-name*
10053		The result is a String, which is the name of a file that
10054		doesn't exist.  It can be used for a temporary file.  The name
10055		is different for at least 26 consecutive calls.  Example: >
10056			:let tmpfile = tempname()
10057			:exe "redir > " . tmpfile
10058<		For Unix, the file will be in a private directory |tempfile|.
10059		For MS-Windows forward slashes are used when the 'shellslash'
10060		option is set or when 'shellcmdflag' starts with '-'.
10061
10062
10063term_ functions are documented here: |terminal-function-details|
10064
10065test_ functions are documented here: |test-functions-details|
10066
10067
10068							*timer_info()*
10069timer_info([{id}])
10070		Return a list with information about timers.
10071		When {id} is given only information about this timer is
10072		returned.  When timer {id} does not exist an empty list is
10073		returned.
10074		When {id} is omitted information about all timers is returned.
10075
10076		For each timer the information is stored in a Dictionary with
10077		these items:
10078		    "id"	    the timer ID
10079		    "time"	    time the timer was started with
10080		    "remaining"	    time until the timer fires
10081		    "repeat"	    number of times the timer will still fire;
10082				    -1 means forever
10083		    "callback"	    the callback
10084		    "paused"	    1 if the timer is paused, 0 otherwise
10085
10086		Can also be used as a |method|: >
10087			GetTimer()->timer_info()
10088
10089<		{only available when compiled with the |+timers| feature}
10090
10091timer_pause({timer}, {paused})				*timer_pause()*
10092		Pause or unpause a timer.  A paused timer does not invoke its
10093		callback when its time expires.  Unpausing a timer may cause
10094		the callback to be invoked almost immediately if enough time
10095		has passed.
10096
10097		Pausing a timer is useful to avoid the callback to be called
10098		for a short time.
10099
10100		If {paused} evaluates to a non-zero Number or a non-empty
10101		String, then the timer is paused, otherwise it is unpaused.
10102		See |non-zero-arg|.
10103
10104		Can also be used as a |method|: >
10105			GetTimer()->timer_pause(1)
10106
10107<		{only available when compiled with the |+timers| feature}
10108
10109						*timer_start()* *timer* *timers*
10110timer_start({time}, {callback} [, {options}])
10111		Create a timer and return the timer ID.
10112
10113		{time} is the waiting time in milliseconds. This is the
10114		minimum time before invoking the callback.  When the system is
10115		busy or Vim is not waiting for input the time will be longer.
10116
10117		{callback} is the function to call.  It can be the name of a
10118		function or a |Funcref|.  It is called with one argument, which
10119		is the timer ID.  The callback is only invoked when Vim is
10120		waiting for input.
10121
10122		{options} is a dictionary.  Supported entries:
10123		   "repeat"	Number of times to repeat calling the
10124				callback.  -1 means forever.  When not present
10125				the callback will be called once.
10126				If the timer causes an error three times in a
10127				row the repeat is cancelled.  This avoids that
10128				Vim becomes unusable because of all the error
10129				messages.
10130
10131		Example: >
10132			func MyHandler(timer)
10133			  echo 'Handler called'
10134			endfunc
10135			let timer = timer_start(500, 'MyHandler',
10136				\ {'repeat': 3})
10137<		This will invoke MyHandler() three times at 500 msec
10138		intervals.
10139
10140		Can also be used as a |method|: >
10141			GetMsec()->timer_start(callback)
10142
10143<		Not available in the |sandbox|.
10144		{only available when compiled with the |+timers| feature}
10145
10146timer_stop({timer})					*timer_stop()*
10147		Stop a timer.  The timer callback will no longer be invoked.
10148		{timer} is an ID returned by timer_start(), thus it must be a
10149		Number.  If {timer} does not exist there is no error.
10150
10151		Can also be used as a |method|: >
10152			GetTimer()->timer_stop()
10153
10154<		{only available when compiled with the |+timers| feature}
10155
10156timer_stopall()						*timer_stopall()*
10157		Stop all timers.  The timer callbacks will no longer be
10158		invoked.  Useful if a timer is misbehaving.  If there are no
10159		timers there is no error.
10160
10161		{only available when compiled with the |+timers| feature}
10162
10163tolower({expr})						*tolower()*
10164		The result is a copy of the String given, with all uppercase
10165		characters turned into lowercase (just like applying |gu| to
10166		the string).
10167
10168		Can also be used as a |method|: >
10169			GetText()->tolower()
10170
10171toupper({expr})						*toupper()*
10172		The result is a copy of the String given, with all lowercase
10173		characters turned into uppercase (just like applying |gU| to
10174		the string).
10175
10176		Can also be used as a |method|: >
10177			GetText()->toupper()
10178
10179tr({src}, {fromstr}, {tostr})				*tr()*
10180		The result is a copy of the {src} string with all characters
10181		which appear in {fromstr} replaced by the character in that
10182		position in the {tostr} string.  Thus the first character in
10183		{fromstr} is translated into the first character in {tostr}
10184		and so on.  Exactly like the unix "tr" command.
10185		This code also deals with multibyte characters properly.
10186
10187		Examples: >
10188			echo tr("hello there", "ht", "HT")
10189<		returns "Hello THere" >
10190			echo tr("<blob>", "<>", "{}")
10191<		returns "{blob}"
10192
10193		Can also be used as a |method|: >
10194			GetText()->tr(from, to)
10195
10196trim({text} [, {mask}])						*trim()*
10197		Return {text} as a String where any character in {mask} is
10198		removed from the beginning and  end of {text}.
10199		If {mask} is not given, {mask} is all characters up to 0x20,
10200		which includes Tab, space, NL and CR, plus the non-breaking
10201		space character 0xa0.
10202		This code deals with multibyte characters properly.
10203
10204		Examples: >
10205			echo trim("   some text ")
10206<		returns "some text" >
10207			echo trim("  \r\t\t\r RESERVE \t\n\x0B\xA0") . "_TAIL"
10208<		returns "RESERVE_TAIL" >
10209			echo trim("rm<Xrm<>X>rrm", "rm<>")
10210<		returns "Xrm<>X" (characters in the middle are not removed)
10211
10212		Can also be used as a |method|: >
10213			GetText()->trim()
10214
10215trunc({expr})							*trunc()*
10216		Return the largest integral value with magnitude less than or
10217		equal to {expr} as a |Float| (truncate towards zero).
10218		{expr} must evaluate to a |Float| or a |Number|.
10219		Examples: >
10220			echo trunc(1.456)
10221<			1.0  >
10222			echo trunc(-5.456)
10223<			-5.0  >
10224			echo trunc(4.0)
10225<			4.0
10226
10227		Can also be used as a |method|: >
10228			Compute()->trunc()
10229<
10230		{only available when compiled with the |+float| feature}
10231
10232							*type()*
10233type({expr})	The result is a Number representing the type of {expr}.
10234		Instead of using the number directly, it is better to use the
10235		v:t_ variable that has the value:
10236			Number:	    0  |v:t_number|
10237			String:	    1  |v:t_string|
10238			Funcref:    2  |v:t_func|
10239			List:	    3  |v:t_list|
10240			Dictionary: 4  |v:t_dict|
10241			Float:	    5  |v:t_float|
10242			Boolean:    6  |v:t_bool| (v:false and v:true)
10243			None:	    7  |v:t_none| (v:null and v:none)
10244			Job:	    8  |v:t_job|
10245			Channel:    9  |v:t_channel|
10246			Blob:	   10  |v:t_blob|
10247		For backward compatibility, this method can be used: >
10248			:if type(myvar) == type(0)
10249			:if type(myvar) == type("")
10250			:if type(myvar) == type(function("tr"))
10251			:if type(myvar) == type([])
10252			:if type(myvar) == type({})
10253			:if type(myvar) == type(0.0)
10254			:if type(myvar) == type(v:false)
10255			:if type(myvar) == type(v:none)
10256<		To check if the v:t_ variables exist use this: >
10257			:if exists('v:t_number')
10258
10259<		Can also be used as a |method|: >
10260			mylist->type()
10261
10262undofile({name})					*undofile()*
10263		Return the name of the undo file that would be used for a file
10264		with name {name} when writing.  This uses the 'undodir'
10265		option, finding directories that exist.  It does not check if
10266		the undo file exists.
10267		{name} is always expanded to the full path, since that is what
10268		is used internally.
10269		If {name} is empty undofile() returns an empty string, since a
10270		buffer without a file name will not write an undo file.
10271		Useful in combination with |:wundo| and |:rundo|.
10272		When compiled without the |+persistent_undo| option this always
10273		returns an empty string.
10274
10275		Can also be used as a |method|: >
10276			GetFilename()->undofile()
10277
10278undotree()						*undotree()*
10279		Return the current state of the undo tree in a dictionary with
10280		the following items:
10281		  "seq_last"	The highest undo sequence number used.
10282		  "seq_cur"	The sequence number of the current position in
10283				the undo tree.  This differs from "seq_last"
10284				when some changes were undone.
10285		  "time_cur"	Time last used for |:earlier| and related
10286				commands.  Use |strftime()| to convert to
10287				something readable.
10288		  "save_last"	Number of the last file write.  Zero when no
10289				write yet.
10290		  "save_cur"	Number of the current position in the undo
10291				tree.
10292		  "synced"	Non-zero when the last undo block was synced.
10293				This happens when waiting from input from the
10294				user.  See |undo-blocks|.
10295		  "entries"	A list of dictionaries with information about
10296				undo blocks.
10297
10298		The first item in the "entries" list is the oldest undo item.
10299		Each List item is a Dictionary with these items:
10300		  "seq"		Undo sequence number.  Same as what appears in
10301				|:undolist|.
10302		  "time"	Timestamp when the change happened.  Use
10303				|strftime()| to convert to something readable.
10304		  "newhead"	Only appears in the item that is the last one
10305				that was added.  This marks the last change
10306				and where further changes will be added.
10307		  "curhead"	Only appears in the item that is the last one
10308				that was undone.  This marks the current
10309				position in the undo tree, the block that will
10310				be used by a redo command.  When nothing was
10311				undone after the last change this item will
10312				not appear anywhere.
10313		  "save"	Only appears on the last block before a file
10314				write.  The number is the write count.  The
10315				first write has number 1, the last one the
10316				"save_last" mentioned above.
10317		  "alt"		Alternate entry.  This is again a List of undo
10318				blocks.  Each item may again have an "alt"
10319				item.
10320
10321uniq({list} [, {func} [, {dict}]])			*uniq()* *E882*
10322		Remove second and succeeding copies of repeated adjacent
10323		{list} items in-place.  Returns {list}.  If you want a list
10324		to remain unmodified make a copy first: >
10325			:let newlist = uniq(copy(mylist))
10326<		The default compare function uses the string representation of
10327		each item.  For the use of {func} and {dict} see |sort()|.
10328
10329		Can also be used as a |method|: >
10330			mylist->uniq()
10331
10332values({dict})						*values()*
10333		Return a |List| with all the values of {dict}.  The |List| is
10334		in arbitrary order.  Also see |items()| and |keys()|.
10335
10336		Can also be used as a |method|: >
10337			mydict->values()
10338
10339virtcol({expr})						*virtcol()*
10340		The result is a Number, which is the screen column of the file
10341		position given with {expr}.  That is, the last screen position
10342		occupied by the character at that position, when the screen
10343		would be of unlimited width.  When there is a <Tab> at the
10344		position, the returned Number will be the column at the end of
10345		the <Tab>.  For example, for a <Tab> in column 1, with 'ts'
10346		set to 8, it returns 8. |conceal| is ignored.
10347		For the byte position use |col()|.
10348		For the use of {expr} see |col()|.
10349		When 'virtualedit' is used {expr} can be [lnum, col, off], where
10350		"off" is the offset in screen columns from the start of the
10351		character.  E.g., a position within a <Tab> or after the last
10352		character.  When "off" is omitted zero is used.
10353		When Virtual editing is active in the current mode, a position
10354		beyond the end of the line can be returned. |'virtualedit'|
10355		The accepted positions are:
10356		    .	    the cursor position
10357		    $	    the end of the cursor line (the result is the
10358			    number of displayed characters in the cursor line
10359			    plus one)
10360		    'x	    position of mark x (if the mark is not set, 0 is
10361			    returned)
10362		    v       In Visual mode: the start of the Visual area (the
10363			    cursor is the end).  When not in Visual mode
10364			    returns the cursor position.  Differs from |'<| in
10365			    that it's updated right away.
10366		Note that only marks in the current file can be used.
10367		Examples: >
10368  virtcol(".")	   with text "foo^Lbar", with cursor on the "^L", returns 5
10369  virtcol("$")	   with text "foo^Lbar", returns 9
10370  virtcol("'t")    with text "	  there", with 't at 'h', returns 6
10371<		The first column is 1.  0 is returned for an error.
10372		A more advanced example that echoes the maximum length of
10373		all lines: >
10374		    echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
10375
10376<		Can also be used as a |method|: >
10377			GetPos()->virtcol()
10378
10379
10380visualmode([{expr}])						*visualmode()*
10381		The result is a String, which describes the last Visual mode
10382		used in the current buffer.  Initially it returns an empty
10383		string, but once Visual mode has been used, it returns "v",
10384		"V", or "<CTRL-V>" (a single CTRL-V character) for
10385		character-wise, line-wise, or block-wise Visual mode
10386		respectively.
10387		Example: >
10388			:exe "normal " . visualmode()
10389<		This enters the same Visual mode as before.  It is also useful
10390		in scripts if you wish to act differently depending on the
10391		Visual mode that was used.
10392		If Visual mode is active, use |mode()| to get the Visual mode
10393		(e.g., in a |:vmap|).
10394		If {expr} is supplied and it evaluates to a non-zero Number or
10395		a non-empty String, then the Visual mode will be cleared and
10396		the old value is returned.  See |non-zero-arg|.
10397
10398wildmenumode()					*wildmenumode()*
10399		Returns |TRUE| when the wildmenu is active and |FALSE|
10400		otherwise.  See 'wildmenu' and 'wildmode'.
10401		This can be used in mappings to handle the 'wildcharm' option
10402		gracefully. (Makes only sense with |mapmode-c| mappings).
10403
10404		For example to make <c-j> work like <down> in wildmode, use: >
10405    :cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"
10406<
10407		(Note, this needs the 'wildcharm' option set appropriately).
10408
10409win_execute({id}, {command} [, {silent}])		*win_execute()*
10410		Like `execute()` but in the context of window {id}.
10411		The window will temporarily be made the current window,
10412		without triggering autocommands.  When executing {command}
10413		autocommands will be triggered, this may have unexpected side
10414		effects.  Use |:noautocmd| if needed.
10415		Example: >
10416			call win_execute(winid, 'set syntax=python')
10417<		Doing the same with `setwinvar()` would not trigger
10418		autocommands and not actually show syntax highlighting.
10419							*E994*
10420		Not all commands are allowed in popup windows.
10421		When window {id} does not exist then no error is given.
10422
10423		Can also be used as a |method|, the base is passed as the
10424		second argument: >
10425			GetCommand()->win_execute(winid)
10426
10427win_findbuf({bufnr})					*win_findbuf()*
10428		Returns a list with |window-ID|s for windows that contain
10429		buffer {bufnr}.  When there is none the list is empty.
10430
10431		Can also be used as a |method|: >
10432			GetBufnr()->win_findbuf()
10433
10434win_getid([{win} [, {tab}]])				*win_getid()*
10435		Get the |window-ID| for the specified window.
10436		When {win} is missing use the current window.
10437		With {win} this is the window number.  The top window has
10438		number 1.
10439		Without {tab} use the current tab, otherwise the tab with
10440		number {tab}.  The first tab has number one.
10441		Return zero if the window cannot be found.
10442
10443		Can also be used as a |method|: >
10444			GetWinnr()->win_getid()
10445
10446
10447win_gettype([{nr}])					*win_gettype()*
10448		Return the type of the window:
10449			"popup"		popup window |popup|
10450			"command"	command-line window |cmdwin|
10451			(empty)		normal window
10452			"unknown"	window {nr} not found
10453
10454		When {nr} is omitted return the type of the current window.
10455		When {nr} is given return the type of this window by number or
10456		|window-ID|.
10457
10458		Also see the 'buftype' option.  When running a terminal in a
10459		popup window then 'buftype' is "terminal" and win_gettype()
10460		returns "popup".
10461
10462
10463win_gotoid({expr})					*win_gotoid()*
10464		Go to window with ID {expr}.  This may also change the current
10465		tabpage.
10466		Return 1 if successful, 0 if the window cannot be found.
10467
10468		Can also be used as a |method|: >
10469			GetWinid()->win_gotoid()
10470
10471win_id2tabwin({expr})					*win_id2tabwin()*
10472		Return a list with the tab number and window number of window
10473		with ID {expr}: [tabnr, winnr].
10474		Return [0, 0] if the window cannot be found.
10475
10476		Can also be used as a |method|: >
10477			GetWinid()->win_id2tabwin()
10478
10479win_id2win({expr})					*win_id2win()*
10480		Return the window number of window with ID {expr}.
10481		Return 0 if the window cannot be found in the current tabpage.
10482
10483		Can also be used as a |method|: >
10484			GetWinid()->win_id2win()
10485
10486win_screenpos({nr})					*win_screenpos()*
10487		Return the screen position of window {nr} as a list with two
10488		numbers: [row, col].  The first window always has position
10489		[1, 1], unless there is a tabline, then it is [2, 1].
10490		{nr} can be the window number or the |window-ID|.
10491		Return [0, 0] if the window cannot be found in the current
10492		tabpage.
10493
10494		Can also be used as a |method|: >
10495			GetWinid()->win_screenpos()
10496<
10497win_splitmove({nr}, {target} [, {options}])		*win_splitmove()*
10498	        Move the window {nr} to a new split of the window {target}.
10499		This is similar to moving to {target}, creating a new window
10500		using |:split| but having the same contents as window {nr}, and
10501		then closing {nr}.
10502
10503		Both {nr} and {target} can be window numbers or |window-ID|s.
10504		Both must be in the current tab page.
10505
10506		Returns zero for success, non-zero for failure.
10507
10508		{options} is a Dictionary with the following optional entries:
10509		  "vertical"	When TRUE, the split is created vertically,
10510				like with |:vsplit|.
10511		  "rightbelow"	When TRUE, the split is made below or to the
10512				right (if vertical).  When FALSE, it is done
10513				above or to the left (if vertical).  When not
10514				present, the values of 'splitbelow' and
10515				'splitright' are used.
10516
10517		Can also be used as a |method|: >
10518			GetWinid()->win_splitmove(target)
10519<
10520
10521							*winbufnr()*
10522winbufnr({nr})	The result is a Number, which is the number of the buffer
10523		associated with window {nr}.  {nr} can be the window number or
10524		the |window-ID|.
10525		When {nr} is zero, the number of the buffer in the current
10526		window is returned.
10527		When window {nr} doesn't exist, -1 is returned.
10528		Example: >
10529  :echo "The file in the current window is " . bufname(winbufnr(0))
10530<
10531		Can also be used as a |method|: >
10532			FindWindow()->winbufnr()->bufname()
10533<
10534							*wincol()*
10535wincol()	The result is a Number, which is the virtual column of the
10536		cursor in the window.  This is counting screen cells from the
10537		left side of the window.  The leftmost column is one.
10538
10539							*windowsversion()*
10540windowsversion()
10541		The result is a String.  For MS-Windows it indicates the OS
10542		version.  E.g, Windows 10 is "10.0", Windows 8 is "6.2",
10543		Windows XP is "5.1".  For non-MS-Windows systems the result is
10544		an empty string.
10545
10546winheight({nr})						*winheight()*
10547		The result is a Number, which is the height of window {nr}.
10548		{nr} can be the window number or the |window-ID|.
10549		When {nr} is zero, the height of the current window is
10550		returned.  When window {nr} doesn't exist, -1 is returned.
10551		An existing window always has a height of zero or more.
10552		This excludes any window toolbar line.
10553		Examples: >
10554  :echo "The current window has " . winheight(0) . " lines."
10555
10556<		Can also be used as a |method|: >
10557			GetWinid()->winheight()
10558<
10559winlayout([{tabnr}])					*winlayout()*
10560		The result is a nested List containing the layout of windows
10561		in a tabpage.
10562
10563		Without {tabnr} use the current tabpage, otherwise the tabpage
10564		with number {tabnr}. If the tabpage {tabnr} is not found,
10565		returns an empty list.
10566
10567		For a leaf window, it returns:
10568			['leaf', {winid}]
10569		For horizontally split windows, which form a column, it
10570		returns:
10571			['col', [{nested list of windows}]]
10572		For vertically split windows, which form a row, it returns:
10573			['row', [{nested list of windows}]]
10574
10575		Example: >
10576			" Only one window in the tab page
10577			:echo winlayout()
10578			['leaf', 1000]
10579			" Two horizontally split windows
10580			:echo winlayout()
10581			['col', [['leaf', 1000], ['leaf', 1001]]]
10582			" The second tab page, with three horizontally split
10583			" windows, with two vertically split windows in the
10584			" middle window
10585			:echo winlayout(2)
10586			['col', [['leaf', 1002], ['row', [['leaf', 1003],
10587					    ['leaf', 1001]]], ['leaf', 1000]]]
10588<
10589		Can also be used as a |method|: >
10590			GetTabnr()->winlayout()
10591<
10592							*winline()*
10593winline()	The result is a Number, which is the screen line of the cursor
10594		in the window.  This is counting screen lines from the top of
10595		the window.  The first line is one.
10596		If the cursor was moved the view on the file will be updated
10597		first, this may cause a scroll.
10598
10599							*winnr()*
10600winnr([{arg}])	The result is a Number, which is the number of the current
10601		window.  The top window has number 1.
10602		Returns zero for a popup window.
10603
10604		The optional argument {arg} supports the following values:
10605			$	the number of the last window (the window
10606				count).
10607			#	the number of the last accessed window (where
10608				|CTRL-W_p| goes to).  If there is no previous
10609				window or it is in another tab page 0 is
10610				returned.
10611			{N}j	the number of the Nth window below the
10612				current window (where |CTRL-W_j| goes to).
10613			{N}k	the number of the Nth window above the current
10614				window (where |CTRL-W_k| goes to).
10615			{N}h	the number of the Nth window left of the
10616				current window (where |CTRL-W_h| goes to).
10617			{N}l	the number of the Nth window right of the
10618				current window (where |CTRL-W_l| goes to).
10619		The number can be used with |CTRL-W_w| and ":wincmd w"
10620		|:wincmd|.
10621		Also see |tabpagewinnr()| and |win_getid()|.
10622		Examples: >
10623			let window_count = winnr('$')
10624			let prev_window = winnr('#')
10625			let wnum = winnr('3k')
10626
10627<		Can also be used as a |method|: >
10628			GetWinval()->winnr()
10629<
10630							*winrestcmd()*
10631winrestcmd()	Returns a sequence of |:resize| commands that should restore
10632		the current window sizes.  Only works properly when no windows
10633		are opened or closed and the current window and tab page is
10634		unchanged.
10635		Example: >
10636			:let cmd = winrestcmd()
10637			:call MessWithWindowSizes()
10638			:exe cmd
10639<
10640							*winrestview()*
10641winrestview({dict})
10642		Uses the |Dictionary| returned by |winsaveview()| to restore
10643		the view of the current window.
10644		Note: The {dict} does not have to contain all values, that are
10645		returned by |winsaveview()|. If values are missing, those
10646		settings won't be restored. So you can use: >
10647		    :call winrestview({'curswant': 4})
10648<
10649		This will only set the curswant value (the column the cursor
10650		wants to move on vertical movements) of the cursor to column 5
10651		(yes, that is 5), while all other settings will remain the
10652		same. This is useful, if you set the cursor position manually.
10653
10654		If you have changed the values the result is unpredictable.
10655		If the window size changed the result won't be the same.
10656
10657		Can also be used as a |method|: >
10658			GetView()->winrestview()
10659<
10660							*winsaveview()*
10661winsaveview()	Returns a |Dictionary| that contains information to restore
10662		the view of the current window.  Use |winrestview()| to
10663		restore the view.
10664		This is useful if you have a mapping that jumps around in the
10665		buffer and you want to go back to the original view.
10666		This does not save fold information.  Use the 'foldenable'
10667		option to temporarily switch off folding, so that folds are
10668		not opened when moving around. This may have side effects.
10669		The return value includes:
10670			lnum		cursor line number
10671			col		cursor column (Note: the first column
10672					zero, as opposed to what getpos()
10673					returns)
10674			coladd		cursor column offset for 'virtualedit'
10675			curswant	column for vertical movement
10676			topline		first line in the window
10677			topfill		filler lines, only in diff mode
10678			leftcol		first column displayed
10679			skipcol		columns skipped
10680		Note that no option values are saved.
10681
10682
10683winwidth({nr})						*winwidth()*
10684		The result is a Number, which is the width of window {nr}.
10685		{nr} can be the window number or the |window-ID|.
10686		When {nr} is zero, the width of the current window is
10687		returned.  When window {nr} doesn't exist, -1 is returned.
10688		An existing window always has a width of zero or more.
10689		Examples: >
10690  :echo "The current window has " . winwidth(0) . " columns."
10691  :if winwidth(0) <= 50
10692  :  50 wincmd |
10693  :endif
10694<		For getting the terminal or screen size, see the 'columns'
10695		option.
10696
10697		Can also be used as a |method|: >
10698			GetWinid()->winwidth()
10699
10700
10701wordcount()						*wordcount()*
10702		The result is a dictionary of byte/chars/word statistics for
10703		the current buffer.  This is the same info as provided by
10704		|g_CTRL-G|
10705		The return value includes:
10706			bytes		Number of bytes in the buffer
10707			chars		Number of chars in the buffer
10708			words		Number of words in the buffer
10709			cursor_bytes    Number of bytes before cursor position
10710					(not in Visual mode)
10711			cursor_chars    Number of chars before cursor position
10712					(not in Visual mode)
10713			cursor_words    Number of words before cursor position
10714					(not in Visual mode)
10715			visual_bytes    Number of bytes visually selected
10716					(only in Visual mode)
10717			visual_chars    Number of chars visually selected
10718					(only in Visual mode)
10719			visual_words    Number of words visually selected
10720					(only in Visual mode)
10721
10722
10723							*writefile()*
10724writefile({object}, {fname} [, {flags}])
10725		When {object} is a |List| write it to file {fname}.  Each list
10726		item is separated with a NL.  Each list item must be a String
10727		or Number.
10728		When {flags} contains "b" then binary mode is used: There will
10729		not be a NL after the last list item.  An empty item at the
10730		end does cause the last line in the file to end in a NL.
10731
10732		When {object} is a |Blob| write the bytes to file {fname}
10733		unmodified.
10734
10735		When {flags} contains "a" then append mode is used, lines are
10736		appended to the file: >
10737			:call writefile(["foo"], "event.log", "a")
10738			:call writefile(["bar"], "event.log", "a")
10739<
10740		When {flags} contains "s" then fsync() is called after writing
10741		the file.  This flushes the file to disk, if possible.  This
10742		takes more time but avoids losing the file if the system
10743		crashes.
10744		When {flags} does not contain "S" or "s" then fsync() is
10745		called if the 'fsync' option is set.
10746		When {flags} contains "S" then fsync() is not called, even
10747		when 'fsync' is set.
10748
10749		All NL characters are replaced with a NUL character.
10750		Inserting CR characters needs to be done before passing {list}
10751		to writefile().
10752		An existing file is overwritten, if possible.
10753		When the write fails -1 is returned, otherwise 0.  There is an
10754		error message if the file can't be created or when writing
10755		fails.
10756		Also see |readfile()|.
10757		To copy a file byte for byte: >
10758			:let fl = readfile("foo", "b")
10759			:call writefile(fl, "foocopy", "b")
10760
10761<		Can also be used as a |method|: >
10762			GetText()->writefile("thefile")
10763
10764
10765xor({expr}, {expr})					*xor()*
10766		Bitwise XOR on the two arguments.  The arguments are converted
10767		to a number.  A List, Dict or Float argument causes an error.
10768		Example: >
10769			:let bits = xor(bits, 0x80)
10770<
10771		Can also be used as a |method|: >
10772			:let bits = bits->xor(0x80)
10773<
10774
10775							*feature-list*
10776There are three types of features:
107771.  Features that are only supported when they have been enabled when Vim
10778    was compiled |+feature-list|.  Example: >
10779	:if has("cindent")
107802.  Features that are only supported when certain conditions have been met.
10781    Example: >
10782	:if has("gui_running")
10783<							*has-patch*
107843.  Beyond a certain version or at a certain version and including a specific
10785    patch.  The "patch-7.4.248" feature means that the Vim version is 7.5 or
10786    later, or it is version 7.4 and patch 248 was included.  Example: >
10787	:if has("patch-7.4.248")
10788<    Note that it's possible for patch 248 to be omitted even though 249 is
10789    included.  Only happens when cherry-picking patches.
10790    Note that this form only works for patch 7.4.237 and later, before that
10791    you need to check for the patch and the  v:version.  Example (checking
10792    version 6.2.148 or later): >
10793	:if v:version > 602 || (v:version == 602 && has("patch148"))
10794
10795Hint: To find out if Vim supports backslashes in a file name (MS-Windows),
10796use: `if exists('+shellslash')`
10797
10798
10799acl			Compiled with |ACL| support.
10800all_builtin_terms	Compiled with all builtin terminals enabled.
10801amiga			Amiga version of Vim.
10802arabic			Compiled with Arabic support |Arabic|.
10803arp			Compiled with ARP support (Amiga).
10804autocmd			Compiled with autocommand support. (always true)
10805autochdir		Compiled with support for 'autochdir'
10806autoservername		Automatically enable |clientserver|
10807balloon_eval		Compiled with |balloon-eval| support.
10808balloon_multiline	GUI supports multiline balloons.
10809beos			BeOS version of Vim.
10810browse			Compiled with |:browse| support, and browse() will
10811			work.
10812browsefilter		Compiled with support for |browsefilter|.
10813bsd			Compiled on an OS in the BSD family (excluding macOS).
10814builtin_terms		Compiled with some builtin terminals.
10815byte_offset		Compiled with support for 'o' in 'statusline'
10816channel			Compiled with support for |channel| and |job|
10817cindent			Compiled with 'cindent' support.
10818clientserver		Compiled with remote invocation support |clientserver|.
10819clipboard		Compiled with 'clipboard' support.
10820clipboard_working	Compiled with 'clipboard' support and it can be used.
10821cmdline_compl		Compiled with |cmdline-completion| support.
10822cmdline_hist		Compiled with |cmdline-history| support.
10823cmdline_info		Compiled with 'showcmd' and 'ruler' support.
10824comments		Compiled with |'comments'| support.
10825compatible		Compiled to be very Vi compatible.
10826conpty			Platform where |ConPTY| can be used.
10827cryptv			Compiled with encryption support |encryption|.
10828cscope			Compiled with |cscope| support.
10829cursorbind		Compiled with |'cursorbind'| (always true)
10830debug			Compiled with "DEBUG" defined.
10831dialog_con		Compiled with console dialog support.
10832dialog_gui		Compiled with GUI dialog support.
10833diff			Compiled with |vimdiff| and 'diff' support.
10834digraphs		Compiled with support for digraphs.
10835directx			Compiled with support for DirectX and 'renderoptions'.
10836dnd			Compiled with support for the "~ register |quote_~|.
10837ebcdic			Compiled on a machine with ebcdic character set.
10838emacs_tags		Compiled with support for Emacs tags.
10839eval			Compiled with expression evaluation support.  Always
10840			true, of course!
10841ex_extra		|+ex_extra| (always true)
10842extra_search		Compiled with support for |'incsearch'| and
10843			|'hlsearch'|
10844farsi			Support for Farsi was removed |farsi|.
10845file_in_path		Compiled with support for |gf| and |<cfile>|
10846filterpipe		When 'shelltemp' is off pipes are used for shell
10847			read/write/filter commands
10848find_in_path		Compiled with support for include file searches
10849			|+find_in_path|.
10850float			Compiled with support for |Float|.
10851fname_case		Case in file names matters (for Amiga and MS-Windows
10852			this is not present).
10853folding			Compiled with |folding| support.
10854footer			Compiled with GUI footer support. |gui-footer|
10855fork			Compiled to use fork()/exec() instead of system().
10856gettext			Compiled with message translation |multi-lang|
10857gui			Compiled with GUI enabled.
10858gui_athena		Compiled with Athena GUI.
10859gui_gnome		Compiled with Gnome support (gui_gtk is also defined).
10860gui_gtk			Compiled with GTK+ GUI (any version).
10861gui_gtk2		Compiled with GTK+ 2 GUI (gui_gtk is also defined).
10862gui_gtk3		Compiled with GTK+ 3 GUI (gui_gtk is also defined).
10863gui_haiku		Compiled with Haiku GUI.
10864gui_mac			Compiled with Macintosh GUI.
10865gui_motif		Compiled with Motif GUI.
10866gui_photon		Compiled with Photon GUI.
10867gui_running		Vim is running in the GUI, or it will start soon.
10868gui_win32		Compiled with MS Windows Win32 GUI.
10869gui_win32s		idem, and Win32s system being used (Windows 3.1)
10870haiku			Haiku version of Vim.
10871hangul_input		Compiled with Hangul input support. |hangul|
10872hpux			HP-UX version of Vim.
10873iconv			Can use iconv() for conversion.
10874insert_expand		Compiled with support for CTRL-X expansion commands in
10875			Insert mode. (always true)
10876job			Compiled with support for |channel| and |job|
10877ipv6			Compiled with support for IPv6 networking in |channel|.
10878jumplist		Compiled with |jumplist| support.
10879keymap			Compiled with 'keymap' support.
10880lambda			Compiled with |lambda| support.
10881langmap			Compiled with 'langmap' support.
10882libcall			Compiled with |libcall()| support.
10883linebreak		Compiled with 'linebreak', 'breakat', 'showbreak' and
10884			'breakindent' support.
10885linux			Linux version of Vim.
10886lispindent		Compiled with support for lisp indenting.
10887listcmds		Compiled with commands for the buffer list |:files|
10888			and the argument list |arglist|.
10889localmap		Compiled with local mappings and abbr. |:map-local|
10890lua			Compiled with Lua interface |Lua|.
10891mac			Any Macintosh version of Vim  cf. osx
10892macunix			Synonym for osxdarwin
10893menu			Compiled with support for |:menu|.
10894mksession		Compiled with support for |:mksession|.
10895modify_fname		Compiled with file name modifiers. |filename-modifiers|
10896			(always true)
10897mouse			Compiled with support mouse.
10898mouse_dec		Compiled with support for Dec terminal mouse.
10899mouse_gpm		Compiled with support for gpm (Linux console mouse)
10900mouse_gpm_enabled	GPM mouse is working
10901mouse_netterm		Compiled with support for netterm mouse.
10902mouse_pterm		Compiled with support for qnx pterm mouse.
10903mouse_sysmouse		Compiled with support for sysmouse (*BSD console mouse)
10904mouse_sgr		Compiled with support for sgr mouse.
10905mouse_urxvt		Compiled with support for urxvt mouse.
10906mouse_xterm		Compiled with support for xterm mouse.
10907mouseshape		Compiled with support for 'mouseshape'.
10908multi_byte		Compiled with support for 'encoding' (always true)
10909multi_byte_encoding	'encoding' is set to a multi-byte encoding.
10910multi_byte_ime		Compiled with support for IME input method.
10911multi_lang		Compiled with support for multiple languages.
10912mzscheme		Compiled with MzScheme interface |mzscheme|.
10913netbeans_enabled	Compiled with support for |netbeans| and connected.
10914netbeans_intg		Compiled with support for |netbeans|.
10915num64			Compiled with 64-bit |Number| support.
10916ole			Compiled with OLE automation support for Win32.
10917osx			Compiled for macOS  cf. mac
10918osxdarwin		Compiled for macOS, with |mac-darwin-feature|
10919packages		Compiled with |packages| support.
10920path_extra		Compiled with up/downwards search in 'path' and 'tags'
10921perl			Compiled with Perl interface.
10922persistent_undo		Compiled with support for persistent undo history.
10923postscript		Compiled with PostScript file printing.
10924printer			Compiled with |:hardcopy| support.
10925profile			Compiled with |:profile| support.
10926python			Python 2.x interface available. |has-python|
10927python_compiled		Compiled with Python 2.x interface. |has-python|
10928python_dynamic		Python 2.x interface is dynamically loaded. |has-python|
10929python3			Python 3.x interface available. |has-python|
10930python3_compiled	Compiled with Python 3.x interface. |has-python|
10931python3_dynamic		Python 3.x interface is dynamically loaded. |has-python|
10932pythonx			Python 2.x and/or 3.x interface available. |python_x|
10933qnx			QNX version of Vim.
10934quickfix		Compiled with |quickfix| support.
10935reltime			Compiled with |reltime()| support.
10936rightleft		Compiled with 'rightleft' support.
10937ruby			Compiled with Ruby interface |ruby|.
10938scrollbind		Compiled with 'scrollbind' support. (always true)
10939showcmd			Compiled with 'showcmd' support.
10940signs			Compiled with |:sign| support.
10941smartindent		Compiled with 'smartindent' support.
10942sound			Compiled with sound support, e.g. `sound_playevent()`
10943spell			Compiled with spell checking support |spell|.
10944startuptime		Compiled with |--startuptime| support.
10945statusline		Compiled with support for 'statusline', 'rulerformat'
10946			and special formats of 'titlestring' and 'iconstring'.
10947sun			SunOS version of Vim.
10948sun_workshop		Support for Sun |workshop| has been removed.
10949syntax			Compiled with syntax highlighting support |syntax|.
10950syntax_items		There are active syntax highlighting items for the
10951			current buffer.
10952system			Compiled to use system() instead of fork()/exec().
10953tag_binary		Compiled with binary searching in tags files
10954			|tag-binary-search|.
10955tag_old_static		Support for old static tags was removed, see
10956			|tag-old-static|.
10957tcl			Compiled with Tcl interface.
10958termguicolors		Compiled with true color in terminal support.
10959terminal		Compiled with |terminal| support.
10960terminfo		Compiled with terminfo instead of termcap.
10961termresponse		Compiled with support for |t_RV| and |v:termresponse|.
10962textobjects		Compiled with support for |text-objects|.
10963textprop		Compiled with support for |text-properties|.
10964tgetent			Compiled with tgetent support, able to use a termcap
10965			or terminfo file.
10966timers			Compiled with |timer_start()| support.
10967title			Compiled with window title support |'title'|.
10968toolbar			Compiled with support for |gui-toolbar|.
10969ttyin			input is a terminal (tty)
10970ttyout			output is a terminal (tty)
10971unix			Unix version of Vim. *+unix*
10972unnamedplus		Compiled with support for "unnamedplus" in 'clipboard'
10973user_commands		User-defined commands. (always true)
10974vartabs			Compiled with variable tabstop support |'vartabstop'|.
10975vcon			Win32: Virtual console support is working, can use
10976			'termguicolors'. Also see |+vtp|.
10977vertsplit		Compiled with vertically split windows |:vsplit|.
10978			(always true)
10979vim_starting		True while initial source'ing takes place. |startup|
10980			*vim_starting*
10981viminfo			Compiled with viminfo support.
10982vimscript-1		Compiled Vim script version 1 support
10983vimscript-2		Compiled Vim script version 2 support
10984vimscript-3		Compiled Vim script version 3 support
10985virtualedit		Compiled with 'virtualedit' option. (always true)
10986visual			Compiled with Visual mode. (always true)
10987visualextra		Compiled with extra Visual mode commands. (always
10988			true) |blockwise-operators|.
10989vms			VMS version of Vim.
10990vreplace		Compiled with |gR| and |gr| commands. (always true)
10991vtp			Compiled for vcon support |+vtp| (check vcon to find
10992			out if it works in the current console).
10993wildignore		Compiled with 'wildignore' option.
10994wildmenu		Compiled with 'wildmenu' option.
10995win16			old version for MS-Windows 3.1 (always false)
10996win32			Win32 version of Vim (MS-Windows 95 and later, 32 or
10997			64 bits)
10998win32unix		Win32 version of Vim, using Unix files (Cygwin)
10999win64			Win64 version of Vim (MS-Windows 64 bit).
11000win95			Win32 version for MS-Windows 95/98/ME (always false)
11001winaltkeys		Compiled with 'winaltkeys' option.
11002windows			Compiled with support for more than one window.
11003			(always true)
11004writebackup		Compiled with 'writebackup' default on.
11005xfontset		Compiled with X fontset support |xfontset|.
11006xim			Compiled with X input method support |xim|.
11007xpm			Compiled with pixmap support.
11008xpm_w32			Compiled with pixmap support for Win32. (Only for
11009			backward compatibility. Use "xpm" instead.)
11010xsmp			Compiled with X session management support.
11011xsmp_interact		Compiled with interactive X session management support.
11012xterm_clipboard		Compiled with support for xterm clipboard.
11013xterm_save		Compiled with support for saving and restoring the
11014			xterm screen.
11015x11			Compiled with X11 support.
11016
11017							*string-match*
11018Matching a pattern in a String
11019
11020A regexp pattern as explained at |pattern| is normally used to find a match in
11021the buffer lines.  When a pattern is used to find a match in a String, almost
11022everything works in the same way.  The difference is that a String is handled
11023like it is one line.  When it contains a "\n" character, this is not seen as a
11024line break for the pattern.  It can be matched with a "\n" in the pattern, or
11025with ".".  Example: >
11026	:let a = "aaaa\nxxxx"
11027	:echo matchstr(a, "..\n..")
11028	aa
11029	xx
11030	:echo matchstr(a, "a.x")
11031	a
11032	x
11033
11034Don't forget that "^" will only match at the first character of the String and
11035"$" at the last character of the string.  They don't match after or before a
11036"\n".
11037
11038==============================================================================
110395. Defining functions					*user-functions*
11040
11041New functions can be defined.  These can be called just like builtin
11042functions.  The function executes a sequence of Ex commands.  Normal mode
11043commands can be executed with the |:normal| command.
11044
11045This section is about the legacy functions. For the Vim9 functions, which
11046execute much faster, support type checking and more, see |vim9.txt|.
11047
11048The function name must start with an uppercase letter, to avoid confusion with
11049builtin functions.  To prevent from using the same name in different scripts
11050avoid obvious, short names.  A good habit is to start the function name with
11051the name of the script, e.g., "HTMLcolor()".
11052
11053It's also possible to use curly braces, see |curly-braces-names|.  And the
11054|autoload| facility is useful to define a function only when it's called.
11055
11056							*local-function*
11057A function local to a script must start with "s:".  A local script function
11058can only be called from within the script and from functions, user commands
11059and autocommands defined in the script.  It is also possible to call the
11060function from a mapping defined in the script, but then |<SID>| must be used
11061instead of "s:" when the mapping is expanded outside of the script.
11062There are only script-local functions, no buffer-local or window-local
11063functions.
11064
11065					*:fu* *:function* *E128* *E129* *E123*
11066:fu[nction]		List all functions and their arguments.
11067
11068:fu[nction] {name}	List function {name}.
11069			{name} can also be a |Dictionary| entry that is a
11070			|Funcref|: >
11071				:function dict.init
11072
11073:fu[nction] /{pattern}	List functions with a name matching {pattern}.
11074			Example that lists all functions ending with "File": >
11075				:function /File$
11076<
11077							*:function-verbose*
11078When 'verbose' is non-zero, listing a function will also display where it was
11079last defined. Example: >
11080
11081    :verbose function SetFileTypeSH
11082	function SetFileTypeSH(name)
11083	    Last set from /usr/share/vim/vim-7.0/filetype.vim
11084<
11085See |:verbose-cmd| for more information.
11086
11087						*E124* *E125* *E853* *E884*
11088:fu[nction][!] {name}([arguments]) [range] [abort] [dict] [closure]
11089			Define a new function by the name {name}.  The body of
11090			the function follows in the next lines, until the
11091			matching |:endfunction|.
11092
11093			The name must be made of alphanumeric characters and
11094			'_', and must start with a capital or "s:" (see
11095			above).  Note that using "b:" or "g:" is not allowed.
11096			(since patch 7.4.260 E884 is given if the function
11097			name has a colon in the name, e.g. for "foo:bar()".
11098			Before that patch no error was given).
11099
11100			{name} can also be a |Dictionary| entry that is a
11101			|Funcref|: >
11102				:function dict.init(arg)
11103<			"dict" must be an existing dictionary.  The entry
11104			"init" is added if it didn't exist yet.  Otherwise [!]
11105			is required to overwrite an existing function.  The
11106			result is a |Funcref| to a numbered function.  The
11107			function can only be used with a |Funcref| and will be
11108			deleted if there are no more references to it.
11109								*E127* *E122*
11110			When a function by this name already exists and [!] is
11111			not used an error message is given.  There is one
11112			exception: When sourcing a script again, a function
11113			that was previously defined in that script will be
11114			silently replaced.
11115			When [!] is used, an existing function is silently
11116			replaced.  Unless it is currently being executed, that
11117			is an error.
11118			NOTE: Use ! wisely.  If used without care it can cause
11119			an existing function to be replaced unexpectedly,
11120			which is hard to debug.
11121
11122			For the {arguments} see |function-argument|.
11123
11124					*:func-range* *a:firstline* *a:lastline*
11125			When the [range] argument is added, the function is
11126			expected to take care of a range itself.  The range is
11127			passed as "a:firstline" and "a:lastline".  If [range]
11128			is excluded, ":{range}call" will call the function for
11129			each line in the range, with the cursor on the start
11130			of each line.  See |function-range-example|.
11131			The cursor is still moved to the first line of the
11132			range, as is the case with all Ex commands.
11133								*:func-abort*
11134			When the [abort] argument is added, the function will
11135			abort as soon as an error is detected.
11136								*:func-dict*
11137			When the [dict] argument is added, the function must
11138			be invoked through an entry in a |Dictionary|.  The
11139			local variable "self" will then be set to the
11140			dictionary.  See |Dictionary-function|.
11141						*:func-closure* *E932*
11142			When the [closure] argument is added, the function
11143			can access variables and arguments from the outer
11144			scope.  This is usually called a closure.  In this
11145			example Bar() uses "x" from the scope of Foo().  It
11146			remains referenced even after Foo() returns: >
11147				:function! Foo()
11148				:  let x = 0
11149				:  function! Bar() closure
11150				:    let x += 1
11151				:    return x
11152				:  endfunction
11153				:  return funcref('Bar')
11154				:endfunction
11155
11156				:let F = Foo()
11157				:echo F()
11158<				1 >
11159				:echo F()
11160<				2 >
11161				:echo F()
11162<				3
11163
11164						*function-search-undo*
11165			The last used search pattern and the redo command "."
11166			will not be changed by the function.  This also
11167			implies that the effect of |:nohlsearch| is undone
11168			when the function returns.
11169
11170				*:endf* *:endfunction* *E126* *E193* *W22*
11171:endf[unction] [argument]
11172			The end of a function definition.  Best is to put it
11173			on a line by its own, without [argument].
11174
11175			[argument] can be:
11176				| command	command to execute next
11177				\n command	command to execute next
11178				" comment	always ignored
11179				anything else	ignored, warning given when
11180						'verbose' is non-zero
11181			The support for a following command was added in Vim
11182			8.0.0654, before that any argument was silently
11183			ignored.
11184
11185			To be able to define a function inside an `:execute`
11186			command, use line breaks instead of |:bar|: >
11187				:exe "func Foo()\necho 'foo'\nendfunc"
11188<
11189				*:delf* *:delfunction* *E130* *E131* *E933*
11190:delf[unction][!] {name}
11191			Delete function {name}.
11192			{name} can also be a |Dictionary| entry that is a
11193			|Funcref|: >
11194				:delfunc dict.init
11195<			This will remove the "init" entry from "dict".  The
11196			function is deleted if there are no more references to
11197			it.
11198			With the ! there is no error if the function does not
11199			exist.
11200							*:retu* *:return* *E133*
11201:retu[rn] [expr]	Return from a function.  When "[expr]" is given, it is
11202			evaluated and returned as the result of the function.
11203			If "[expr]" is not given, the number 0 is returned.
11204			When a function ends without an explicit ":return",
11205			the number 0 is returned.
11206			Note that there is no check for unreachable lines,
11207			thus there is no warning if commands follow ":return".
11208
11209			If the ":return" is used after a |:try| but before the
11210			matching |:finally| (if present), the commands
11211			following the ":finally" up to the matching |:endtry|
11212			are executed first.  This process applies to all
11213			nested ":try"s inside the function.  The function
11214			returns at the outermost ":endtry".
11215
11216						*function-argument* *a:var*
11217An argument can be defined by giving its name.  In the function this can then
11218be used as "a:name" ("a:" for argument).
11219					*a:0* *a:1* *a:000* *E740* *...*
11220Up to 20 arguments can be given, separated by commas.  After the named
11221arguments an argument "..." can be specified, which means that more arguments
11222may optionally be following.  In the function the extra arguments can be used
11223as "a:1", "a:2", etc.  "a:0" is set to the number of extra arguments (which
11224can be 0).  "a:000" is set to a |List| that contains these arguments.  Note
11225that "a:1" is the same as "a:000[0]".
11226								*E742*
11227The a: scope and the variables in it cannot be changed, they are fixed.
11228However, if a composite type is used, such as |List| or |Dictionary| , you can
11229change their contents.  Thus you can pass a |List| to a function and have the
11230function add an item to it.  If you want to make sure the function cannot
11231change a |List| or |Dictionary| use |:lockvar|.
11232
11233It is also possible to define a function without any arguments.  You must
11234still supply the () then.
11235
11236It is allowed to define another function inside a function body.
11237
11238						*optional-function-argument*
11239You can provide default values for positional named arguments.  This makes
11240them optional for function calls.  When a positional argument is not
11241specified at a call, the default expression is used to initialize it.
11242This only works for functions declared with `:function` or `:def`, not for
11243lambda expressions |expr-lambda|.
11244
11245Example: >
11246  function Something(key, value = 10)
11247     echo a:key .. ": " .. a:value
11248  endfunction
11249  call Something('empty')	"empty: 10"
11250  call Something('key', 20)	"key: 20"
11251
11252The argument default expressions are evaluated at the time of the function
11253call, not definition.  Thus it is possible to use an expression which is
11254invalid the moment the function is defined.  The expressions are also only
11255evaluated when arguments are not specified during a call.
11256
11257You can pass |v:none| to use the default expression.  Note that this means you
11258cannot pass v:none as an ordinary value when an argument has a default
11259expression.
11260
11261Example: >
11262  function Something(a = 10, b = 20, c = 30)
11263  endfunction
11264  call Something(1, v:none, 3)	    " b = 20
11265<
11266								*E989*
11267Optional arguments with default expressions must occur after any mandatory
11268arguments.  You can use "..." after all optional named arguments.
11269
11270It is possible for later argument defaults to refer to prior arguments,
11271but not the other way around.  They must be prefixed with "a:", as with all
11272arguments.
11273
11274Example that works: >
11275  :function Okay(mandatory, optional = a:mandatory)
11276  :endfunction
11277Example that does NOT work: >
11278  :function NoGood(first = a:second, second = 10)
11279  :endfunction
11280<
11281When not using "...", the number of arguments in a function call must be at
11282least equal to the number of mandatory named arguments.  When using "...", the
11283number of arguments may be larger than the total of mandatory and optional
11284arguments.
11285
11286							*local-variables*
11287Inside a function local variables can be used.  These will disappear when the
11288function returns.  Global variables need to be accessed with "g:".
11289
11290Example: >
11291  :function Table(title, ...)
11292  :  echohl Title
11293  :  echo a:title
11294  :  echohl None
11295  :  echo a:0 . " items:"
11296  :  for s in a:000
11297  :    echon ' ' . s
11298  :  endfor
11299  :endfunction
11300
11301This function can then be called with: >
11302  call Table("Table", "line1", "line2")
11303  call Table("Empty Table")
11304
11305To return more than one value, return a |List|: >
11306  :function Compute(n1, n2)
11307  :  if a:n2 == 0
11308  :    return ["fail", 0]
11309  :  endif
11310  :  return ["ok", a:n1 / a:n2]
11311  :endfunction
11312
11313This function can then be called with: >
11314  :let [success, div] = Compute(102, 6)
11315  :if success == "ok"
11316  :  echo div
11317  :endif
11318<
11319						*:cal* *:call* *E107* *E117*
11320:[range]cal[l] {name}([arguments])
11321		Call a function.  The name of the function and its arguments
11322		are as specified with `:function`.  Up to 20 arguments can be
11323		used.  The returned value is discarded.
11324		Without a range and for functions that accept a range, the
11325		function is called once.  When a range is given the cursor is
11326		positioned at the start of the first line before executing the
11327		function.
11328		When a range is given and the function doesn't handle it
11329		itself, the function is executed for each line in the range,
11330		with the cursor in the first column of that line.  The cursor
11331		is left at the last line (possibly moved by the last function
11332		call).  The arguments are re-evaluated for each line.  Thus
11333		this works:
11334						*function-range-example*  >
11335	:function Mynumber(arg)
11336	:  echo line(".") . " " . a:arg
11337	:endfunction
11338	:1,5call Mynumber(getline("."))
11339<
11340		The "a:firstline" and "a:lastline" are defined anyway, they
11341		can be used to do something different at the start or end of
11342		the range.
11343
11344		Example of a function that handles the range itself: >
11345
11346	:function Cont() range
11347	:  execute (a:firstline + 1) . "," . a:lastline . 's/^/\t\\ '
11348	:endfunction
11349	:4,8call Cont()
11350<
11351		This function inserts the continuation character "\" in front
11352		of all the lines in the range, except the first one.
11353
11354		When the function returns a composite value it can be further
11355		dereferenced, but the range will not be used then.  Example: >
11356	:4,8call GetDict().method()
11357<		Here GetDict() gets the range but method() does not.
11358
11359								*E132*
11360The recursiveness of user functions is restricted with the |'maxfuncdepth'|
11361option.
11362
11363It is also possible to use `:eval`.  It does not support a range, but does
11364allow for method chaining, e.g.: >
11365	eval GetList()->Filter()->append('$')
11366
11367A function can also be called as part of evaluating an expression or when it
11368is used as a method: >
11369	let x = GetList()
11370	let y = GetList()->Filter()
11371
11372
11373AUTOMATICALLY LOADING FUNCTIONS ~
11374							*autoload-functions*
11375When using many or large functions, it's possible to automatically define them
11376only when they are used.  There are two methods: with an autocommand and with
11377the "autoload" directory in 'runtimepath'.
11378
11379
11380Using an autocommand ~
11381
11382This is introduced in the user manual, section |41.14|.
11383
11384The autocommand is useful if you have a plugin that is a long Vim script file.
11385You can define the autocommand and quickly quit the script with `:finish`.
11386That makes Vim startup faster.  The autocommand should then load the same file
11387again, setting a variable to skip the `:finish` command.
11388
11389Use the FuncUndefined autocommand event with a pattern that matches the
11390function(s) to be defined.  Example: >
11391
11392	:au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim
11393
11394The file "~/vim/bufnetfuncs.vim" should then define functions that start with
11395"BufNet".  Also see |FuncUndefined|.
11396
11397
11398Using an autoload script ~
11399							*autoload* *E746*
11400This is introduced in the user manual, section |41.15|.
11401
11402Using a script in the "autoload" directory is simpler, but requires using
11403exactly the right file name.  A function that can be autoloaded has a name
11404like this: >
11405
11406	:call filename#funcname()
11407
11408When such a function is called, and it is not defined yet, Vim will search the
11409"autoload" directories in 'runtimepath' for a script file called
11410"filename.vim".  For example "~/.vim/autoload/filename.vim".  That file should
11411then define the function like this: >
11412
11413	function filename#funcname()
11414	   echo "Done!"
11415	endfunction
11416
11417The file name and the name used before the # in the function must match
11418exactly, and the defined function must have the name exactly as it will be
11419called.
11420
11421It is possible to use subdirectories.  Every # in the function name works like
11422a path separator.  Thus when calling a function: >
11423
11424	:call foo#bar#func()
11425
11426Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'.
11427
11428This also works when reading a variable that has not been set yet: >
11429
11430	:let l = foo#bar#lvar
11431
11432However, when the autoload script was already loaded it won't be loaded again
11433for an unknown variable.
11434
11435When assigning a value to such a variable nothing special happens.  This can
11436be used to pass settings to the autoload script before it's loaded: >
11437
11438	:let foo#bar#toggle = 1
11439	:call foo#bar#func()
11440
11441Note that when you make a mistake and call a function that is supposed to be
11442defined in an autoload script, but the script doesn't actually define the
11443function, the script will be sourced every time you try to call the function.
11444And you will get an error message every time.
11445
11446Also note that if you have two script files, and one calls a function in the
11447other and vice versa, before the used function is defined, it won't work.
11448Avoid using the autoload functionality at the toplevel.
11449
11450Hint: If you distribute a bunch of scripts you can pack them together with the
11451|vimball| utility.  Also read the user manual |distribute-script|.
11452
11453==============================================================================
114546. Curly braces names					*curly-braces-names*
11455
11456In most places where you can use a variable, you can use a "curly braces name"
11457variable.  This is a regular variable name with one or more expressions
11458wrapped in braces {} like this: >
11459	my_{adjective}_variable
11460
11461When Vim encounters this, it evaluates the expression inside the braces, puts
11462that in place of the expression, and re-interprets the whole as a variable
11463name.  So in the above example, if the variable "adjective" was set to
11464"noisy", then the reference would be to "my_noisy_variable", whereas if
11465"adjective" was set to "quiet", then it would be to "my_quiet_variable".
11466
11467One application for this is to create a set of variables governed by an option
11468value.  For example, the statement >
11469	echo my_{&background}_message
11470
11471would output the contents of "my_dark_message" or "my_light_message" depending
11472on the current value of 'background'.
11473
11474You can use multiple brace pairs: >
11475	echo my_{adverb}_{adjective}_message
11476..or even nest them: >
11477	echo my_{ad{end_of_word}}_message
11478where "end_of_word" is either "verb" or "jective".
11479
11480However, the expression inside the braces must evaluate to a valid single
11481variable name, e.g. this is invalid: >
11482	:let foo='a + b'
11483	:echo c{foo}d
11484.. since the result of expansion is "ca + bd", which is not a variable name.
11485
11486						*curly-braces-function-names*
11487You can call and define functions by an evaluated name in a similar way.
11488Example: >
11489	:let func_end='whizz'
11490	:call my_func_{func_end}(parameter)
11491
11492This would call the function "my_func_whizz(parameter)".
11493
11494This does NOT work: >
11495  :let i = 3
11496  :let @{i} = ''  " error
11497  :echo @{i}      " error
11498
11499==============================================================================
115007. Commands						*expression-commands*
11501
11502:let {var-name} = {expr1}				*:let* *E18*
11503			Set internal variable {var-name} to the result of the
11504			expression {expr1}.  The variable will get the type
11505			from the {expr}.  If {var-name} didn't exist yet, it
11506			is created.
11507
11508:let {var-name}[{idx}] = {expr1}			*E689*
11509			Set a list item to the result of the expression
11510			{expr1}.  {var-name} must refer to a list and {idx}
11511			must be a valid index in that list.  For nested list
11512			the index can be repeated.
11513			This cannot be used to add an item to a |List|.
11514			This cannot be used to set a byte in a String.  You
11515			can do that like this: >
11516				:let var = var[0:2] . 'X' . var[4:]
11517<			When {var-name} is a |Blob| then {idx} can be the
11518			length of the blob, in which case one byte is
11519			appended.
11520
11521							*E711* *E719*
11522:let {var-name}[{idx1}:{idx2}] = {expr1}		*E708* *E709* *E710*
11523			Set a sequence of items in a |List| to the result of
11524			the expression {expr1}, which must be a list with the
11525			correct number of items.
11526			{idx1} can be omitted, zero is used instead.
11527			{idx2} can be omitted, meaning the end of the list.
11528			When the selected range of items is partly past the
11529			end of the list, items will be added.
11530
11531			*:let+=* *:let-=* *:letstar=*
11532			*:let/=* *:let%=* *:let.=* *:let..=* *E734* *E985*
11533:let {var} += {expr1}	Like ":let {var} = {var} + {expr1}".
11534:let {var} -= {expr1}	Like ":let {var} = {var} - {expr1}".
11535:let {var} *= {expr1}	Like ":let {var} = {var} * {expr1}".
11536:let {var} /= {expr1}	Like ":let {var} = {var} / {expr1}".
11537:let {var} %= {expr1}	Like ":let {var} = {var} % {expr1}".
11538:let {var} .= {expr1}	Like ":let {var} = {var} . {expr1}".
11539:let {var} ..= {expr1}	Like ":let {var} = {var} .. {expr1}".
11540			These fail if {var} was not set yet and when the type
11541			of {var} and {expr1} don't fit the operator.
11542			`.=` is not supported with Vim script version 2 and
11543			later, see |vimscript-version|.
11544
11545
11546:let ${env-name} = {expr1}			*:let-environment* *:let-$*
11547			Set environment variable {env-name} to the result of
11548			the expression {expr1}.  The type is always String.
11549
11550			On some systems making an environment variable empty
11551			causes it to be deleted.  Many systems do not make a
11552			difference between an environment variable that is not
11553			set and an environment variable that is empty.
11554
11555:let ${env-name} .= {expr1}
11556			Append {expr1} to the environment variable {env-name}.
11557			If the environment variable didn't exist yet this
11558			works like "=".
11559
11560:let @{reg-name} = {expr1}			*:let-register* *:let-@*
11561			Write the result of the expression {expr1} in register
11562			{reg-name}.  {reg-name} must be a single letter, and
11563			must be the name of a writable register (see
11564			|registers|).  "@@" can be used for the unnamed
11565			register, "@/" for the search pattern.
11566			If the result of {expr1} ends in a <CR> or <NL>, the
11567			register will be linewise, otherwise it will be set to
11568			characterwise.
11569			This can be used to clear the last search pattern: >
11570				:let @/ = ""
11571<			This is different from searching for an empty string,
11572			that would match everywhere.
11573
11574:let @{reg-name} .= {expr1}
11575			Append {expr1} to register {reg-name}.  If the
11576			register was empty it's like setting it to {expr1}.
11577
11578:let &{option-name} = {expr1}			*:let-option* *:let-&*
11579			Set option {option-name} to the result of the
11580			expression {expr1}.  A String or Number value is
11581			always converted to the type of the option.
11582			For an option local to a window or buffer the effect
11583			is just like using the |:set| command: both the local
11584			value and the global value are changed.
11585			Example: >
11586				:let &path = &path . ',/usr/local/include'
11587<			This also works for terminal codes in the form t_xx.
11588			But only for alphanumerical names.  Example: >
11589				:let &t_k1 = "\<Esc>[234;"
11590<			When the code does not exist yet it will be created as
11591			a terminal key code, there is no error.
11592
11593:let &{option-name} .= {expr1}
11594			For a string option: Append {expr1} to the value.
11595			Does not insert a comma like |:set+=|.
11596
11597:let &{option-name} += {expr1}
11598:let &{option-name} -= {expr1}
11599			For a number or boolean option: Add or subtract
11600			{expr1}.
11601
11602:let &l:{option-name} = {expr1}
11603:let &l:{option-name} .= {expr1}
11604:let &l:{option-name} += {expr1}
11605:let &l:{option-name} -= {expr1}
11606			Like above, but only set the local value of an option
11607			(if there is one).  Works like |:setlocal|.
11608
11609:let &g:{option-name} = {expr1}
11610:let &g:{option-name} .= {expr1}
11611:let &g:{option-name} += {expr1}
11612:let &g:{option-name} -= {expr1}
11613			Like above, but only set the global value of an option
11614			(if there is one).  Works like |:setglobal|.
11615
11616:let [{name1}, {name2}, ...] = {expr1}		*:let-unpack* *E687* *E688*
11617			{expr1} must evaluate to a |List|.  The first item in
11618			the list is assigned to {name1}, the second item to
11619			{name2}, etc.
11620			The number of names must match the number of items in
11621			the |List|.
11622			Each name can be one of the items of the ":let"
11623			command as mentioned above.
11624			Example: >
11625				:let [s, item] = GetItem(s)
11626<			Detail: {expr1} is evaluated first, then the
11627			assignments are done in sequence.  This matters if
11628			{name2} depends on {name1}.  Example: >
11629				:let x = [0, 1]
11630				:let i = 0
11631				:let [i, x[i]] = [1, 2]
11632				:echo x
11633<			The result is [0, 2].
11634
11635:let [{name1}, {name2}, ...] .= {expr1}
11636:let [{name1}, {name2}, ...] += {expr1}
11637:let [{name1}, {name2}, ...] -= {expr1}
11638			Like above, but append/add/subtract the value for each
11639			|List| item.
11640
11641:let [{name}, ..., ; {lastname}] = {expr1}				*E452*
11642			Like |:let-unpack| above, but the |List| may have more
11643			items than there are names.  A list of the remaining
11644			items is assigned to {lastname}.  If there are no
11645			remaining items {lastname} is set to an empty list.
11646			Example: >
11647				:let [a, b; rest] = ["aval", "bval", 3, 4]
11648<
11649:let [{name}, ..., ; {lastname}] .= {expr1}
11650:let [{name}, ..., ; {lastname}] += {expr1}
11651:let [{name}, ..., ; {lastname}] -= {expr1}
11652			Like above, but append/add/subtract the value for each
11653			|List| item.
11654
11655						*:let=<<* *:let-heredoc*
11656						*E990* *E991* *E172* *E221*
11657:let {var-name} =<< [trim] {endmarker}
11658text...
11659text...
11660{endmarker}
11661			Set internal variable {var-name} to a List containing
11662			the lines of text bounded by the string {endmarker}.
11663			{endmarker} must not contain white space.
11664			{endmarker} cannot start with a lower case character.
11665			The last line should end only with the {endmarker}
11666			string without any other character.  Watch out for
11667			white space after {endmarker}!
11668
11669			Without "trim" any white space characters in the lines
11670			of text are preserved.  If "trim" is specified before
11671			{endmarker}, then indentation is stripped so you can
11672			do: >
11673				let text =<< trim END
11674				   if ok
11675				     echo 'done'
11676				   endif
11677				END
11678<			Results in: ["if ok", "  echo 'done'", "endif"]
11679			The marker must line up with "let" and the indentation
11680			of the first line is removed from all the text lines.
11681			Specifically: all the leading indentation exactly
11682			matching the leading indentation of the first
11683			non-empty text line is stripped from the input lines.
11684			All leading indentation exactly matching the leading
11685			indentation before `let` is stripped from the line
11686			containing {endmarker}.  Note that the difference
11687			between space and tab matters here.
11688
11689			If {var-name} didn't exist yet, it is created.
11690			Cannot be followed by another command, but can be
11691			followed by a comment.
11692
11693			To avoid line continuation to be applied, consider
11694			adding 'C' to 'cpoptions': >
11695				set cpo+=C
11696				let var =<< END
11697				   \ leading backslash
11698				END
11699				set cpo-=C
11700<
11701			Examples: >
11702				let var1 =<< END
11703				Sample text 1
11704				    Sample text 2
11705				Sample text 3
11706				END
11707
11708				let data =<< trim DATA
11709					1 2 3 4
11710					5 6 7 8
11711				DATA
11712<
11713								*E121*
11714:let {var-name}	..	List the value of variable {var-name}.  Multiple
11715			variable names may be given.  Special names recognized
11716			here:				*E738*
11717			  g:	global variables
11718			  b:	local buffer variables
11719			  w:	local window variables
11720			  t:	local tab page variables
11721			  s:	script-local variables
11722			  l:	local function variables
11723			  v:	Vim variables.
11724
11725:let			List the values of all variables.  The type of the
11726			variable is indicated before the value:
11727			    <nothing>	String
11728				#	Number
11729				*	Funcref
11730
11731:unl[et][!] {name} ...				*:unlet* *:unl* *E108* *E795*
11732			Remove the internal variable {name}.  Several variable
11733			names can be given, they are all removed.  The name
11734			may also be a |List| or |Dictionary| item.
11735			With [!] no error message is given for non-existing
11736			variables.
11737			One or more items from a |List| can be removed: >
11738				:unlet list[3]	  " remove fourth item
11739				:unlet list[3:]   " remove fourth item to last
11740<			One item from a |Dictionary| can be removed at a time: >
11741				:unlet dict['two']
11742				:unlet dict.two
11743<			This is especially useful to clean up used global
11744			variables and script-local variables (these are not
11745			deleted when the script ends).  Function-local
11746			variables are automatically deleted when the function
11747			ends.
11748
11749:unl[et] ${env-name} ...			*:unlet-environment* *:unlet-$*
11750			Remove environment variable {env-name}.
11751			Can mix {name} and ${env-name} in one :unlet command.
11752			No error message is given for a non-existing
11753			variable, also without !.
11754			If the system does not support deleting an environment
11755			variable, it is made empty.
11756
11757						*:cons* *:const*
11758:cons[t] {var-name} = {expr1}
11759:cons[t] [{name1}, {name2}, ...] = {expr1}
11760:cons[t] [{name}, ..., ; {lastname}] = {expr1}
11761:cons[t] {var-name} =<< [trim] {marker}
11762text...
11763text...
11764{marker}
11765			Similar to |:let|, but additionally lock the variable
11766			after setting the value.  This is the same as locking
11767			the variable with |:lockvar| just after |:let|, thus: >
11768				:const x = 1
11769<			is equivalent to: >
11770				:let x = 1
11771				:lockvar 1 x
11772<			This is useful if you want to make sure the variable
11773			is not modified.
11774							*E995*
11775			|:const| does not allow to for changing a variable: >
11776				:let x = 1
11777				:const x = 2  " Error!
11778<							*E996*
11779			Note that environment variables, option values and
11780			register values cannot be used here, since they cannot
11781			be locked.
11782
11783:cons[t]
11784:cons[t] {var-name}
11785			If no argument is given or only {var-name} is given,
11786			the behavior is the same as |:let|.
11787
11788:lockv[ar][!] [depth] {name} ...			*:lockvar* *:lockv*
11789			Lock the internal variable {name}.  Locking means that
11790			it can no longer be changed (until it is unlocked).
11791			A locked variable can be deleted: >
11792				:lockvar v
11793				:let v = 'asdf'		" fails!
11794				:unlet v
11795<							*E741* *E940*
11796			If you try to change a locked variable you get an
11797			error message: "E741: Value is locked: {name}".
11798			If you try to lock or unlock a built-in variable you
11799			get an error message: "E940: Cannot lock or unlock
11800			variable {name}".
11801
11802			[depth] is relevant when locking a |List| or
11803			|Dictionary|.  It specifies how deep the locking goes:
11804				1	Lock the |List| or |Dictionary| itself,
11805					cannot add or remove items, but can
11806					still change their values.
11807				2	Also lock the values, cannot change
11808					the items.  If an item is a |List| or
11809					|Dictionary|, cannot add or remove
11810					items, but can still change the
11811					values.
11812				3	Like 2 but for the |List| /
11813					|Dictionary| in the |List| /
11814					|Dictionary|, one level deeper.
11815			The default [depth] is 2, thus when {name} is a |List|
11816			or |Dictionary| the values cannot be changed.
11817								*E743*
11818			For unlimited depth use [!] and omit [depth].
11819			However, there is a maximum depth of 100 to catch
11820			loops.
11821
11822			Note that when two variables refer to the same |List|
11823			and you lock one of them, the |List| will also be
11824			locked when used through the other variable.
11825			Example: >
11826				:let l = [0, 1, 2, 3]
11827				:let cl = l
11828				:lockvar l
11829				:let cl[1] = 99		" won't work!
11830<			You may want to make a copy of a list to avoid this.
11831			See |deepcopy()|.
11832
11833
11834:unlo[ckvar][!] [depth] {name} ...			*:unlockvar* *:unlo*
11835			Unlock the internal variable {name}.  Does the
11836			opposite of |:lockvar|.
11837
11838:if {expr1}			*:if* *:end* *:endif* *:en* *E171* *E579* *E580*
11839:en[dif]		Execute the commands until the next matching ":else"
11840			or ":endif" if {expr1} evaluates to non-zero.
11841
11842			From Vim version 4.5 until 5.0, every Ex command in
11843			between the ":if" and ":endif" is ignored.  These two
11844			commands were just to allow for future expansions in a
11845			backward compatible way.  Nesting was allowed.  Note
11846			that any ":else" or ":elseif" was ignored, the "else"
11847			part was not executed either.
11848
11849			You can use this to remain compatible with older
11850			versions: >
11851				:if version >= 500
11852				:  version-5-specific-commands
11853				:endif
11854<			The commands still need to be parsed to find the
11855			"endif".  Sometimes an older Vim has a problem with a
11856			new command.  For example, ":silent" is recognized as
11857			a ":substitute" command.  In that case ":execute" can
11858			avoid problems: >
11859				:if version >= 600
11860				:  execute "silent 1,$delete"
11861				:endif
11862<
11863			NOTE: The ":append" and ":insert" commands don't work
11864			properly in between ":if" and ":endif".
11865
11866						*:else* *:el* *E581* *E583*
11867:el[se]			Execute the commands until the next matching ":else"
11868			or ":endif" if they previously were not being
11869			executed.
11870
11871					*:elseif* *:elsei* *E582* *E584*
11872:elsei[f] {expr1}	Short for ":else" ":if", with the addition that there
11873			is no extra ":endif".
11874
11875:wh[ile] {expr1}			*:while* *:endwhile* *:wh* *:endw*
11876						*E170* *E585* *E588* *E733*
11877:endw[hile]		Repeat the commands between ":while" and ":endwhile",
11878			as long as {expr1} evaluates to non-zero.
11879			When an error is detected from a command inside the
11880			loop, execution continues after the "endwhile".
11881			Example: >
11882				:let lnum = 1
11883				:while lnum <= line("$")
11884				   :call FixLine(lnum)
11885				   :let lnum = lnum + 1
11886				:endwhile
11887<
11888			NOTE: The ":append" and ":insert" commands don't work
11889			properly inside a ":while" and ":for" loop.
11890
11891:for {var} in {object}					*:for* *E690* *E732*
11892:endfo[r]						*:endfo* *:endfor*
11893			Repeat the commands between ":for" and ":endfor" for
11894			each item in {object}.  {object} can be a |List| or
11895			a |Blob|.  Variable {var} is set to the value of each
11896			item.  When an error is detected for a command inside
11897			the loop, execution continues after the "endfor".
11898			Changing {object} inside the loop affects what items
11899			are used.  Make a copy if this is unwanted: >
11900				:for item in copy(mylist)
11901<
11902			When {object} is a |List| and not making a copy, Vim
11903			stores a reference to the next item in the |List|
11904			before executing the commands with the current item.
11905			Thus the current item can be removed without effect.
11906			Removing any later item means it will not be found.
11907			Thus the following example works (an inefficient way
11908			to make a |List| empty): >
11909				for item in mylist
11910				   call remove(mylist, 0)
11911				endfor
11912<			Note that reordering the |List| (e.g., with sort() or
11913			reverse()) may have unexpected effects.
11914
11915			When {object} is a |Blob|, Vim always makes a copy to
11916			iterate over.  Unlike with |List|, modifying the
11917			|Blob| does not affect the iteration.
11918
11919:for [{var1}, {var2}, ...] in {listlist}
11920:endfo[r]
11921			Like ":for" above, but each item in {listlist} must be
11922			a list, of which each item is assigned to {var1},
11923			{var2}, etc.  Example: >
11924				:for [lnum, col] in [[1, 3], [2, 5], [3, 8]]
11925				   :echo getline(lnum)[col]
11926				:endfor
11927<
11928						*:continue* *:con* *E586*
11929:con[tinue]		When used inside a ":while" or ":for" loop, jumps back
11930			to the start of the loop.
11931			If it is used after a |:try| inside the loop but
11932			before the matching |:finally| (if present), the
11933			commands following the ":finally" up to the matching
11934			|:endtry| are executed first.  This process applies to
11935			all nested ":try"s inside the loop.  The outermost
11936			":endtry" then jumps back to the start of the loop.
11937
11938						*:break* *:brea* *E587*
11939:brea[k]		When used inside a ":while" or ":for" loop, skips to
11940			the command after the matching ":endwhile" or
11941			":endfor".
11942			If it is used after a |:try| inside the loop but
11943			before the matching |:finally| (if present), the
11944			commands following the ":finally" up to the matching
11945			|:endtry| are executed first.  This process applies to
11946			all nested ":try"s inside the loop.  The outermost
11947			":endtry" then jumps to the command after the loop.
11948
11949:try				*:try* *:endt* *:endtry* *E600* *E601* *E602*
11950:endt[ry]		Change the error handling for the commands between
11951			":try" and ":endtry" including everything being
11952			executed across ":source" commands, function calls,
11953			or autocommand invocations.
11954
11955			When an error or interrupt is detected and there is
11956			a |:finally| command following, execution continues
11957			after the ":finally".  Otherwise, or when the
11958			":endtry" is reached thereafter, the next
11959			(dynamically) surrounding ":try" is checked for
11960			a corresponding ":finally" etc.  Then the script
11961			processing is terminated.  Whether a function
11962			definition has an "abort" argument does not matter.
11963			Example: >
11964		try | call Unknown() | finally | echomsg "cleanup" | endtry
11965		echomsg "not reached"
11966<
11967			Moreover, an error or interrupt (dynamically) inside
11968			":try" and ":endtry" is converted to an exception.  It
11969			can be caught as if it were thrown by a |:throw|
11970			command (see |:catch|).  In this case, the script
11971			processing is not terminated.
11972
11973			The value "Vim:Interrupt" is used for an interrupt
11974			exception.  An error in a Vim command is converted
11975			to a value of the form "Vim({command}):{errmsg}",
11976			other errors are converted to a value of the form
11977			"Vim:{errmsg}".  {command} is the full command name,
11978			and {errmsg} is the message that is displayed if the
11979			error exception is not caught, always beginning with
11980			the error number.
11981			Examples: >
11982		try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
11983		try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
11984<
11985					*:cat* *:catch* *E603* *E604* *E605*
11986:cat[ch] /{pattern}/	The following commands until the next |:catch|,
11987			|:finally|, or |:endtry| that belongs to the same
11988			|:try| as the ":catch" are executed when an exception
11989			matching {pattern} is being thrown and has not yet
11990			been caught by a previous ":catch".  Otherwise, these
11991			commands are skipped.
11992			When {pattern} is omitted all errors are caught.
11993			Examples: >
11994		:catch /^Vim:Interrupt$/	 " catch interrupts (CTRL-C)
11995		:catch /^Vim\%((\a\+)\)\=:E/	 " catch all Vim errors
11996		:catch /^Vim\%((\a\+)\)\=:/	 " catch errors and interrupts
11997		:catch /^Vim(write):/		 " catch all errors in :write
11998		:catch /^Vim\%((\a\+)\)\=:E123:/ " catch error E123
11999		:catch /my-exception/		 " catch user exception
12000		:catch /.*/			 " catch everything
12001		:catch				 " same as /.*/
12002<
12003			Another character can be used instead of / around the
12004			{pattern}, so long as it does not have a special
12005			meaning (e.g., '|' or '"') and doesn't occur inside
12006			{pattern}.
12007			Information about the exception is available in
12008			|v:exception|.  Also see |throw-variables|.
12009			NOTE: It is not reliable to ":catch" the TEXT of
12010			an error message because it may vary in different
12011			locales.
12012
12013					*:fina* *:finally* *E606* *E607*
12014:fina[lly]		The following commands until the matching |:endtry|
12015			are executed whenever the part between the matching
12016			|:try| and the ":finally" is left:  either by falling
12017			through to the ":finally" or by a |:continue|,
12018			|:break|, |:finish|, or |:return|, or by an error or
12019			interrupt or exception (see |:throw|).
12020
12021							*:th* *:throw* *E608*
12022:th[row] {expr1}	The {expr1} is evaluated and thrown as an exception.
12023			If the ":throw" is used after a |:try| but before the
12024			first corresponding |:catch|, commands are skipped
12025			until the first ":catch" matching {expr1} is reached.
12026			If there is no such ":catch" or if the ":throw" is
12027			used after a ":catch" but before the |:finally|, the
12028			commands following the ":finally" (if present) up to
12029			the matching |:endtry| are executed.  If the ":throw"
12030			is after the ":finally", commands up to the ":endtry"
12031			are skipped.  At the ":endtry", this process applies
12032			again for the next dynamically surrounding ":try"
12033			(which may be found in a calling function or sourcing
12034			script), until a matching ":catch" has been found.
12035			If the exception is not caught, the command processing
12036			is terminated.
12037			Example: >
12038		:try | throw "oops" | catch /^oo/ | echo "caught" | endtry
12039<			Note that "catch" may need to be on a separate line
12040			for when an error causes the parsing to skip the whole
12041			line and not see the "|" that separates the commands.
12042
12043							*:ec* *:echo*
12044:ec[ho] {expr1} ..	Echoes each {expr1}, with a space in between.  The
12045			first {expr1} starts on a new line.
12046			Also see |:comment|.
12047			Use "\n" to start a new line.  Use "\r" to move the
12048			cursor to the first column.
12049			Uses the highlighting set by the |:echohl| command.
12050			Cannot be followed by a comment.
12051			Example: >
12052		:echo "the value of 'shell' is" &shell
12053<							*:echo-redraw*
12054			A later redraw may make the message disappear again.
12055			And since Vim mostly postpones redrawing until it's
12056			finished with a sequence of commands this happens
12057			quite often.  To avoid that a command from before the
12058			":echo" causes a redraw afterwards (redraws are often
12059			postponed until you type something), force a redraw
12060			with the |:redraw| command.  Example: >
12061		:new | redraw | echo "there is a new window"
12062<
12063							*:echon*
12064:echon {expr1} ..	Echoes each {expr1}, without anything added.  Also see
12065			|:comment|.
12066			Uses the highlighting set by the |:echohl| command.
12067			Cannot be followed by a comment.
12068			Example: >
12069				:echon "the value of 'shell' is " &shell
12070<
12071			Note the difference between using ":echo", which is a
12072			Vim command, and ":!echo", which is an external shell
12073			command: >
12074		:!echo %		--> filename
12075<			The arguments of ":!" are expanded, see |:_%|. >
12076		:!echo "%"		--> filename or "filename"
12077<			Like the previous example.  Whether you see the double
12078			quotes or not depends on your 'shell'. >
12079		:echo %			--> nothing
12080<			The '%' is an illegal character in an expression. >
12081		:echo "%"		--> %
12082<			This just echoes the '%' character. >
12083		:echo expand("%")	--> filename
12084<			This calls the expand() function to expand the '%'.
12085
12086							*:echoh* *:echohl*
12087:echoh[l] {name}	Use the highlight group {name} for the following
12088			|:echo|, |:echon| and |:echomsg| commands.  Also used
12089			for the |input()| prompt.  Example: >
12090		:echohl WarningMsg | echo "Don't panic!" | echohl None
12091<			Don't forget to set the group back to "None",
12092			otherwise all following echo's will be highlighted.
12093
12094							*:echom* *:echomsg*
12095:echom[sg] {expr1} ..	Echo the expression(s) as a true message, saving the
12096			message in the |message-history|.
12097			Spaces are placed between the arguments as with the
12098			|:echo| command.  But unprintable characters are
12099			displayed, not interpreted.
12100			The parsing works slightly different from |:echo|,
12101			more like |:execute|.  All the expressions are first
12102			evaluated and concatenated before echoing anything.
12103			If expressions does not evaluate to a Number or
12104			String, string() is used to turn it into a string.
12105			Uses the highlighting set by the |:echohl| command.
12106			Example: >
12107		:echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see."
12108<			See |:echo-redraw| to avoid the message disappearing
12109			when the screen is redrawn.
12110							*:echoe* *:echoerr*
12111:echoe[rr] {expr1} ..	Echo the expression(s) as an error message, saving the
12112			message in the |message-history|.  When used in a
12113			script or function the line number will be added.
12114			Spaces are placed between the arguments as with the
12115			|:echomsg| command.  When used inside a try conditional,
12116			the message is raised as an error exception instead
12117			(see |try-echoerr|).
12118			Example: >
12119		:echoerr "This script just failed!"
12120<			If you just want a highlighted message use |:echohl|.
12121			And to get a beep: >
12122		:exe "normal \<Esc>"
12123<
12124							*:eval*
12125:eval {expr}		Evaluate {expr} and discard the result.  Example: >
12126				:eval Getlist()->Filter()->append('$')
12127
12128<			The expression is supposed to have a side effect,
12129			since the resulting value is not used.  In the example
12130			the `append()` call appends the List with text to the
12131			buffer.  This is similar to `:call` but works with any
12132			expression.
12133
12134			The command can be shortened to `:ev` or `:eva`, but
12135			these are hard to recognize and therefore not to be
12136			used.
12137
12138			The command cannot be followed by "|" and another
12139			command, since "|" is seen as part of the expression.
12140
12141
12142							*:exe* *:execute*
12143:exe[cute] {expr1} ..	Executes the string that results from the evaluation
12144			of {expr1} as an Ex command.
12145			Multiple arguments are concatenated, with a space in
12146			between.  To avoid the extra space use the "."
12147			operator to concatenate strings into one argument.
12148			{expr1} is used as the processed command, command line
12149			editing keys are not recognized.
12150			Cannot be followed by a comment.
12151			Examples: >
12152		:execute "buffer" nextbuf
12153		:execute "normal" count . "w"
12154<
12155			":execute" can be used to append a command to commands
12156			that don't accept a '|'.  Example: >
12157		:execute '!ls' | echo "theend"
12158
12159<			":execute" is also a nice way to avoid having to type
12160			control characters in a Vim script for a ":normal"
12161			command: >
12162		:execute "normal ixxx\<Esc>"
12163<			This has an <Esc> character, see |expr-string|.
12164
12165			Be careful to correctly escape special characters in
12166			file names.  The |fnameescape()| function can be used
12167			for Vim commands, |shellescape()| for |:!| commands.
12168			Examples: >
12169		:execute "e " . fnameescape(filename)
12170		:execute "!ls " . shellescape(filename, 1)
12171<
12172			Note: The executed string may be any command-line, but
12173			starting or ending "if", "while" and "for" does not
12174			always work, because when commands are skipped the
12175			":execute" is not evaluated and Vim loses track of
12176			where blocks start and end.  Also "break" and
12177			"continue" should not be inside ":execute".
12178			This example does not work, because the ":execute" is
12179			not evaluated and Vim does not see the "while", and
12180			gives an error for finding an ":endwhile": >
12181		:if 0
12182		: execute 'while i > 5'
12183		:  echo "test"
12184		: endwhile
12185		:endif
12186<
12187			It is allowed to have a "while" or "if" command
12188			completely in the executed string: >
12189		:execute 'while i < 5 | echo i | let i = i + 1 | endwhile'
12190<
12191
12192							*:exe-comment*
12193			":execute", ":echo" and ":echon" cannot be followed by
12194			a comment directly, because they see the '"' as the
12195			start of a string.  But, you can use '|' followed by a
12196			comment.  Example: >
12197		:echo "foo" | "this is a comment
12198
12199==============================================================================
122008. Exception handling					*exception-handling*
12201
12202The Vim script language comprises an exception handling feature.  This section
12203explains how it can be used in a Vim script.
12204
12205Exceptions may be raised by Vim on an error or on interrupt, see
12206|catch-errors| and |catch-interrupt|.  You can also explicitly throw an
12207exception by using the ":throw" command, see |throw-catch|.
12208
12209
12210TRY CONDITIONALS					*try-conditionals*
12211
12212Exceptions can be caught or can cause cleanup code to be executed.  You can
12213use a try conditional to specify catch clauses (that catch exceptions) and/or
12214a finally clause (to be executed for cleanup).
12215   A try conditional begins with a |:try| command and ends at the matching
12216|:endtry| command.  In between, you can use a |:catch| command to start
12217a catch clause, or a |:finally| command to start a finally clause.  There may
12218be none or multiple catch clauses, but there is at most one finally clause,
12219which must not be followed by any catch clauses.  The lines before the catch
12220clauses and the finally clause is called a try block. >
12221
12222     :try
12223     :	...
12224     :	...				TRY BLOCK
12225     :	...
12226     :catch /{pattern}/
12227     :	...
12228     :	...				CATCH CLAUSE
12229     :	...
12230     :catch /{pattern}/
12231     :	...
12232     :	...				CATCH CLAUSE
12233     :	...
12234     :finally
12235     :	...
12236     :	...				FINALLY CLAUSE
12237     :	...
12238     :endtry
12239
12240The try conditional allows to watch code for exceptions and to take the
12241appropriate actions.  Exceptions from the try block may be caught.  Exceptions
12242from the try block and also the catch clauses may cause cleanup actions.
12243   When no exception is thrown during execution of the try block, the control
12244is transferred to the finally clause, if present.  After its execution, the
12245script continues with the line following the ":endtry".
12246   When an exception occurs during execution of the try block, the remaining
12247lines in the try block are skipped.  The exception is matched against the
12248patterns specified as arguments to the ":catch" commands.  The catch clause
12249after the first matching ":catch" is taken, other catch clauses are not
12250executed.  The catch clause ends when the next ":catch", ":finally", or
12251":endtry" command is reached - whatever is first.  Then, the finally clause
12252(if present) is executed.  When the ":endtry" is reached, the script execution
12253continues in the following line as usual.
12254   When an exception that does not match any of the patterns specified by the
12255":catch" commands is thrown in the try block, the exception is not caught by
12256that try conditional and none of the catch clauses is executed.  Only the
12257finally clause, if present, is taken.  The exception pends during execution of
12258the finally clause.  It is resumed at the ":endtry", so that commands after
12259the ":endtry" are not executed and the exception might be caught elsewhere,
12260see |try-nesting|.
12261   When during execution of a catch clause another exception is thrown, the
12262remaining lines in that catch clause are not executed.  The new exception is
12263not matched against the patterns in any of the ":catch" commands of the same
12264try conditional and none of its catch clauses is taken.  If there is, however,
12265a finally clause, it is executed, and the exception pends during its
12266execution.  The commands following the ":endtry" are not executed.  The new
12267exception might, however, be caught elsewhere, see |try-nesting|.
12268   When during execution of the finally clause (if present) an exception is
12269thrown, the remaining lines in the finally clause are skipped.  If the finally
12270clause has been taken because of an exception from the try block or one of the
12271catch clauses, the original (pending) exception is discarded.  The commands
12272following the ":endtry" are not executed, and the exception from the finally
12273clause is propagated and can be caught elsewhere, see |try-nesting|.
12274
12275The finally clause is also executed, when a ":break" or ":continue" for
12276a ":while" loop enclosing the complete try conditional is executed from the
12277try block or a catch clause.  Or when a ":return" or ":finish" is executed
12278from the try block or a catch clause of a try conditional in a function or
12279sourced script, respectively.  The ":break", ":continue", ":return", or
12280":finish" pends during execution of the finally clause and is resumed when the
12281":endtry" is reached.  It is, however, discarded when an exception is thrown
12282from the finally clause.
12283   When a ":break" or ":continue" for a ":while" loop enclosing the complete
12284try conditional or when a ":return" or ":finish" is encountered in the finally
12285clause, the rest of the finally clause is skipped, and the ":break",
12286":continue", ":return" or ":finish" is executed as usual.  If the finally
12287clause has been taken because of an exception or an earlier ":break",
12288":continue", ":return", or ":finish" from the try block or a catch clause,
12289this pending exception or command is discarded.
12290
12291For examples see |throw-catch| and |try-finally|.
12292
12293
12294NESTING	OF TRY CONDITIONALS				*try-nesting*
12295
12296Try conditionals can be nested arbitrarily.  That is, a complete try
12297conditional can be put into the try block, a catch clause, or the finally
12298clause of another try conditional.  If the inner try conditional does not
12299catch an exception thrown in its try block or throws a new exception from one
12300of its catch clauses or its finally clause, the outer try conditional is
12301checked according to the rules above.  If the inner try conditional is in the
12302try block of the outer try conditional, its catch clauses are checked, but
12303otherwise only the finally clause is executed.  It does not matter for
12304nesting, whether the inner try conditional is directly contained in the outer
12305one, or whether the outer one sources a script or calls a function containing
12306the inner try conditional.
12307
12308When none of the active try conditionals catches an exception, just their
12309finally clauses are executed.  Thereafter, the script processing terminates.
12310An error message is displayed in case of an uncaught exception explicitly
12311thrown by a ":throw" command.  For uncaught error and interrupt exceptions
12312implicitly raised by Vim, the error message(s) or interrupt message are shown
12313as usual.
12314
12315For examples see |throw-catch|.
12316
12317
12318EXAMINING EXCEPTION HANDLING CODE			*except-examine*
12319
12320Exception handling code can get tricky.  If you are in doubt what happens, set
12321'verbose' to 13 or use the ":13verbose" command modifier when sourcing your
12322script file.  Then you see when an exception is thrown, discarded, caught, or
12323finished.  When using a verbosity level of at least 14, things pending in
12324a finally clause are also shown.  This information is also given in debug mode
12325(see |debug-scripts|).
12326
12327
12328THROWING AND CATCHING EXCEPTIONS			*throw-catch*
12329
12330You can throw any number or string as an exception.  Use the |:throw| command
12331and pass the value to be thrown as argument: >
12332	:throw 4711
12333	:throw "string"
12334<							*throw-expression*
12335You can also specify an expression argument.  The expression is then evaluated
12336first, and the result is thrown: >
12337	:throw 4705 + strlen("string")
12338	:throw strpart("strings", 0, 6)
12339
12340An exception might be thrown during evaluation of the argument of the ":throw"
12341command.  Unless it is caught there, the expression evaluation is abandoned.
12342The ":throw" command then does not throw a new exception.
12343   Example: >
12344
12345	:function! Foo(arg)
12346	:  try
12347	:    throw a:arg
12348	:  catch /foo/
12349	:  endtry
12350	:  return 1
12351	:endfunction
12352	:
12353	:function! Bar()
12354	:  echo "in Bar"
12355	:  return 4710
12356	:endfunction
12357	:
12358	:throw Foo("arrgh") + Bar()
12359
12360This throws "arrgh", and "in Bar" is not displayed since Bar() is not
12361executed. >
12362	:throw Foo("foo") + Bar()
12363however displays "in Bar" and throws 4711.
12364
12365Any other command that takes an expression as argument might also be
12366abandoned by an (uncaught) exception during the expression evaluation.  The
12367exception is then propagated to the caller of the command.
12368   Example: >
12369
12370	:if Foo("arrgh")
12371	:  echo "then"
12372	:else
12373	:  echo "else"
12374	:endif
12375
12376Here neither of "then" or "else" is displayed.
12377
12378							*catch-order*
12379Exceptions can be caught by a try conditional with one or more |:catch|
12380commands, see |try-conditionals|.   The values to be caught by each ":catch"
12381command can be specified as a pattern argument.  The subsequent catch clause
12382gets executed when a matching exception is caught.
12383   Example: >
12384
12385	:function! Foo(value)
12386	:  try
12387	:    throw a:value
12388	:  catch /^\d\+$/
12389	:    echo "Number thrown"
12390	:  catch /.*/
12391	:    echo "String thrown"
12392	:  endtry
12393	:endfunction
12394	:
12395	:call Foo(0x1267)
12396	:call Foo('string')
12397
12398The first call to Foo() displays "Number thrown", the second "String thrown".
12399An exception is matched against the ":catch" commands in the order they are
12400specified.  Only the first match counts.  So you should place the more
12401specific ":catch" first.  The following order does not make sense: >
12402
12403	:  catch /.*/
12404	:    echo "String thrown"
12405	:  catch /^\d\+$/
12406	:    echo "Number thrown"
12407
12408The first ":catch" here matches always, so that the second catch clause is
12409never taken.
12410
12411							*throw-variables*
12412If you catch an exception by a general pattern, you may access the exact value
12413in the variable |v:exception|: >
12414
12415	:  catch /^\d\+$/
12416	:    echo "Number thrown.  Value is" v:exception
12417
12418You may also be interested where an exception was thrown.  This is stored in
12419|v:throwpoint|.  Note that "v:exception" and "v:throwpoint" are valid for the
12420exception most recently caught as long it is not finished.
12421   Example: >
12422
12423	:function! Caught()
12424	:  if v:exception != ""
12425	:    echo 'Caught "' . v:exception . '" in ' . v:throwpoint
12426	:  else
12427	:    echo 'Nothing caught'
12428	:  endif
12429	:endfunction
12430	:
12431	:function! Foo()
12432	:  try
12433	:    try
12434	:      try
12435	:	 throw 4711
12436	:      finally
12437	:	 call Caught()
12438	:      endtry
12439	:    catch /.*/
12440	:      call Caught()
12441	:      throw "oops"
12442	:    endtry
12443	:  catch /.*/
12444	:    call Caught()
12445	:  finally
12446	:    call Caught()
12447	:  endtry
12448	:endfunction
12449	:
12450	:call Foo()
12451
12452This displays >
12453
12454	Nothing caught
12455	Caught "4711" in function Foo, line 4
12456	Caught "oops" in function Foo, line 10
12457	Nothing caught
12458
12459A practical example:  The following command ":LineNumber" displays the line
12460number in the script or function where it has been used: >
12461
12462	:function! LineNumber()
12463	:    return substitute(v:throwpoint, '.*\D\(\d\+\).*', '\1', "")
12464	:endfunction
12465	:command! LineNumber try | throw "" | catch | echo LineNumber() | endtry
12466<
12467							*try-nested*
12468An exception that is not caught by a try conditional can be caught by
12469a surrounding try conditional: >
12470
12471	:try
12472	:  try
12473	:    throw "foo"
12474	:  catch /foobar/
12475	:    echo "foobar"
12476	:  finally
12477	:    echo "inner finally"
12478	:  endtry
12479	:catch /foo/
12480	:  echo "foo"
12481	:endtry
12482
12483The inner try conditional does not catch the exception, just its finally
12484clause is executed.  The exception is then caught by the outer try
12485conditional.  The example displays "inner finally" and then "foo".
12486
12487							*throw-from-catch*
12488You can catch an exception and throw a new one to be caught elsewhere from the
12489catch clause: >
12490
12491	:function! Foo()
12492	:  throw "foo"
12493	:endfunction
12494	:
12495	:function! Bar()
12496	:  try
12497	:    call Foo()
12498	:  catch /foo/
12499	:    echo "Caught foo, throw bar"
12500	:    throw "bar"
12501	:  endtry
12502	:endfunction
12503	:
12504	:try
12505	:  call Bar()
12506	:catch /.*/
12507	:  echo "Caught" v:exception
12508	:endtry
12509
12510This displays "Caught foo, throw bar" and then "Caught bar".
12511
12512							*rethrow*
12513There is no real rethrow in the Vim script language, but you may throw
12514"v:exception" instead: >
12515
12516	:function! Bar()
12517	:  try
12518	:    call Foo()
12519	:  catch /.*/
12520	:    echo "Rethrow" v:exception
12521	:    throw v:exception
12522	:  endtry
12523	:endfunction
12524<							*try-echoerr*
12525Note that this method cannot be used to "rethrow" Vim error or interrupt
12526exceptions, because it is not possible to fake Vim internal exceptions.
12527Trying so causes an error exception.  You should throw your own exception
12528denoting the situation.  If you want to cause a Vim error exception containing
12529the original error exception value, you can use the |:echoerr| command: >
12530
12531	:try
12532	:  try
12533	:    asdf
12534	:  catch /.*/
12535	:    echoerr v:exception
12536	:  endtry
12537	:catch /.*/
12538	:  echo v:exception
12539	:endtry
12540
12541This code displays
12542
12543	Vim(echoerr):Vim:E492: Not an editor command:	asdf ~
12544
12545
12546CLEANUP CODE						*try-finally*
12547
12548Scripts often change global settings and restore them at their end.  If the
12549user however interrupts the script by pressing CTRL-C, the settings remain in
12550an inconsistent state.  The same may happen to you in the development phase of
12551a script when an error occurs or you explicitly throw an exception without
12552catching it.  You can solve these problems by using a try conditional with
12553a finally clause for restoring the settings.  Its execution is guaranteed on
12554normal control flow, on error, on an explicit ":throw", and on interrupt.
12555(Note that errors and interrupts from inside the try conditional are converted
12556to exceptions.  When not caught, they terminate the script after the finally
12557clause has been executed.)
12558Example: >
12559
12560	:try
12561	:  let s:saved_ts = &ts
12562	:  set ts=17
12563	:
12564	:  " Do the hard work here.
12565	:
12566	:finally
12567	:  let &ts = s:saved_ts
12568	:  unlet s:saved_ts
12569	:endtry
12570
12571This method should be used locally whenever a function or part of a script
12572changes global settings which need to be restored on failure or normal exit of
12573that function or script part.
12574
12575							*break-finally*
12576Cleanup code works also when the try block or a catch clause is left by
12577a ":continue", ":break", ":return", or ":finish".
12578   Example: >
12579
12580	:let first = 1
12581	:while 1
12582	:  try
12583	:    if first
12584	:      echo "first"
12585	:      let first = 0
12586	:      continue
12587	:    else
12588	:      throw "second"
12589	:    endif
12590	:  catch /.*/
12591	:    echo v:exception
12592	:    break
12593	:  finally
12594	:    echo "cleanup"
12595	:  endtry
12596	:  echo "still in while"
12597	:endwhile
12598	:echo "end"
12599
12600This displays "first", "cleanup", "second", "cleanup", and "end". >
12601
12602	:function! Foo()
12603	:  try
12604	:    return 4711
12605	:  finally
12606	:    echo "cleanup\n"
12607	:  endtry
12608	:  echo "Foo still active"
12609	:endfunction
12610	:
12611	:echo Foo() "returned by Foo"
12612
12613This displays "cleanup" and "4711 returned by Foo".  You don't need to add an
12614extra ":return" in the finally clause.  (Above all, this would override the
12615return value.)
12616
12617							*except-from-finally*
12618Using either of ":continue", ":break", ":return", ":finish", or ":throw" in
12619a finally clause is possible, but not recommended since it abandons the
12620cleanup actions for the try conditional.  But, of course, interrupt and error
12621exceptions might get raised from a finally clause.
12622   Example where an error in the finally clause stops an interrupt from
12623working correctly: >
12624
12625	:try
12626	:  try
12627	:    echo "Press CTRL-C for interrupt"
12628	:    while 1
12629	:    endwhile
12630	:  finally
12631	:    unlet novar
12632	:  endtry
12633	:catch /novar/
12634	:endtry
12635	:echo "Script still running"
12636	:sleep 1
12637
12638If you need to put commands that could fail into a finally clause, you should
12639think about catching or ignoring the errors in these commands, see
12640|catch-errors| and |ignore-errors|.
12641
12642
12643CATCHING ERRORS						*catch-errors*
12644
12645If you want to catch specific errors, you just have to put the code to be
12646watched in a try block and add a catch clause for the error message.  The
12647presence of the try conditional causes all errors to be converted to an
12648exception.  No message is displayed and |v:errmsg| is not set then.  To find
12649the right pattern for the ":catch" command, you have to know how the format of
12650the error exception is.
12651   Error exceptions have the following format: >
12652
12653	Vim({cmdname}):{errmsg}
12654or >
12655	Vim:{errmsg}
12656
12657{cmdname} is the name of the command that failed; the second form is used when
12658the command name is not known.  {errmsg} is the error message usually produced
12659when the error occurs outside try conditionals.  It always begins with
12660a capital "E", followed by a two or three-digit error number, a colon, and
12661a space.
12662
12663Examples:
12664
12665The command >
12666	:unlet novar
12667normally produces the error message >
12668	E108: No such variable: "novar"
12669which is converted inside try conditionals to an exception >
12670	Vim(unlet):E108: No such variable: "novar"
12671
12672The command >
12673	:dwim
12674normally produces the error message >
12675	E492: Not an editor command: dwim
12676which is converted inside try conditionals to an exception >
12677	Vim:E492: Not an editor command: dwim
12678
12679You can catch all ":unlet" errors by a >
12680	:catch /^Vim(unlet):/
12681or all errors for misspelled command names by a >
12682	:catch /^Vim:E492:/
12683
12684Some error messages may be produced by different commands: >
12685	:function nofunc
12686and >
12687	:delfunction nofunc
12688both produce the error message >
12689	E128: Function name must start with a capital: nofunc
12690which is converted inside try conditionals to an exception >
12691	Vim(function):E128: Function name must start with a capital: nofunc
12692or >
12693	Vim(delfunction):E128: Function name must start with a capital: nofunc
12694respectively.  You can catch the error by its number independently on the
12695command that caused it if you use the following pattern: >
12696	:catch /^Vim(\a\+):E128:/
12697
12698Some commands like >
12699	:let x = novar
12700produce multiple error messages, here: >
12701	E121: Undefined variable: novar
12702	E15: Invalid expression:  novar
12703Only the first is used for the exception value, since it is the most specific
12704one (see |except-several-errors|).  So you can catch it by >
12705	:catch /^Vim(\a\+):E121:/
12706
12707You can catch all errors related to the name "nofunc" by >
12708	:catch /\<nofunc\>/
12709
12710You can catch all Vim errors in the ":write" and ":read" commands by >
12711	:catch /^Vim(\(write\|read\)):E\d\+:/
12712
12713You can catch all Vim errors by the pattern >
12714	:catch /^Vim\((\a\+)\)\=:E\d\+:/
12715<
12716							*catch-text*
12717NOTE: You should never catch the error message text itself: >
12718	:catch /No such variable/
12719only works in the English locale, but not when the user has selected
12720a different language by the |:language| command.  It is however helpful to
12721cite the message text in a comment: >
12722	:catch /^Vim(\a\+):E108:/   " No such variable
12723
12724
12725IGNORING ERRORS						*ignore-errors*
12726
12727You can ignore errors in a specific Vim command by catching them locally: >
12728
12729	:try
12730	:  write
12731	:catch
12732	:endtry
12733
12734But you are strongly recommended NOT to use this simple form, since it could
12735catch more than you want.  With the ":write" command, some autocommands could
12736be executed and cause errors not related to writing, for instance: >
12737
12738	:au BufWritePre * unlet novar
12739
12740There could even be such errors you are not responsible for as a script
12741writer: a user of your script might have defined such autocommands.  You would
12742then hide the error from the user.
12743   It is much better to use >
12744
12745	:try
12746	:  write
12747	:catch /^Vim(write):/
12748	:endtry
12749
12750which only catches real write errors.  So catch only what you'd like to ignore
12751intentionally.
12752
12753For a single command that does not cause execution of autocommands, you could
12754even suppress the conversion of errors to exceptions by the ":silent!"
12755command: >
12756	:silent! nunmap k
12757This works also when a try conditional is active.
12758
12759
12760CATCHING INTERRUPTS					*catch-interrupt*
12761
12762When there are active try conditionals, an interrupt (CTRL-C) is converted to
12763the exception "Vim:Interrupt".  You can catch it like every exception.  The
12764script is not terminated, then.
12765   Example: >
12766
12767	:function! TASK1()
12768	:  sleep 10
12769	:endfunction
12770
12771	:function! TASK2()
12772	:  sleep 20
12773	:endfunction
12774
12775	:while 1
12776	:  let command = input("Type a command: ")
12777	:  try
12778	:    if command == ""
12779	:      continue
12780	:    elseif command == "END"
12781	:      break
12782	:    elseif command == "TASK1"
12783	:      call TASK1()
12784	:    elseif command == "TASK2"
12785	:      call TASK2()
12786	:    else
12787	:      echo "\nIllegal command:" command
12788	:      continue
12789	:    endif
12790	:  catch /^Vim:Interrupt$/
12791	:    echo "\nCommand interrupted"
12792	:    " Caught the interrupt.  Continue with next prompt.
12793	:  endtry
12794	:endwhile
12795
12796You can interrupt a task here by pressing CTRL-C; the script then asks for
12797a new command.  If you press CTRL-C at the prompt, the script is terminated.
12798
12799For testing what happens when CTRL-C would be pressed on a specific line in
12800your script, use the debug mode and execute the |>quit| or |>interrupt|
12801command on that line.  See |debug-scripts|.
12802
12803
12804CATCHING ALL						*catch-all*
12805
12806The commands >
12807
12808	:catch /.*/
12809	:catch //
12810	:catch
12811
12812catch everything, error exceptions, interrupt exceptions and exceptions
12813explicitly thrown by the |:throw| command.  This is useful at the top level of
12814a script in order to catch unexpected things.
12815   Example: >
12816
12817	:try
12818	:
12819	:  " do the hard work here
12820	:
12821	:catch /MyException/
12822	:
12823	:  " handle known problem
12824	:
12825	:catch /^Vim:Interrupt$/
12826	:    echo "Script interrupted"
12827	:catch /.*/
12828	:  echo "Internal error (" . v:exception . ")"
12829	:  echo " - occurred at " . v:throwpoint
12830	:endtry
12831	:" end of script
12832
12833Note: Catching all might catch more things than you want.  Thus, you are
12834strongly encouraged to catch only for problems that you can really handle by
12835specifying a pattern argument to the ":catch".
12836   Example: Catching all could make it nearly impossible to interrupt a script
12837by pressing CTRL-C: >
12838
12839	:while 1
12840	:  try
12841	:    sleep 1
12842	:  catch
12843	:  endtry
12844	:endwhile
12845
12846
12847EXCEPTIONS AND AUTOCOMMANDS				*except-autocmd*
12848
12849Exceptions may be used during execution of autocommands.  Example: >
12850
12851	:autocmd User x try
12852	:autocmd User x   throw "Oops!"
12853	:autocmd User x catch
12854	:autocmd User x   echo v:exception
12855	:autocmd User x endtry
12856	:autocmd User x throw "Arrgh!"
12857	:autocmd User x echo "Should not be displayed"
12858	:
12859	:try
12860	:  doautocmd User x
12861	:catch
12862	:  echo v:exception
12863	:endtry
12864
12865This displays "Oops!" and "Arrgh!".
12866
12867							*except-autocmd-Pre*
12868For some commands, autocommands get executed before the main action of the
12869command takes place.  If an exception is thrown and not caught in the sequence
12870of autocommands, the sequence and the command that caused its execution are
12871abandoned and the exception is propagated to the caller of the command.
12872   Example: >
12873
12874	:autocmd BufWritePre * throw "FAIL"
12875	:autocmd BufWritePre * echo "Should not be displayed"
12876	:
12877	:try
12878	:  write
12879	:catch
12880	:  echo "Caught:" v:exception "from" v:throwpoint
12881	:endtry
12882
12883Here, the ":write" command does not write the file currently being edited (as
12884you can see by checking 'modified'), since the exception from the BufWritePre
12885autocommand abandons the ":write".  The exception is then caught and the
12886script displays: >
12887
12888	Caught: FAIL from BufWrite Auto commands for "*"
12889<
12890							*except-autocmd-Post*
12891For some commands, autocommands get executed after the main action of the
12892command has taken place.  If this main action fails and the command is inside
12893an active try conditional, the autocommands are skipped and an error exception
12894is thrown that can be caught by the caller of the command.
12895   Example: >
12896
12897	:autocmd BufWritePost * echo "File successfully written!"
12898	:
12899	:try
12900	:  write /i/m/p/o/s/s/i/b/l/e
12901	:catch
12902	:  echo v:exception
12903	:endtry
12904
12905This just displays: >
12906
12907	Vim(write):E212: Can't open file for writing (/i/m/p/o/s/s/i/b/l/e)
12908
12909If you really need to execute the autocommands even when the main action
12910fails, trigger the event from the catch clause.
12911   Example: >
12912
12913	:autocmd BufWritePre  * set noreadonly
12914	:autocmd BufWritePost * set readonly
12915	:
12916	:try
12917	:  write /i/m/p/o/s/s/i/b/l/e
12918	:catch
12919	:  doautocmd BufWritePost /i/m/p/o/s/s/i/b/l/e
12920	:endtry
12921<
12922You can also use ":silent!": >
12923
12924	:let x = "ok"
12925	:let v:errmsg = ""
12926	:autocmd BufWritePost * if v:errmsg != ""
12927	:autocmd BufWritePost *   let x = "after fail"
12928	:autocmd BufWritePost * endif
12929	:try
12930	:  silent! write /i/m/p/o/s/s/i/b/l/e
12931	:catch
12932	:endtry
12933	:echo x
12934
12935This displays "after fail".
12936
12937If the main action of the command does not fail, exceptions from the
12938autocommands will be catchable by the caller of the command:  >
12939
12940	:autocmd BufWritePost * throw ":-("
12941	:autocmd BufWritePost * echo "Should not be displayed"
12942	:
12943	:try
12944	:  write
12945	:catch
12946	:  echo v:exception
12947	:endtry
12948<
12949							*except-autocmd-Cmd*
12950For some commands, the normal action can be replaced by a sequence of
12951autocommands.  Exceptions from that sequence will be catchable by the caller
12952of the command.
12953   Example:  For the ":write" command, the caller cannot know whether the file
12954had actually been written when the exception occurred.  You need to tell it in
12955some way. >
12956
12957	:if !exists("cnt")
12958	:  let cnt = 0
12959	:
12960	:  autocmd BufWriteCmd * if &modified
12961	:  autocmd BufWriteCmd *   let cnt = cnt + 1
12962	:  autocmd BufWriteCmd *   if cnt % 3 == 2
12963	:  autocmd BufWriteCmd *     throw "BufWriteCmdError"
12964	:  autocmd BufWriteCmd *   endif
12965	:  autocmd BufWriteCmd *   write | set nomodified
12966	:  autocmd BufWriteCmd *   if cnt % 3 == 0
12967	:  autocmd BufWriteCmd *     throw "BufWriteCmdError"
12968	:  autocmd BufWriteCmd *   endif
12969	:  autocmd BufWriteCmd *   echo "File successfully written!"
12970	:  autocmd BufWriteCmd * endif
12971	:endif
12972	:
12973	:try
12974	:	write
12975	:catch /^BufWriteCmdError$/
12976	:  if &modified
12977	:    echo "Error on writing (file contents not changed)"
12978	:  else
12979	:    echo "Error after writing"
12980	:  endif
12981	:catch /^Vim(write):/
12982	:    echo "Error on writing"
12983	:endtry
12984
12985When this script is sourced several times after making changes, it displays
12986first >
12987	File successfully written!
12988then >
12989	Error on writing (file contents not changed)
12990then >
12991	Error after writing
12992etc.
12993
12994							*except-autocmd-ill*
12995You cannot spread a try conditional over autocommands for different events.
12996The following code is ill-formed: >
12997
12998	:autocmd BufWritePre  * try
12999	:
13000	:autocmd BufWritePost * catch
13001	:autocmd BufWritePost *   echo v:exception
13002	:autocmd BufWritePost * endtry
13003	:
13004	:write
13005
13006
13007EXCEPTION HIERARCHIES AND PARAMETERIZED EXCEPTIONS	*except-hier-param*
13008
13009Some programming languages allow to use hierarchies of exception classes or to
13010pass additional information with the object of an exception class.  You can do
13011similar things in Vim.
13012   In order to throw an exception from a hierarchy, just throw the complete
13013class name with the components separated by a colon, for instance throw the
13014string "EXCEPT:MATHERR:OVERFLOW" for an overflow in a mathematical library.
13015   When you want to pass additional information with your exception class, add
13016it in parentheses, for instance throw the string "EXCEPT:IO:WRITEERR(myfile)"
13017for an error when writing "myfile".
13018   With the appropriate patterns in the ":catch" command, you can catch for
13019base classes or derived classes of your hierarchy.  Additional information in
13020parentheses can be cut out from |v:exception| with the ":substitute" command.
13021   Example: >
13022
13023	:function! CheckRange(a, func)
13024	:  if a:a < 0
13025	:    throw "EXCEPT:MATHERR:RANGE(" . a:func . ")"
13026	:  endif
13027	:endfunction
13028	:
13029	:function! Add(a, b)
13030	:  call CheckRange(a:a, "Add")
13031	:  call CheckRange(a:b, "Add")
13032	:  let c = a:a + a:b
13033	:  if c < 0
13034	:    throw "EXCEPT:MATHERR:OVERFLOW"
13035	:  endif
13036	:  return c
13037	:endfunction
13038	:
13039	:function! Div(a, b)
13040	:  call CheckRange(a:a, "Div")
13041	:  call CheckRange(a:b, "Div")
13042	:  if (a:b == 0)
13043	:    throw "EXCEPT:MATHERR:ZERODIV"
13044	:  endif
13045	:  return a:a / a:b
13046	:endfunction
13047	:
13048	:function! Write(file)
13049	:  try
13050	:    execute "write" fnameescape(a:file)
13051	:  catch /^Vim(write):/
13052	:    throw "EXCEPT:IO(" . getcwd() . ", " . a:file . "):WRITEERR"
13053	:  endtry
13054	:endfunction
13055	:
13056	:try
13057	:
13058	:  " something with arithmetics and I/O
13059	:
13060	:catch /^EXCEPT:MATHERR:RANGE/
13061	:  let function = substitute(v:exception, '.*(\(\a\+\)).*', '\1', "")
13062	:  echo "Range error in" function
13063	:
13064	:catch /^EXCEPT:MATHERR/	" catches OVERFLOW and ZERODIV
13065	:  echo "Math error"
13066	:
13067	:catch /^EXCEPT:IO/
13068	:  let dir = substitute(v:exception, '.*(\(.\+\),\s*.\+).*', '\1', "")
13069	:  let file = substitute(v:exception, '.*(.\+,\s*\(.\+\)).*', '\1', "")
13070	:  if file !~ '^/'
13071	:    let file = dir . "/" . file
13072	:  endif
13073	:  echo 'I/O error for "' . file . '"'
13074	:
13075	:catch /^EXCEPT/
13076	:  echo "Unspecified error"
13077	:
13078	:endtry
13079
13080The exceptions raised by Vim itself (on error or when pressing CTRL-C) use
13081a flat hierarchy:  they are all in the "Vim" class.  You cannot throw yourself
13082exceptions with the "Vim" prefix; they are reserved for Vim.
13083   Vim error exceptions are parameterized with the name of the command that
13084failed, if known.  See |catch-errors|.
13085
13086
13087PECULIARITIES
13088							*except-compat*
13089The exception handling concept requires that the command sequence causing the
13090exception is aborted immediately and control is transferred to finally clauses
13091and/or a catch clause.
13092
13093In the Vim script language there are cases where scripts and functions
13094continue after an error: in functions without the "abort" flag or in a command
13095after ":silent!", control flow goes to the following line, and outside
13096functions, control flow goes to the line following the outermost ":endwhile"
13097or ":endif".  On the other hand, errors should be catchable as exceptions
13098(thus, requiring the immediate abortion).
13099
13100This problem has been solved by converting errors to exceptions and using
13101immediate abortion (if not suppressed by ":silent!") only when a try
13102conditional is active.  This is no restriction since an (error) exception can
13103be caught only from an active try conditional.  If you want an immediate
13104termination without catching the error, just use a try conditional without
13105catch clause.  (You can cause cleanup code being executed before termination
13106by specifying a finally clause.)
13107
13108When no try conditional is active, the usual abortion and continuation
13109behavior is used instead of immediate abortion.  This ensures compatibility of
13110scripts written for Vim 6.1 and earlier.
13111
13112However, when sourcing an existing script that does not use exception handling
13113commands (or when calling one of its functions) from inside an active try
13114conditional of a new script, you might change the control flow of the existing
13115script on error.  You get the immediate abortion on error and can catch the
13116error in the new script.  If however the sourced script suppresses error
13117messages by using the ":silent!" command (checking for errors by testing
13118|v:errmsg| if appropriate), its execution path is not changed.  The error is
13119not converted to an exception.  (See |:silent|.)  So the only remaining cause
13120where this happens is for scripts that don't care about errors and produce
13121error messages.  You probably won't want to use such code from your new
13122scripts.
13123
13124							*except-syntax-err*
13125Syntax errors in the exception handling commands are never caught by any of
13126the ":catch" commands of the try conditional they belong to.  Its finally
13127clauses, however, is executed.
13128   Example: >
13129
13130	:try
13131	:  try
13132	:    throw 4711
13133	:  catch /\(/
13134	:    echo "in catch with syntax error"
13135	:  catch
13136	:    echo "inner catch-all"
13137	:  finally
13138	:    echo "inner finally"
13139	:  endtry
13140	:catch
13141	:  echo 'outer catch-all caught "' . v:exception . '"'
13142	:  finally
13143	:    echo "outer finally"
13144	:endtry
13145
13146This displays: >
13147    inner finally
13148    outer catch-all caught "Vim(catch):E54: Unmatched \("
13149    outer finally
13150The original exception is discarded and an error exception is raised, instead.
13151
13152							*except-single-line*
13153The ":try", ":catch", ":finally", and ":endtry" commands can be put on
13154a single line, but then syntax errors may make it difficult to recognize the
13155"catch" line, thus you better avoid this.
13156   Example: >
13157	:try | unlet! foo # | catch | endtry
13158raises an error exception for the trailing characters after the ":unlet!"
13159argument, but does not see the ":catch" and ":endtry" commands, so that the
13160error exception is discarded and the "E488: Trailing characters" message gets
13161displayed.
13162
13163							*except-several-errors*
13164When several errors appear in a single command, the first error message is
13165usually the most specific one and therefor converted to the error exception.
13166   Example: >
13167	echo novar
13168causes >
13169	E121: Undefined variable: novar
13170	E15: Invalid expression: novar
13171The value of the error exception inside try conditionals is: >
13172	Vim(echo):E121: Undefined variable: novar
13173<							*except-syntax-error*
13174But when a syntax error is detected after a normal error in the same command,
13175the syntax error is used for the exception being thrown.
13176   Example: >
13177	unlet novar #
13178causes >
13179	E108: No such variable: "novar"
13180	E488: Trailing characters
13181The value of the error exception inside try conditionals is: >
13182	Vim(unlet):E488: Trailing characters
13183This is done because the syntax error might change the execution path in a way
13184not intended by the user.  Example: >
13185	try
13186	    try | unlet novar # | catch | echo v:exception | endtry
13187	catch /.*/
13188	    echo "outer catch:" v:exception
13189	endtry
13190This displays "outer catch: Vim(unlet):E488: Trailing characters", and then
13191a "E600: Missing :endtry" error message is given, see |except-single-line|.
13192
13193==============================================================================
131949. Examples						*eval-examples*
13195
13196Printing in Binary ~
13197>
13198  :" The function Nr2Bin() returns the binary string representation of a number.
13199  :func Nr2Bin(nr)
13200  :  let n = a:nr
13201  :  let r = ""
13202  :  while n
13203  :    let r = '01'[n % 2] . r
13204  :    let n = n / 2
13205  :  endwhile
13206  :  return r
13207  :endfunc
13208
13209  :" The function String2Bin() converts each character in a string to a
13210  :" binary string, separated with dashes.
13211  :func String2Bin(str)
13212  :  let out = ''
13213  :  for ix in range(strlen(a:str))
13214  :    let out = out . '-' . Nr2Bin(char2nr(a:str[ix]))
13215  :  endfor
13216  :  return out[1:]
13217  :endfunc
13218
13219Example of its use: >
13220  :echo Nr2Bin(32)
13221result: "100000" >
13222  :echo String2Bin("32")
13223result: "110011-110010"
13224
13225
13226Sorting lines ~
13227
13228This example sorts lines with a specific compare function. >
13229
13230  :func SortBuffer()
13231  :  let lines = getline(1, '$')
13232  :  call sort(lines, function("Strcmp"))
13233  :  call setline(1, lines)
13234  :endfunction
13235
13236As a one-liner: >
13237  :call setline(1, sort(getline(1, '$'), function("Strcmp")))
13238
13239
13240scanf() replacement ~
13241							*sscanf*
13242There is no sscanf() function in Vim.  If you need to extract parts from a
13243line, you can use matchstr() and substitute() to do it.  This example shows
13244how to get the file name, line number and column number out of a line like
13245"foobar.txt, 123, 45". >
13246   :" Set up the match bit
13247   :let mx='\(\f\+\),\s*\(\d\+\),\s*\(\d\+\)'
13248   :"get the part matching the whole expression
13249   :let l = matchstr(line, mx)
13250   :"get each item out of the match
13251   :let file = substitute(l, mx, '\1', '')
13252   :let lnum = substitute(l, mx, '\2', '')
13253   :let col = substitute(l, mx, '\3', '')
13254
13255The input is in the variable "line", the results in the variables "file",
13256"lnum" and "col". (idea from Michael Geddes)
13257
13258
13259getting the scriptnames in a Dictionary ~
13260						*scriptnames-dictionary*
13261The |:scriptnames| command can be used to get a list of all script files that
13262have been sourced.  There is no equivalent function or variable for this
13263(because it's rarely needed).  In case you need to manipulate the list this
13264code can be used: >
13265    " Get the output of ":scriptnames" in the scriptnames_output variable.
13266    let scriptnames_output = ''
13267    redir => scriptnames_output
13268    silent scriptnames
13269    redir END
13270
13271    " Split the output into lines and parse each line.	Add an entry to the
13272    " "scripts" dictionary.
13273    let scripts = {}
13274    for line in split(scriptnames_output, "\n")
13275      " Only do non-blank lines.
13276      if line =~ '\S'
13277	" Get the first number in the line.
13278	let nr = matchstr(line, '\d\+')
13279	" Get the file name, remove the script number " 123: ".
13280	let name = substitute(line, '.\+:\s*', '', '')
13281	" Add an item to the Dictionary
13282	let scripts[nr] = name
13283      endif
13284    endfor
13285    unlet scriptnames_output
13286
13287==============================================================================
1328810. Vim script versions		*vimscript-version* *vimscript-versions*
13289							*scriptversion*
13290Over time many features have been added to Vim script.  This includes Ex
13291commands, functions, variable types, etc.  Each individual feature can be
13292checked with the |has()| and |exists()| functions.
13293
13294Sometimes old syntax of functionality gets in the way of making Vim better.
13295When support is taken away this will break older Vim scripts.  To make this
13296explicit the |:scriptversion| command can be used.  When a Vim script is not
13297compatible with older versions of Vim this will give an explicit error,
13298instead of failing in mysterious ways.
13299
13300							*scriptversion-1*  >
13301 :scriptversion 1
13302<	This is the original Vim script, same as not using a |:scriptversion|
13303	command.  Can be used to go back to old syntax for a range of lines.
13304	Test for support with: >
13305		has('vimscript-1')
13306
13307<							*scriptversion-2*  >
13308 :scriptversion 2
13309<	String concatenation with "." is not supported, use ".." instead.
13310	This avoids the ambiguity using "." for Dict member access and
13311	floating point numbers.  Now ".5" means the number 0.5.
13312
13313							*scriptversion-3*  >
13314 :scriptversion 3
13315<	All |vim-variable|s must be prefixed by "v:".  E.g. "version" doesn't
13316	work as |v:version| anymore, it can be used as a normal variable.
13317	Same for some obvious names as "count" and others.
13318
13319	Test for support with: >
13320		has('vimscript-3')
13321<
13322							*scriptversion-4*  >
13323 :scriptversion 4
13324<	Numbers with a leading zero are not recognized as octal.  With the
13325	previous version you get: >
13326		echo 017   " displays 15
13327		echo 018   " displays 18
13328<	with script version 4: >
13329		echo 017   " displays 17
13330		echo 018   " displays 18
13331<	Also, it is possible to use single quotes inside numbers to make them
13332	easier to read: >
13333		echo 1'000'000
13334<	The quotes must be surrounded by digits.
13335
13336	Test for support with: >
13337		has('vimscript-4')
13338
13339==============================================================================
1334011. No +eval feature				*no-eval-feature*
13341
13342When the |+eval| feature was disabled at compile time, none of the expression
13343evaluation commands are available.  To prevent this from causing Vim scripts
13344to generate all kinds of errors, the ":if" and ":endif" commands are still
13345recognized, though the argument of the ":if" and everything between the ":if"
13346and the matching ":endif" is ignored.  Nesting of ":if" blocks is allowed, but
13347only if the commands are at the start of the line.  The ":else" command is not
13348recognized.
13349
13350Example of how to avoid executing commands when the |+eval| feature is
13351missing: >
13352
13353	:if 1
13354	:  echo "Expression evaluation is compiled in"
13355	:else
13356	:  echo "You will _never_ see this message"
13357	:endif
13358
13359To execute a command only when the |+eval| feature is disabled can be done in
13360two ways.  The simplest is to exit the script (or Vim) prematurely: >
13361	if 1
13362	   echo "commands executed with +eval"
13363	   finish
13364	endif
13365	args  " command executed without +eval
13366
13367If you do not want to abort loading the script you can use a trick, as this
13368example shows: >
13369
13370	silent! while 0
13371	  set history=111
13372	silent! endwhile
13373
13374When the |+eval| feature is available the command is skipped because of the
13375"while 0".  Without the |+eval| feature the "while 0" is an error, which is
13376silently ignored, and the command is executed.
13377
13378==============================================================================
1337912. The sandbox					*eval-sandbox* *sandbox* *E48*
13380
13381The 'foldexpr', 'formatexpr', 'includeexpr', 'indentexpr', 'statusline' and
13382'foldtext' options may be evaluated in a sandbox.  This means that you are
13383protected from these expressions having nasty side effects.  This gives some
13384safety for when these options are set from a modeline.  It is also used when
13385the command from a tags file is executed and for CTRL-R = in the command line.
13386The sandbox is also used for the |:sandbox| command.
13387
13388These items are not allowed in the sandbox:
13389	- changing the buffer text
13390	- defining or changing mapping, autocommands, user commands
13391	- setting certain options (see |option-summary|)
13392	- setting certain v: variables (see |v:var|)  *E794*
13393	- executing a shell command
13394	- reading or writing a file
13395	- jumping to another buffer or editing a file
13396	- executing Python, Perl, etc. commands
13397This is not guaranteed 100% secure, but it should block most attacks.
13398
13399							*:san* *:sandbox*
13400:san[dbox] {cmd}	Execute {cmd} in the sandbox.  Useful to evaluate an
13401			option that may have been set from a modeline, e.g.
13402			'foldexpr'.
13403
13404							*sandbox-option*
13405A few options contain an expression.  When this expression is evaluated it may
13406have to be done in the sandbox to avoid a security risk.  But the sandbox is
13407restrictive, thus this only happens when the option was set from an insecure
13408location.  Insecure in this context are:
13409- sourcing a .vimrc or .exrc in the current directory
13410- while executing in the sandbox
13411- value coming from a modeline
13412- executing a function that was defined in the sandbox
13413
13414Note that when in the sandbox and saving an option value and restoring it, the
13415option will still be marked as it was set in the sandbox.
13416
13417==============================================================================
1341813. Textlock							*textlock*
13419
13420In a few situations it is not allowed to change the text in the buffer, jump
13421to another window and some other things that might confuse or break what Vim
13422is currently doing.  This mostly applies to things that happen when Vim is
13423actually doing something else.  For example, evaluating the 'balloonexpr' may
13424happen any moment the mouse cursor is resting at some position.
13425
13426This is not allowed when the textlock is active:
13427	- changing the buffer text
13428	- jumping to another buffer or window
13429	- editing another file
13430	- closing a window or quitting Vim
13431	- etc.
13432
13433
13434 vim:tw=78:ts=8:noet:ft=help:norl:
13435