xref: /vim-8.2.3635/runtime/doc/eval.txt (revision e46736b2)
1*eval.txt*	For Vim version 8.1.  Last change: 2019 Mar 29
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
151.  Variables			|variables|
16    1.1 Variable types
17    1.2 Function references		|Funcref|
18    1.3 Lists				|Lists|
19    1.4 Dictionaries			|Dictionaries|
20    1.5 Blobs				|Blobs|
21    1.6 More about variables		|more-variables|
222.  Expression syntax		|expression-syntax|
233.  Internal variable		|internal-variables|
244.  Builtin Functions		|functions|
255.  Defining functions		|user-functions|
266.  Curly braces names		|curly-braces-names|
277.  Commands			|expression-commands|
288.  Exception handling		|exception-handling|
299.  Examples			|eval-examples|
3010. No +eval feature		|no-eval-feature|
3111. The sandbox			|eval-sandbox|
3212. Textlock			|textlock|
3313. Testing			|testing|
34
35{Vi does not have any of these commands}
36
37==============================================================================
381. Variables						*variables*
39
401.1 Variable types ~
41						*E712* *E896* *E897* *E899*
42There are nine types of variables:
43
44Number		A 32 or 64 bit signed number.  |expr-number| *Number*
45		64-bit Numbers are available only when compiled with the
46		|+num64| feature.
47		Examples:  -123  0x10  0177  0b1011
48
49Float		A floating point number. |floating-point-format| *Float*
50		{only when compiled with the |+float| feature}
51		Examples: 123.456  1.15e-6  -1.1e3
52
53							*E928*
54String		A NUL terminated string of 8-bit unsigned characters (bytes).
55		|expr-string| Examples: "ab\txx\"--"  'x-z''a,c'
56
57List		An ordered sequence of items, see |List| for details.
58		Example: [1, 2, ['a', 'b']]
59
60Dictionary	An associative, unordered array: Each entry has a key and a
61		value. |Dictionary|
62		Example: {'blue': "#0000ff", 'red': "#ff0000"}
63
64Funcref		A reference to a function |Funcref|.
65		Example: function("strlen")
66		It can be bound to a dictionary and arguments, it then works
67		like a Partial.
68		Example: function("Callback", [arg], myDict)
69
70Special		|v:false|, |v:true|, |v:none| and |v:null|.  *Special*
71
72Job		Used for a job, see |job_start()|. *Job* *Jobs*
73
74Channel		Used for a channel, see |ch_open()|. *Channel* *Channels*
75
76Blob		Binary Large Object. Stores any sequence of bytes.  See |Blob|
77		for details
78		Example: 0zFF00ED015DAF
79		0z is an empty Blob.
80
81The Number and String types are converted automatically, depending on how they
82are used.
83
84Conversion from a Number to a String is by making the ASCII representation of
85the Number.  Examples:
86	Number 123	-->	String "123" ~
87	Number 0	-->	String "0" ~
88	Number -1	-->	String "-1" ~
89							*octal*
90Conversion from a String to a Number is done by converting the first digits to
91a number.  Hexadecimal "0xf9", Octal "017", and Binary "0b10" numbers are
92recognized.  If the String doesn't start with digits, the result is zero.
93Examples:
94	String "456"	-->	Number 456 ~
95	String "6bar"	-->	Number 6 ~
96	String "foo"	-->	Number 0 ~
97	String "0xf1"	-->	Number 241 ~
98	String "0100"	-->	Number 64 ~
99	String "0b101"	-->	Number 5 ~
100	String "-8"	-->	Number -8 ~
101	String "+8"	-->	Number 0 ~
102
103To force conversion from String to Number, add zero to it: >
104	:echo "0100" + 0
105<	64 ~
106
107To avoid a leading zero to cause octal conversion, or for using a different
108base, use |str2nr()|.
109
110						*TRUE* *FALSE* *Boolean*
111For boolean operators Numbers are used.  Zero is FALSE, non-zero is TRUE.
112You can also use |v:false| and |v:true|.  When TRUE is returned from a
113function it is the Number one, FALSE is the number zero.
114
115Note that in the command: >
116	:if "foo"
117	:" NOT executed
118"foo" is converted to 0, which means FALSE.  If the string starts with a
119non-zero number it means TRUE: >
120	:if "8foo"
121	:" executed
122To test for a non-empty string, use empty(): >
123	:if !empty("foo")
124<
125							*non-zero-arg*
126Function arguments often behave slightly different from |TRUE|: If the
127argument is present and it evaluates to a non-zero Number, |v:true| or a
128non-empty String, then the value is considered to be TRUE.
129Note that " " and "0" are also non-empty strings, thus considered to be TRUE.
130A List, Dictionary or Float is not a Number or String, thus evaluate to FALSE.
131
132		*E745* *E728* *E703* *E729* *E730* *E731* *E908* *E910* *E913*
133		*E974* *E975* *E976*
134|List|, |Dictionary|, |Funcref|, |Job|, |Channel| and |Blob| types are not
135automatically converted.
136
137							*E805* *E806* *E808*
138When mixing Number and Float the Number is converted to Float.  Otherwise
139there is no automatic conversion of Float.  You can use str2float() for String
140to Float, printf() for Float to String and float2nr() for Float to Number.
141
142			*E891* *E892* *E893* *E894* *E907* *E911* *E914*
143When expecting a Float a Number can also be used, but nothing else.
144
145						*no-type-checking*
146You will not get an error if you try to change the type of a variable.
147
148
1491.2 Function references ~
150					*Funcref* *E695* *E718*
151A Funcref variable is obtained with the |function()| function, the |funcref()|
152function or created with the lambda expression |expr-lambda|.  It can be used
153in an expression in the place of a function name, before the parenthesis
154around the arguments, to invoke the function it refers to.  Example: >
155
156	:let Fn = function("MyFunc")
157	:echo Fn()
158<							*E704* *E705* *E707*
159A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:".  You
160can use "g:" but the following name must still start with a capital.  You
161cannot have both a Funcref variable and a function with the same name.
162
163A special case is defining a function and directly assigning its Funcref to a
164Dictionary entry.  Example: >
165	:function dict.init() dict
166	:   let self.val = 0
167	:endfunction
168
169The key of the Dictionary can start with a lower case letter.  The actual
170function name is not used here.  Also see |numbered-function|.
171
172A Funcref can also be used with the |:call| command: >
173	:call Fn()
174	:call dict.init()
175
176The name of the referenced function can be obtained with |string()|. >
177	:let func = string(Fn)
178
179You can use |call()| to invoke a Funcref and use a list variable for the
180arguments: >
181	:let r = call(Fn, mylist)
182<
183								*Partial*
184A Funcref optionally binds a Dictionary and/or arguments.  This is also called
185a Partial.  This is created by passing the Dictionary and/or arguments to
186function() or funcref().  When calling the function the Dictionary and/or
187arguments will be passed to the function.  Example: >
188
189	let Cb = function('Callback', ['foo'], myDict)
190	call Cb('bar')
191
192This will invoke the function as if using: >
193	call myDict.Callback('foo', 'bar')
194
195This is very useful when passing a function around, e.g. in the arguments of
196|ch_open()|.
197
198Note that binding a function to a Dictionary also happens when the function is
199a member of the Dictionary: >
200
201	let myDict.myFunction = MyFunction
202	call myDict.myFunction()
203
204Here MyFunction() will get myDict passed as "self".  This happens when the
205"myFunction" member is accessed.  When making assigning "myFunction" to
206otherDict and calling it, it will be bound to otherDict: >
207
208	let otherDict.myFunction = myDict.myFunction
209	call otherDict.myFunction()
210
211Now "self" will be "otherDict".  But when the dictionary was bound explicitly
212this won't happen: >
213
214	let myDict.myFunction = function(MyFunction, myDict)
215	let otherDict.myFunction = myDict.myFunction
216	call otherDict.myFunction()
217
218Here "self" will be "myDict", because it was bound explicitly.
219
220
2211.3 Lists ~
222						*list* *List* *Lists* *E686*
223A List is an ordered sequence of items.  An item can be of any type.  Items
224can be accessed by their index number.  Items can be added and removed at any
225position in the sequence.
226
227
228List creation ~
229							*E696* *E697*
230A List is created with a comma separated list of items in square brackets.
231Examples: >
232	:let mylist = [1, two, 3, "four"]
233	:let emptylist = []
234
235An item can be any expression.  Using a List for an item creates a
236List of Lists: >
237	:let nestlist = [[11, 12], [21, 22], [31, 32]]
238
239An extra comma after the last item is ignored.
240
241
242List index ~
243							*list-index* *E684*
244An item in the List can be accessed by putting the index in square brackets
245after the List.  Indexes are zero-based, thus the first item has index zero. >
246	:let item = mylist[0]		" get the first item: 1
247	:let item = mylist[2]		" get the third item: 3
248
249When the resulting item is a list this can be repeated: >
250	:let item = nestlist[0][1]	" get the first list, second item: 12
251<
252A negative index is counted from the end.  Index -1 refers to the last item in
253the List, -2 to the last but one item, etc. >
254	:let last = mylist[-1]		" get the last item: "four"
255
256To avoid an error for an invalid index use the |get()| function.  When an item
257is not available it returns zero or the default value you specify: >
258	:echo get(mylist, idx)
259	:echo get(mylist, idx, "NONE")
260
261
262List concatenation ~
263
264Two lists can be concatenated with the "+" operator: >
265	:let longlist = mylist + [5, 6]
266	:let mylist += [7, 8]
267
268To prepend or append an item turn the item into a list by putting [] around
269it.  To change a list in-place see |list-modification| below.
270
271
272Sublist ~
273							*sublist*
274A part of the List can be obtained by specifying the first and last index,
275separated by a colon in square brackets: >
276	:let shortlist = mylist[2:-1]	" get List [3, "four"]
277
278Omitting the first index is similar to zero.  Omitting the last index is
279similar to -1. >
280	:let endlist = mylist[2:]	" from item 2 to the end: [3, "four"]
281	:let shortlist = mylist[2:2]	" List with one item: [3]
282	:let otherlist = mylist[:]	" make a copy of the List
283
284If the first index is beyond the last item of the List or the second item is
285before the first item, the result is an empty list.  There is no error
286message.
287
288If the second index is equal to or greater than the length of the list the
289length minus one is used: >
290	:let mylist = [0, 1, 2, 3]
291	:echo mylist[2:8]		" result: [2, 3]
292
293NOTE: mylist[s:e] means using the variable "s:e" as index.  Watch out for
294using a single letter variable before the ":".  Insert a space when needed:
295mylist[s : e].
296
297
298List identity ~
299							*list-identity*
300When variable "aa" is a list and you assign it to another variable "bb", both
301variables refer to the same list.  Thus changing the list "aa" will also
302change "bb": >
303	:let aa = [1, 2, 3]
304	:let bb = aa
305	:call add(aa, 4)
306	:echo bb
307<	[1, 2, 3, 4]
308
309Making a copy of a list is done with the |copy()| function.  Using [:] also
310works, as explained above.  This creates a shallow copy of the list: Changing
311a list item in the list will also change the item in the copied list: >
312	:let aa = [[1, 'a'], 2, 3]
313	:let bb = copy(aa)
314	:call add(aa, 4)
315	:let aa[0][1] = 'aaa'
316	:echo aa
317<	[[1, aaa], 2, 3, 4] >
318	:echo bb
319<	[[1, aaa], 2, 3]
320
321To make a completely independent list use |deepcopy()|.  This also makes a
322copy of the values in the list, recursively.  Up to a hundred levels deep.
323
324The operator "is" can be used to check if two variables refer to the same
325List.  "isnot" does the opposite.  In contrast "==" compares if two lists have
326the same value. >
327	:let alist = [1, 2, 3]
328	:let blist = [1, 2, 3]
329	:echo alist is blist
330<	0 >
331	:echo alist == blist
332<	1
333
334Note about comparing lists: Two lists are considered equal if they have the
335same length and all items compare equal, as with using "==".  There is one
336exception: When comparing a number with a string they are considered
337different.  There is no automatic type conversion, as with using "==" on
338variables.  Example: >
339	echo 4 == "4"
340<	1 >
341	echo [4] == ["4"]
342<	0
343
344Thus comparing Lists is more strict than comparing numbers and strings.  You
345can compare simple values this way too by putting them in a list: >
346
347	:let a = 5
348	:let b = "5"
349	:echo a == b
350<	1 >
351	:echo [a] == [b]
352<	0
353
354
355List unpack ~
356
357To unpack the items in a list to individual variables, put the variables in
358square brackets, like list items: >
359	:let [var1, var2] = mylist
360
361When the number of variables does not match the number of items in the list
362this produces an error.  To handle any extra items from the list append ";"
363and a variable name: >
364	:let [var1, var2; rest] = mylist
365
366This works like: >
367	:let var1 = mylist[0]
368	:let var2 = mylist[1]
369	:let rest = mylist[2:]
370
371Except that there is no error if there are only two items.  "rest" will be an
372empty list then.
373
374
375List modification ~
376							*list-modification*
377To change a specific item of a list use |:let| this way: >
378	:let list[4] = "four"
379	:let listlist[0][3] = item
380
381To change part of a list you can specify the first and last item to be
382modified.  The value must at least have the number of items in the range: >
383	:let list[3:5] = [3, 4, 5]
384
385Adding and removing items from a list is done with functions.  Here are a few
386examples: >
387	:call insert(list, 'a')		" prepend item 'a'
388	:call insert(list, 'a', 3)	" insert item 'a' before list[3]
389	:call add(list, "new")		" append String item
390	:call add(list, [1, 2])		" append a List as one new item
391	:call extend(list, [1, 2])	" extend the list with two more items
392	:let i = remove(list, 3)	" remove item 3
393	:unlet list[3]			" idem
394	:let l = remove(list, 3, -1)	" remove items 3 to last item
395	:unlet list[3 : ]		" idem
396	:call filter(list, 'v:val !~ "x"')  " remove items with an 'x'
397
398Changing the order of items in a list: >
399	:call sort(list)		" sort a list alphabetically
400	:call reverse(list)		" reverse the order of items
401	:call uniq(sort(list))		" sort and remove duplicates
402
403
404For loop ~
405
406The |:for| loop executes commands for each item in a list.  A variable is set
407to each item in the list in sequence.  Example: >
408	:for item in mylist
409	:   call Doit(item)
410	:endfor
411
412This works like: >
413	:let index = 0
414	:while index < len(mylist)
415	:   let item = mylist[index]
416	:   :call Doit(item)
417	:   let index = index + 1
418	:endwhile
419
420If all you want to do is modify each item in the list then the |map()|
421function will be a simpler method than a for loop.
422
423Just like the |:let| command, |:for| also accepts a list of variables.  This
424requires the argument to be a list of lists. >
425	:for [lnum, col] in [[1, 3], [2, 8], [3, 0]]
426	:   call Doit(lnum, col)
427	:endfor
428
429This works like a |:let| command is done for each list item.  Again, the types
430must remain the same to avoid an error.
431
432It is also possible to put remaining items in a List variable: >
433	:for [i, j; rest] in listlist
434	:   call Doit(i, j)
435	:   if !empty(rest)
436	:      echo "remainder: " . string(rest)
437	:   endif
438	:endfor
439
440
441List functions ~
442						*E714*
443Functions that are useful with a List: >
444	:let r = call(funcname, list)	" call a function with an argument list
445	:if empty(list)			" check if list is empty
446	:let l = len(list)		" number of items in list
447	:let big = max(list)		" maximum value in list
448	:let small = min(list)		" minimum value in list
449	:let xs = count(list, 'x')	" count nr of times 'x' appears in list
450	:let i = index(list, 'x')	" index of first 'x' in list
451	:let lines = getline(1, 10)	" get ten text lines from buffer
452	:call append('$', lines)	" append text lines in buffer
453	:let list = split("a b c")	" create list from items in a string
454	:let string = join(list, ', ')	" create string from list items
455	:let s = string(list)		" String representation of list
456	:call map(list, '">> " . v:val')  " prepend ">> " to each item
457
458Don't forget that a combination of features can make things simple.  For
459example, to add up all the numbers in a list: >
460	:exe 'let sum = ' . join(nrlist, '+')
461
462
4631.4 Dictionaries ~
464				*dict* *Dict* *Dictionaries* *Dictionary*
465A Dictionary is an associative array: Each entry has a key and a value.  The
466entry can be located with the key.  The entries are stored without a specific
467ordering.
468
469
470Dictionary creation ~
471						*E720* *E721* *E722* *E723*
472A Dictionary is created with a comma separated list of entries in curly
473braces.  Each entry has a key and a value, separated by a colon.  Each key can
474only appear once.  Examples: >
475	:let mydict = {1: 'one', 2: 'two', 3: 'three'}
476	:let emptydict = {}
477<							*E713* *E716* *E717*
478A key is always a String.  You can use a Number, it will be converted to a
479String automatically.  Thus the String '4' and the number 4 will find the same
480entry.  Note that the String '04' and the Number 04 are different, since the
481Number will be converted to the String '4'.  The empty string can be used as a
482key.
483
484A value can be any expression.  Using a Dictionary for a value creates a
485nested Dictionary: >
486	:let nestdict = {1: {11: 'a', 12: 'b'}, 2: {21: 'c'}}
487
488An extra comma after the last entry is ignored.
489
490
491Accessing entries ~
492
493The normal way to access an entry is by putting the key in square brackets: >
494	:let val = mydict["one"]
495	:let mydict["four"] = 4
496
497You can add new entries to an existing Dictionary this way, unlike Lists.
498
499For keys that consist entirely of letters, digits and underscore the following
500form can be used |expr-entry|: >
501	:let val = mydict.one
502	:let mydict.four = 4
503
504Since an entry can be any type, also a List and a Dictionary, the indexing and
505key lookup can be repeated: >
506	:echo dict.key[idx].key
507
508
509Dictionary to List conversion ~
510
511You may want to loop over the entries in a dictionary.  For this you need to
512turn the Dictionary into a List and pass it to |:for|.
513
514Most often you want to loop over the keys, using the |keys()| function: >
515	:for key in keys(mydict)
516	:   echo key . ': ' . mydict[key]
517	:endfor
518
519The List of keys is unsorted.  You may want to sort them first: >
520	:for key in sort(keys(mydict))
521
522To loop over the values use the |values()| function:  >
523	:for v in values(mydict)
524	:   echo "value: " . v
525	:endfor
526
527If you want both the key and the value use the |items()| function.  It returns
528a List in which each item is a List with two items, the key and the value: >
529	:for [key, value] in items(mydict)
530	:   echo key . ': ' . value
531	:endfor
532
533
534Dictionary identity ~
535							*dict-identity*
536Just like Lists you need to use |copy()| and |deepcopy()| to make a copy of a
537Dictionary.  Otherwise, assignment results in referring to the same
538Dictionary: >
539	:let onedict = {'a': 1, 'b': 2}
540	:let adict = onedict
541	:let adict['a'] = 11
542	:echo onedict['a']
543	11
544
545Two Dictionaries compare equal if all the key-value pairs compare equal.  For
546more info see |list-identity|.
547
548
549Dictionary modification ~
550							*dict-modification*
551To change an already existing entry of a Dictionary, or to add a new entry,
552use |:let| this way: >
553	:let dict[4] = "four"
554	:let dict['one'] = item
555
556Removing an entry from a Dictionary is done with |remove()| or |:unlet|.
557Three ways to remove the entry with key "aaa" from dict: >
558	:let i = remove(dict, 'aaa')
559	:unlet dict.aaa
560	:unlet dict['aaa']
561
562Merging a Dictionary with another is done with |extend()|: >
563	:call extend(adict, bdict)
564This extends adict with all entries from bdict.  Duplicate keys cause entries
565in adict to be overwritten.  An optional third argument can change this.
566Note that the order of entries in a Dictionary is irrelevant, thus don't
567expect ":echo adict" to show the items from bdict after the older entries in
568adict.
569
570Weeding out entries from a Dictionary can be done with |filter()|: >
571	:call filter(dict, 'v:val =~ "x"')
572This removes all entries from "dict" with a value not matching 'x'.
573
574
575Dictionary function ~
576				*Dictionary-function* *self* *E725* *E862*
577When a function is defined with the "dict" attribute it can be used in a
578special way with a dictionary.  Example: >
579	:function Mylen() dict
580	:   return len(self.data)
581	:endfunction
582	:let mydict = {'data': [0, 1, 2, 3], 'len': function("Mylen")}
583	:echo mydict.len()
584
585This is like a method in object oriented programming.  The entry in the
586Dictionary is a |Funcref|.  The local variable "self" refers to the dictionary
587the function was invoked from.
588
589It is also possible to add a function without the "dict" attribute as a
590Funcref to a Dictionary, but the "self" variable is not available then.
591
592				*numbered-function* *anonymous-function*
593To avoid the extra name for the function it can be defined and directly
594assigned to a Dictionary in this way: >
595	:let mydict = {'data': [0, 1, 2, 3]}
596	:function mydict.len()
597	:   return len(self.data)
598	:endfunction
599	:echo mydict.len()
600
601The function will then get a number and the value of dict.len is a |Funcref|
602that references this function.  The function can only be used through a
603|Funcref|.  It will automatically be deleted when there is no |Funcref|
604remaining that refers to it.
605
606It is not necessary to use the "dict" attribute for a numbered function.
607
608If you get an error for a numbered function, you can find out what it is with
609a trick.  Assuming the function is 42, the command is: >
610	:function {42}
611
612
613Functions for Dictionaries ~
614							*E715*
615Functions that can be used with a Dictionary: >
616	:if has_key(dict, 'foo')	" TRUE if dict has entry with key "foo"
617	:if empty(dict)			" TRUE if dict is empty
618	:let l = len(dict)		" number of items in dict
619	:let big = max(dict)		" maximum value in dict
620	:let small = min(dict)		" minimum value in dict
621	:let xs = count(dict, 'x')	" count nr of times 'x' appears in dict
622	:let s = string(dict)		" String representation of dict
623	:call map(dict, '">> " . v:val')  " prepend ">> " to each item
624
625
6261.5 Blobs ~
627						*blob* *Blob* *Blobs* *E978*
628A Blob mostly behaves like a |List| of numbers, where the numbers have an
6298-bit value, from 0 to 255.
630
631
632Blob creation ~
633
634A Blob can be created with a |blob-literal|: >
635	:let b = 0zFF00ED015DAF
636Dots can be inserted between bytes (pair of hex characters) for readability,
637they don't change the value: >
638	:let b = 0zFF00.ED01.5DAF
639
640A blob can be read from a file with |readfile()| passing the {type} argument
641set to "B", for example: >
642	:let b = readfile('image.png', 'B')
643
644A blob can be read from a channel with the |ch_readblob()| function.
645
646
647Blob index ~
648							*blob-index* *E979*
649A byte in the Blob can be accessed by putting the index in square brackets
650after the Blob.  Indexes are zero-based, thus the first byte has index zero. >
651	:let myblob = 0z00112233
652	:let byte = myblob[0]		" get the first byte: 0x00
653	:let byte = myblob[2]		" get the third byte: 0x22
654
655A negative index is counted from the end.  Index -1 refers to the last byte in
656the Blob, -2 to the last but one byte, etc. >
657	:let last = myblob[-1]		" get the last byte: 0x33
658
659To avoid an error for an invalid index use the |get()| function.  When an item
660is not available it returns -1 or the default value you specify: >
661	:echo get(myblob, idx)
662	:echo get(myblob, idx, 999)
663
664
665Blob iteration ~
666
667The |:for| loop executes commands for each byte of a Blob.  The loop variable is
668set to each byte in the Blob.  Example: >
669	:for byte in 0z112233
670	:   call Doit(byte)
671	:endfor
672This calls Doit() with 0x11, 0x22 and 0x33.
673
674
675Blob concatenation ~
676
677Two blobs can be concatenated with the "+" operator: >
678	:let longblob = myblob + 0z4455
679	:let myblob += 0z6677
680
681To change a blob in-place see |blob-modification| below.
682
683
684Part of a blob ~
685
686A part of the Blob can be obtained by specifying the first and last index,
687separated by a colon in square brackets: >
688	:let myblob = 0z00112233
689	:let shortblob = myblob[1:2]	" get 0z1122
690	:let shortblob = myblob[2:-1]	" get 0z2233
691
692Omitting the first index is similar to zero.  Omitting the last index is
693similar to -1. >
694	:let endblob = myblob[2:]	" from item 2 to the end: 0z2233
695	:let shortblob = myblob[2:2]	" Blob with one byte: 0z22
696	:let otherblob = myblob[:]	" make a copy of the Blob
697
698If the first index is beyond the last byte of the Blob or the second index is
699before the first index, the result is an empty Blob.  There is no error
700message.
701
702If the second index is equal to or greater than the length of the list the
703length minus one is used: >
704	:echo myblob[2:8]		" result: 0z2233
705
706
707Blob modification ~
708							*blob-modification*
709To change a specific byte of a blob use |:let| this way: >
710	:let blob[4] = 0x44
711
712When the index is just one beyond the end of the Blob, it is appended. Any
713higher index is an error.
714
715To change a sequence of bytes the [:] notation can be used: >
716	let blob[1:3] = 0z445566
717The length of the replaced bytes must be exactly the same as the value
718provided. *E972*
719
720To change part of a blob you can specify the first and last byte to be
721modified.  The value must have the same number of bytes in the range: >
722	:let blob[3:5] = 0z334455
723
724You can also use the functions |add()|, |remove()| and |insert()|.
725
726
727Blob identity ~
728
729Blobs can be compared for equality: >
730	if blob == 0z001122
731And for equal identity: >
732	if blob is otherblob
733<							*blob-identity* *E977*
734When variable "aa" is a Blob and you assign it to another variable "bb", both
735variables refer to the same Blob.  Then the "is" operator returns true.
736
737When making a copy using [:] or |copy()| the values are the same, but the
738identity is different: >
739	:let blob = 0z112233
740	:let blob2 = blob
741	:echo blob == blob2
742<	1 >
743	:echo blob is blob2
744<	1 >
745	:let blob3 = blob[:]
746	:echo blob == blob3
747<	1 >
748	:echo blob is blob3
749<	0
750
751Making a copy of a Blob is done with the |copy()| function.  Using [:] also
752works, as explained above.
753
754
7551.6 More about variables ~
756							*more-variables*
757If you need to know the type of a variable or expression, use the |type()|
758function.
759
760When the '!' flag is included in the 'viminfo' option, global variables that
761start with an uppercase letter, and don't contain a lowercase letter, are
762stored in the viminfo file |viminfo-file|.
763
764When the 'sessionoptions' option contains "global", global variables that
765start with an uppercase letter and contain at least one lowercase letter are
766stored in the session file |session-file|.
767
768variable name		can be stored where ~
769my_var_6		not
770My_Var_6		session file
771MY_VAR_6		viminfo file
772
773
774It's possible to form a variable name with curly braces, see
775|curly-braces-names|.
776
777==============================================================================
7782. Expression syntax					*expression-syntax*
779
780Expression syntax summary, from least to most significant:
781
782|expr1|	expr2
783	expr2 ? expr1 : expr1	if-then-else
784
785|expr2|	expr3
786	expr3 || expr3 ..	logical OR
787
788|expr3|	expr4
789	expr4 && expr4 ..	logical AND
790
791|expr4|	expr5
792	expr5 == expr5		equal
793	expr5 != expr5		not equal
794	expr5 >	 expr5		greater than
795	expr5 >= expr5		greater than or equal
796	expr5 <	 expr5		smaller than
797	expr5 <= expr5		smaller than or equal
798	expr5 =~ expr5		regexp matches
799	expr5 !~ expr5		regexp doesn't match
800
801	expr5 ==? expr5		equal, ignoring case
802	expr5 ==# expr5		equal, match case
803	etc.			As above, append ? for ignoring case, # for
804				matching case
805
806	expr5 is expr5		same |List|, |Dictionary| or |Blob| instance
807	expr5 isnot expr5	different |List|, |Dictionary| or |Blob|
808				instance
809
810|expr5|	expr6
811	expr6 +	 expr6 ..	number addition, list or blob concatenation
812	expr6 -	 expr6 ..	number subtraction
813	expr6 .	 expr6 ..	string concatenation
814
815|expr6|	expr7
816	expr7 *	 expr7 ..	number multiplication
817	expr7 /	 expr7 ..	number division
818	expr7 %	 expr7 ..	number modulo
819
820|expr7|	expr8
821	! expr7			logical NOT
822	- expr7			unary minus
823	+ expr7			unary plus
824
825|expr8|	expr9
826	expr8[expr1]		byte of a String or item of a |List|
827	expr8[expr1 : expr1]	substring of a String or sublist of a |List|
828	expr8.name		entry in a |Dictionary|
829	expr8(expr1, ...)	function call with |Funcref| variable
830
831|expr9|	number			number constant
832	"string"		string constant, backslash is special
833	'string'		string constant, ' is doubled
834	[expr1, ...]		|List|
835	{expr1: expr1, ...}	|Dictionary|
836	&option			option value
837	(expr1)			nested expression
838	variable		internal variable
839	va{ria}ble		internal variable with curly braces
840	$VAR			environment variable
841	@r			contents of register 'r'
842	function(expr1, ...)	function call
843	func{ti}on(expr1, ...)	function call with curly braces
844	{args -> expr1}		lambda expression
845
846
847".." indicates that the operations in this level can be concatenated.
848Example: >
849	&nu || &list && &shell == "csh"
850
851All expressions within one level are parsed from left to right.
852
853
854expr1							*expr1* *E109*
855-----
856
857expr2 ? expr1 : expr1
858
859The expression before the '?' is evaluated to a number.  If it evaluates to
860|TRUE|, the result is the value of the expression between the '?' and ':',
861otherwise the result is the value of the expression after the ':'.
862Example: >
863	:echo lnum == 1 ? "top" : lnum
864
865Since the first expression is an "expr2", it cannot contain another ?:.  The
866other two expressions can, thus allow for recursive use of ?:.
867Example: >
868	:echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum
869
870To keep this readable, using |line-continuation| is suggested: >
871	:echo lnum == 1
872	:\	? "top"
873	:\	: lnum == 1000
874	:\		? "last"
875	:\		: lnum
876
877You should always put a space before the ':', otherwise it can be mistaken for
878use in a variable such as "a:1".
879
880
881expr2 and expr3						*expr2* *expr3*
882---------------
883
884expr3 || expr3 ..	logical OR		*expr-barbar*
885expr4 && expr4 ..	logical AND		*expr-&&*
886
887The "||" and "&&" operators take one argument on each side.  The arguments
888are (converted to) Numbers.  The result is:
889
890    input			 output ~
891n1	n2		n1 || n2	n1 && n2 ~
892|FALSE|	|FALSE|		|FALSE|		|FALSE|
893|FALSE|	|TRUE|		|TRUE|		|FALSE|
894|TRUE|	|FALSE|		|TRUE|		|FALSE|
895|TRUE|	|TRUE|		|TRUE|		|TRUE|
896
897The operators can be concatenated, for example: >
898
899	&nu || &list && &shell == "csh"
900
901Note that "&&" takes precedence over "||", so this has the meaning of: >
902
903	&nu || (&list && &shell == "csh")
904
905Once the result is known, the expression "short-circuits", that is, further
906arguments are not evaluated.  This is like what happens in C.  For example: >
907
908	let a = 1
909	echo a || b
910
911This is valid even if there is no variable called "b" because "a" is |TRUE|,
912so the result must be |TRUE|.  Similarly below: >
913
914	echo exists("b") && b == "yes"
915
916This is valid whether "b" has been defined or not.  The second clause will
917only be evaluated if "b" has been defined.
918
919
920expr4							*expr4*
921-----
922
923expr5 {cmp} expr5
924
925Compare two expr5 expressions, resulting in a 0 if it evaluates to false, or 1
926if it evaluates to true.
927
928			*expr-==*  *expr-!=*  *expr->*	 *expr->=*
929			*expr-<*   *expr-<=*  *expr-=~*  *expr-!~*
930			*expr-==#* *expr-!=#* *expr->#*  *expr->=#*
931			*expr-<#*  *expr-<=#* *expr-=~#* *expr-!~#*
932			*expr-==?* *expr-!=?* *expr->?*  *expr->=?*
933			*expr-<?*  *expr-<=?* *expr-=~?* *expr-!~?*
934			*expr-is* *expr-isnot* *expr-is#* *expr-isnot#*
935			*expr-is?* *expr-isnot?*
936		use 'ignorecase'    match case	   ignore case ~
937equal			==		==#		==?
938not equal		!=		!=#		!=?
939greater than		>		>#		>?
940greater than or equal	>=		>=#		>=?
941smaller than		<		<#		<?
942smaller than or equal	<=		<=#		<=?
943regexp matches		=~		=~#		=~?
944regexp doesn't match	!~		!~#		!~?
945same instance		is		is#		is?
946different instance	isnot		isnot#		isnot?
947
948Examples:
949"abc" ==# "Abc"	  evaluates to 0
950"abc" ==? "Abc"	  evaluates to 1
951"abc" == "Abc"	  evaluates to 1 if 'ignorecase' is set, 0 otherwise
952
953							*E691* *E692*
954A |List| can only be compared with a |List| and only "equal", "not equal",
955"is" and "isnot" can be used.  This compares the values of the list,
956recursively.  Ignoring case means case is ignored when comparing item values.
957
958							*E735* *E736*
959A |Dictionary| can only be compared with a |Dictionary| and only "equal", "not
960equal", "is" and "isnot" can be used.  This compares the key/values of the
961|Dictionary| recursively.  Ignoring case means case is ignored when comparing
962item values.
963
964							*E694*
965A |Funcref| can only be compared with a |Funcref| and only "equal", "not
966equal", "is" and "isnot" can be used.  Case is never ignored.  Whether
967arguments or a Dictionary are bound (with a partial) matters.  The
968Dictionaries must also be equal (or the same, in case of "is") and the
969arguments must be equal (or the same).
970
971To compare Funcrefs to see if they refer to the same function, ignoring bound
972Dictionary and arguments, use |get()| to get the function name: >
973	if get(Part1, 'name') == get(Part2, 'name')
974	   " Part1 and Part2 refer to the same function
975
976Using "is" or "isnot" with a |List|, |Dictionary| or |Blob| checks whether
977the expressions are referring to the same |List|, |Dictionary| or |Blob|
978instance.  A copy of a |List| is different from the original |List|.  When
979using "is" without a |List|, |Dictionary| or |Blob|, it is equivalent to
980using "equal", using "isnot" equivalent to using "not equal".  Except that
981a different type means the values are different: >
982	echo 4 == '4'
983	1
984	echo 4 is '4'
985	0
986	echo 0 is []
987	0
988"is#"/"isnot#" and "is?"/"isnot?" can be used to match and ignore case.
989
990When comparing a String with a Number, the String is converted to a Number,
991and the comparison is done on Numbers.  This means that: >
992	echo 0 == 'x'
993	1
994because 'x' converted to a Number is zero.  However: >
995	echo [0] == ['x']
996	0
997Inside a List or Dictionary this conversion is not used.
998
999When comparing two Strings, this is done with strcmp() or stricmp().  This
1000results in the mathematical difference (comparing byte values), not
1001necessarily the alphabetical difference in the local language.
1002
1003When using the operators with a trailing '#', or the short version and
1004'ignorecase' is off, the comparing is done with strcmp(): case matters.
1005
1006When using the operators with a trailing '?', or the short version and
1007'ignorecase' is set, the comparing is done with stricmp(): case is ignored.
1008
1009'smartcase' is not used.
1010
1011The "=~" and "!~" operators match the lefthand argument with the righthand
1012argument, which is used as a pattern.  See |pattern| for what a pattern is.
1013This matching is always done like 'magic' was set and 'cpoptions' is empty, no
1014matter what the actual value of 'magic' or 'cpoptions' is.  This makes scripts
1015portable.  To avoid backslashes in the regexp pattern to be doubled, use a
1016single-quote string, see |literal-string|.
1017Since a string is considered to be a single line, a multi-line pattern
1018(containing \n, backslash-n) will not match.  However, a literal NL character
1019can be matched like an ordinary character.  Examples:
1020	"foo\nbar" =~ "\n"	evaluates to 1
1021	"foo\nbar" =~ "\\n"	evaluates to 0
1022
1023
1024expr5 and expr6						*expr5* *expr6*
1025---------------
1026expr6 + expr6  Number addition, |List| or |Blob| concatenation	*expr-+*
1027expr6 - expr6  Number subtraction				*expr--*
1028expr6 . expr6  String concatenation				*expr-.*
1029
1030For |Lists| only "+" is possible and then both expr6 must be a list.  The
1031result is a new list with the two lists Concatenated.
1032
1033expr7 * expr7  Number multiplication				*expr-star*
1034expr7 / expr7  Number division					*expr-/*
1035expr7 % expr7  Number modulo					*expr-%*
1036
1037For all, except ".", Strings are converted to Numbers.
1038For bitwise operators see |and()|, |or()| and |xor()|.
1039
1040Note the difference between "+" and ".":
1041	"123" + "456" = 579
1042	"123" . "456" = "123456"
1043
1044Since '.' has the same precedence as '+' and '-', you need to read: >
1045	1 . 90 + 90.0
1046As: >
1047	(1 . 90) + 90.0
1048That works, since the String "190" is automatically converted to the Number
1049190, which can be added to the Float 90.0.  However: >
1050	1 . 90 * 90.0
1051Should be read as: >
1052	1 . (90 * 90.0)
1053Since '.' has lower precedence than '*'.  This does NOT work, since this
1054attempts to concatenate a Float and a String.
1055
1056When dividing a Number by zero the result depends on the value:
1057	  0 / 0  = -0x80000000	(like NaN for Float)
1058	 >0 / 0  =  0x7fffffff	(like positive infinity)
1059	 <0 / 0  = -0x7fffffff	(like negative infinity)
1060	(before Vim 7.2 it was always 0x7fffffff)
1061
1062When 64-bit Number support is enabled:
1063	  0 / 0  = -0x8000000000000000	(like NaN for Float)
1064	 >0 / 0  =  0x7fffffffffffffff	(like positive infinity)
1065	 <0 / 0  = -0x7fffffffffffffff	(like negative infinity)
1066
1067When the righthand side of '%' is zero, the result is 0.
1068
1069None of these work for |Funcref|s.
1070
1071. and % do not work for Float. *E804*
1072
1073
1074expr7							*expr7*
1075-----
1076! expr7			logical NOT		*expr-!*
1077- expr7			unary minus		*expr-unary--*
1078+ expr7			unary plus		*expr-unary-+*
1079
1080For '!' |TRUE| becomes |FALSE|, |FALSE| becomes |TRUE| (one).
1081For '-' the sign of the number is changed.
1082For '+' the number is unchanged.
1083
1084A String will be converted to a Number first.
1085
1086These three can be repeated and mixed.  Examples:
1087	!-1	    == 0
1088	!!8	    == 1
1089	--9	    == 9
1090
1091
1092expr8							*expr8*
1093-----
1094This expression is either |expr9| or a sequence of the alternatives below,
1095in any order.  E.g., these are all possible:
1096	expr9[expr1].name
1097	expr9.name[expr1]
1098	expr9(expr1, ...)[expr1].name
1099
1100
1101expr8[expr1]		item of String or |List|	*expr-[]* *E111*
1102							*E909* *subscript*
1103If expr8 is a Number or String this results in a String that contains the
1104expr1'th single byte from expr8.  expr8 is used as a String, expr1 as a
1105Number.  This doesn't recognize multi-byte encodings, see `byteidx()` for
1106an alternative, or use `split()` to turn the string into a list of characters.
1107
1108Index zero gives the first byte.  This is like it works in C.  Careful:
1109text column numbers start with one!  Example, to get the byte under the
1110cursor: >
1111	:let c = getline(".")[col(".") - 1]
1112
1113If the length of the String is less than the index, the result is an empty
1114String.  A negative index always results in an empty string (reason: backward
1115compatibility).  Use [-1:] to get the last byte.
1116
1117If expr8 is a |List| then it results the item at index expr1.  See |list-index|
1118for possible index values.  If the index is out of range this results in an
1119error.  Example: >
1120	:let item = mylist[-1]		" get last item
1121
1122Generally, if a |List| index is equal to or higher than the length of the
1123|List|, or more negative than the length of the |List|, this results in an
1124error.
1125
1126
1127expr8[expr1a : expr1b]	substring or sublist		*expr-[:]*
1128
1129If expr8 is a Number or String this results in the substring with the bytes
1130from expr1a to and including expr1b.  expr8 is used as a String, expr1a and
1131expr1b are used as a Number.  This doesn't recognize multi-byte encodings, see
1132|byteidx()| for computing the indexes.
1133
1134If expr1a is omitted zero is used.  If expr1b is omitted the length of the
1135string minus one is used.
1136
1137A negative number can be used to measure from the end of the string.  -1 is
1138the last character, -2 the last but one, etc.
1139
1140If an index goes out of range for the string characters are omitted.  If
1141expr1b is smaller than expr1a the result is an empty string.
1142
1143Examples: >
1144	:let c = name[-1:]		" last byte of a string
1145	:let c = name[-2:-2]		" last but one byte of a string
1146	:let s = line(".")[4:]		" from the fifth byte to the end
1147	:let s = s[:-3]			" remove last two bytes
1148<
1149							*slice*
1150If expr8 is a |List| this results in a new |List| with the items indicated by
1151the indexes expr1a and expr1b.  This works like with a String, as explained
1152just above. Also see |sublist| below.  Examples: >
1153	:let l = mylist[:3]		" first four items
1154	:let l = mylist[4:4]		" List with one item
1155	:let l = mylist[:]		" shallow copy of a List
1156
1157If expr8 is a |Blob| this results in a new |Blob| with the bytes in the
1158indexes expr1a and expr1b, inclusive.  Examples: >
1159	:let b = 0zDEADBEEF
1160	:let bs = b[1:2]		" 0zADBE
1161	:let bs = b[:]			" copy of 0zDEADBEEF
1162
1163Using expr8[expr1] or expr8[expr1a : expr1b] on a |Funcref| results in an
1164error.
1165
1166Watch out for confusion between a namespace and a variable followed by a colon
1167for a sublist: >
1168	mylist[n:]     " uses variable n
1169	mylist[s:]     " uses namespace s:, error!
1170
1171
1172expr8.name		entry in a |Dictionary|		*expr-entry*
1173
1174If expr8 is a |Dictionary| and it is followed by a dot, then the following
1175name will be used as a key in the |Dictionary|.  This is just like:
1176expr8[name].
1177
1178The name must consist of alphanumeric characters, just like a variable name,
1179but it may start with a number.  Curly braces cannot be used.
1180
1181There must not be white space before or after the dot.
1182
1183Examples: >
1184	:let dict = {"one": 1, 2: "two"}
1185	:echo dict.one
1186	:echo dict .2
1187
1188Note that the dot is also used for String concatenation.  To avoid confusion
1189always put spaces around the dot for String concatenation.
1190
1191
1192expr8(expr1, ...)	|Funcref| function call
1193
1194When expr8 is a |Funcref| type variable, invoke the function it refers to.
1195
1196
1197
1198							*expr9*
1199number
1200------
1201number			number constant			*expr-number*
1202				*hex-number* *octal-number* *binary-number*
1203
1204Decimal, Hexadecimal (starting with 0x or 0X), Binary (starting with 0b or 0B)
1205and Octal (starting with 0).
1206
1207						*floating-point-format*
1208Floating point numbers can be written in two forms:
1209
1210	[-+]{N}.{M}
1211	[-+]{N}.{M}[eE][-+]{exp}
1212
1213{N} and {M} are numbers.  Both {N} and {M} must be present and can only
1214contain digits.
1215[-+] means there is an optional plus or minus sign.
1216{exp} is the exponent, power of 10.
1217Only a decimal point is accepted, not a comma.  No matter what the current
1218locale is.
1219{only when compiled with the |+float| feature}
1220
1221Examples:
1222	123.456
1223	+0.0001
1224	55.0
1225	-0.123
1226	1.234e03
1227	1.0E-6
1228	-3.1416e+88
1229
1230These are INVALID:
1231	3.		empty {M}
1232	1e40		missing .{M}
1233
1234Rationale:
1235Before floating point was introduced, the text "123.456" was interpreted as
1236the two numbers "123" and "456", both converted to a string and concatenated,
1237resulting in the string "123456".  Since this was considered pointless, and we
1238could not find it intentionally being used in Vim scripts, this backwards
1239incompatibility was accepted in favor of being able to use the normal notation
1240for floating point numbers.
1241
1242							*float-pi* *float-e*
1243A few useful values to copy&paste: >
1244	:let pi = 3.14159265359
1245	:let e  = 2.71828182846
1246Or, if you don't want to write them in as floating-point literals, you can
1247also use functions, like the following: >
1248	:let pi = acos(-1.0)
1249	:let e  = exp(1.0)
1250<
1251						*floating-point-precision*
1252The precision and range of floating points numbers depends on what "double"
1253means in the library Vim was compiled with.  There is no way to change this at
1254runtime.
1255
1256The default for displaying a |Float| is to use 6 decimal places, like using
1257printf("%g", f).  You can select something else when using the |printf()|
1258function.  Example: >
1259	:echo printf('%.15e', atan(1))
1260<	7.853981633974483e-01
1261
1262
1263
1264string					*string* *String* *expr-string* *E114*
1265------
1266"string"		string constant		*expr-quote*
1267
1268Note that double quotes are used.
1269
1270A string constant accepts these special characters:
1271\...	three-digit octal number (e.g., "\316")
1272\..	two-digit octal number (must be followed by non-digit)
1273\.	one-digit octal number (must be followed by non-digit)
1274\x..	byte specified with two hex numbers (e.g., "\x1f")
1275\x.	byte specified with one hex number (must be followed by non-hex char)
1276\X..	same as \x..
1277\X.	same as \x.
1278\u....	character specified with up to 4 hex numbers, stored according to the
1279	current value of 'encoding' (e.g., "\u02a4")
1280\U....	same as \u but allows up to 8 hex numbers.
1281\b	backspace <BS>
1282\e	escape <Esc>
1283\f	formfeed <FF>
1284\n	newline <NL>
1285\r	return <CR>
1286\t	tab <Tab>
1287\\	backslash
1288\"	double quote
1289\<xxx>	Special key named "xxx".  e.g. "\<C-W>" for CTRL-W.  This is for use
1290	in mappings, the 0x80 byte is escaped.
1291	To use the double quote character it must be escaped: "<M-\">".
1292	Don't use <Char-xxxx> to get a utf-8 character, use \uxxxx as
1293	mentioned above.
1294
1295Note that "\xff" is stored as the byte 255, which may be invalid in some
1296encodings.  Use "\u00ff" to store character 255 according to the current value
1297of 'encoding'.
1298
1299Note that "\000" and "\x00" force the end of the string.
1300
1301
1302blob-literal				*blob-literal* *E973*
1303------------
1304
1305Hexadecimal starting with 0z or 0Z, with an arbitrary number of bytes.
1306The sequence must be an even number of hex characters.  Example: >
1307	:let b = 0zFF00ED015DAF
1308
1309
1310literal-string						*literal-string* *E115*
1311---------------
1312'string'		string constant			*expr-'*
1313
1314Note that single quotes are used.
1315
1316This string is taken as it is.  No backslashes are removed or have a special
1317meaning.  The only exception is that two quotes stand for one quote.
1318
1319Single quoted strings are useful for patterns, so that backslashes do not need
1320to be doubled.  These two commands are equivalent: >
1321	if a =~ "\\s*"
1322	if a =~ '\s*'
1323
1324
1325option						*expr-option* *E112* *E113*
1326------
1327&option			option value, local value if possible
1328&g:option		global option value
1329&l:option		local option value
1330
1331Examples: >
1332	echo "tabstop is " . &tabstop
1333	if &insertmode
1334
1335Any option name can be used here.  See |options|.  When using the local value
1336and there is no buffer-local or window-local value, the global value is used
1337anyway.
1338
1339
1340register						*expr-register* *@r*
1341--------
1342@r			contents of register 'r'
1343
1344The result is the contents of the named register, as a single string.
1345Newlines are inserted where required.  To get the contents of the unnamed
1346register use @" or @@.  See |registers| for an explanation of the available
1347registers.
1348
1349When using the '=' register you get the expression itself, not what it
1350evaluates to.  Use |eval()| to evaluate it.
1351
1352
1353nesting							*expr-nesting* *E110*
1354-------
1355(expr1)			nested expression
1356
1357
1358environment variable					*expr-env*
1359--------------------
1360$VAR			environment variable
1361
1362The String value of any environment variable.  When it is not defined, the
1363result is an empty string.
1364						*expr-env-expand*
1365Note that there is a difference between using $VAR directly and using
1366expand("$VAR").  Using it directly will only expand environment variables that
1367are known inside the current Vim session.  Using expand() will first try using
1368the environment variables known inside the current Vim session.  If that
1369fails, a shell will be used to expand the variable.  This can be slow, but it
1370does expand all variables that the shell knows about.  Example: >
1371	:echo $shell
1372	:echo expand("$shell")
1373The first one probably doesn't echo anything, the second echoes the $shell
1374variable (if your shell supports it).
1375
1376
1377internal variable					*expr-variable*
1378-----------------
1379variable		internal variable
1380See below |internal-variables|.
1381
1382
1383function call		*expr-function* *E116* *E118* *E119* *E120*
1384-------------
1385function(expr1, ...)	function call
1386See below |functions|.
1387
1388
1389lambda expression				*expr-lambda* *lambda*
1390-----------------
1391{args -> expr1}		lambda expression
1392
1393A lambda expression creates a new unnamed function which returns the result of
1394evaluating |expr1|.  Lambda expressions differ from |user-functions| in
1395the following ways:
1396
13971. The body of the lambda expression is an |expr1| and not a sequence of |Ex|
1398   commands.
13992. The prefix "a:" should not be used for arguments.  E.g.: >
1400	:let F = {arg1, arg2 -> arg1 - arg2}
1401	:echo F(5, 2)
1402<	3
1403
1404The arguments are optional.  Example: >
1405	:let F = {-> 'error function'}
1406	:echo F()
1407<	error function
1408							*closure*
1409Lambda expressions can access outer scope variables and arguments.  This is
1410often called a closure.  Example where "i" and "a:arg" are used in a lambda
1411while they already exist in the function scope.  They remain valid even after
1412the function returns: >
1413	:function Foo(arg)
1414	:  let i = 3
1415	:  return {x -> x + i - a:arg}
1416	:endfunction
1417	:let Bar = Foo(4)
1418	:echo Bar(6)
1419<	5
1420
1421Note that the variables must exist in the outer scope before the lamba is
1422defined for this to work.  See also |:func-closure|.
1423
1424Lambda and closure support can be checked with: >
1425	if has('lambda')
1426
1427Examples for using a lambda expression with |sort()|, |map()| and |filter()|: >
1428	:echo map([1, 2, 3], {idx, val -> val + 1})
1429<	[2, 3, 4] >
1430	:echo sort([3,7,2,1,4], {a, b -> a - b})
1431<	[1, 2, 3, 4, 7]
1432
1433The lambda expression is also useful for Channel, Job and timer: >
1434	:let timer = timer_start(500,
1435			\ {-> execute("echo 'Handler called'", "")},
1436			\ {'repeat': 3})
1437<	Handler called
1438	Handler called
1439	Handler called
1440
1441Note how execute() is used to execute an Ex command.  That's ugly though.
1442
1443
1444Lambda expressions have internal names like '<lambda>42'.  If you get an error
1445for a lambda expression, you can find what it is with the following command: >
1446	:function {'<lambda>42'}
1447See also: |numbered-function|
1448
1449==============================================================================
14503. Internal variable				*internal-variables* *E461*
1451
1452An internal variable name can be made up of letters, digits and '_'.  But it
1453cannot start with a digit.  It's also possible to use curly braces, see
1454|curly-braces-names|.
1455
1456An internal variable is created with the ":let" command |:let|.
1457An internal variable is explicitly destroyed with the ":unlet" command
1458|:unlet|.
1459Using a name that is not an internal variable or refers to a variable that has
1460been destroyed results in an error.
1461
1462There are several name spaces for variables.  Which one is to be used is
1463specified by what is prepended:
1464
1465		(nothing) In a function: local to a function; otherwise: global
1466|buffer-variable|    b:	  Local to the current buffer.
1467|window-variable|    w:	  Local to the current window.
1468|tabpage-variable|   t:	  Local to the current tab page.
1469|global-variable|    g:	  Global.
1470|local-variable|     l:	  Local to a function.
1471|script-variable|    s:	  Local to a |:source|'ed Vim script.
1472|function-argument|  a:	  Function argument (only inside a function).
1473|vim-variable|       v:	  Global, predefined by Vim.
1474
1475The scope name by itself can be used as a |Dictionary|.  For example, to
1476delete all script-local variables: >
1477	:for k in keys(s:)
1478	:    unlet s:[k]
1479	:endfor
1480<
1481						*buffer-variable* *b:var* *b:*
1482A variable name that is preceded with "b:" is local to the current buffer.
1483Thus you can have several "b:foo" variables, one for each buffer.
1484This kind of variable is deleted when the buffer is wiped out or deleted with
1485|:bdelete|.
1486
1487One local buffer variable is predefined:
1488					*b:changedtick* *changetick*
1489b:changedtick	The total number of changes to the current buffer.  It is
1490		incremented for each change.  An undo command is also a change
1491		in this case.  This can be used to perform an action only when
1492		the buffer has changed.  Example: >
1493		    :if my_changedtick != b:changedtick
1494		    :	let my_changedtick = b:changedtick
1495		    :	call My_Update()
1496		    :endif
1497<		You cannot change or delete the b:changedtick variable.
1498
1499						*window-variable* *w:var* *w:*
1500A variable name that is preceded with "w:" is local to the current window.  It
1501is deleted when the window is closed.
1502
1503						*tabpage-variable* *t:var* *t:*
1504A variable name that is preceded with "t:" is local to the current tab page,
1505It is deleted when the tab page is closed. {not available when compiled
1506without the |+windows| feature}
1507
1508						*global-variable* *g:var* *g:*
1509Inside functions global variables are accessed with "g:".  Omitting this will
1510access a variable local to a function.  But "g:" can also be used in any other
1511place if you like.
1512
1513						*local-variable* *l:var* *l:*
1514Inside functions local variables are accessed without prepending anything.
1515But you can also prepend "l:" if you like.  However, without prepending "l:"
1516you may run into reserved variable names.  For example "count".  By itself it
1517refers to "v:count".  Using "l:count" you can have a local variable with the
1518same name.
1519
1520						*script-variable* *s:var*
1521In a Vim script variables starting with "s:" can be used.  They cannot be
1522accessed from outside of the scripts, thus are local to the script.
1523
1524They can be used in:
1525- commands executed while the script is sourced
1526- functions defined in the script
1527- autocommands defined in the script
1528- functions and autocommands defined in functions and autocommands which were
1529  defined in the script (recursively)
1530- user defined commands defined in the script
1531Thus not in:
1532- other scripts sourced from this one
1533- mappings
1534- menus
1535- etc.
1536
1537Script variables can be used to avoid conflicts with global variable names.
1538Take this example: >
1539
1540	let s:counter = 0
1541	function MyCounter()
1542	  let s:counter = s:counter + 1
1543	  echo s:counter
1544	endfunction
1545	command Tick call MyCounter()
1546
1547You can now invoke "Tick" from any script, and the "s:counter" variable in
1548that script will not be changed, only the "s:counter" in the script where
1549"Tick" was defined is used.
1550
1551Another example that does the same: >
1552
1553	let s:counter = 0
1554	command Tick let s:counter = s:counter + 1 | echo s:counter
1555
1556When calling a function and invoking a user-defined command, the context for
1557script variables is set to the script where the function or command was
1558defined.
1559
1560The script variables are also available when a function is defined inside a
1561function that is defined in a script.  Example: >
1562
1563	let s:counter = 0
1564	function StartCounting(incr)
1565	  if a:incr
1566	    function MyCounter()
1567	      let s:counter = s:counter + 1
1568	    endfunction
1569	  else
1570	    function MyCounter()
1571	      let s:counter = s:counter - 1
1572	    endfunction
1573	  endif
1574	endfunction
1575
1576This defines the MyCounter() function either for counting up or counting down
1577when calling StartCounting().  It doesn't matter from where StartCounting() is
1578called, the s:counter variable will be accessible in MyCounter().
1579
1580When the same script is sourced again it will use the same script variables.
1581They will remain valid as long as Vim is running.  This can be used to
1582maintain a counter: >
1583
1584	if !exists("s:counter")
1585	  let s:counter = 1
1586	  echo "script executed for the first time"
1587	else
1588	  let s:counter = s:counter + 1
1589	  echo "script executed " . s:counter . " times now"
1590	endif
1591
1592Note that this means that filetype plugins don't get a different set of script
1593variables for each buffer.  Use local buffer variables instead |b:var|.
1594
1595
1596PREDEFINED VIM VARIABLES			*vim-variable* *v:var* *v:*
1597								*E963*
1598Some variables can be set by the user, but the type cannot be changed.
1599
1600					*v:beval_col* *beval_col-variable*
1601v:beval_col	The number of the column, over which the mouse pointer is.
1602		This is the byte index in the |v:beval_lnum| line.
1603		Only valid while evaluating the 'balloonexpr' option.
1604
1605					*v:beval_bufnr* *beval_bufnr-variable*
1606v:beval_bufnr	The number of the buffer, over which the mouse pointer is. Only
1607		valid while evaluating the 'balloonexpr' option.
1608
1609					*v:beval_lnum* *beval_lnum-variable*
1610v:beval_lnum	The number of the line, over which the mouse pointer is. Only
1611		valid while evaluating the 'balloonexpr' option.
1612
1613					*v:beval_text* *beval_text-variable*
1614v:beval_text	The text under or after the mouse pointer.  Usually a word as
1615		it is useful for debugging a C program.  'iskeyword' applies,
1616		but a dot and "->" before the position is included.  When on a
1617		']' the text before it is used, including the matching '[' and
1618		word before it.  When on a Visual area within one line the
1619		highlighted text is used.  Also see |<cexpr>|.
1620		Only valid while evaluating the 'balloonexpr' option.
1621
1622					*v:beval_winnr* *beval_winnr-variable*
1623v:beval_winnr	The number of the window, over which the mouse pointer is. Only
1624		valid while evaluating the 'balloonexpr' option.  The first
1625		window has number zero (unlike most other places where a
1626		window gets a number).
1627
1628					*v:beval_winid* *beval_winid-variable*
1629v:beval_winid	The |window-ID| of the window, over which the mouse pointer
1630		is.  Otherwise like v:beval_winnr.
1631
1632					*v:char* *char-variable*
1633v:char		Argument for evaluating 'formatexpr' and used for the typed
1634		character when using <expr> in an abbreviation |:map-<expr>|.
1635		It is also used by the |InsertCharPre| and |InsertEnter| events.
1636
1637			*v:charconvert_from* *charconvert_from-variable*
1638v:charconvert_from
1639		The name of the character encoding of a file to be converted.
1640		Only valid while evaluating the 'charconvert' option.
1641
1642			*v:charconvert_to* *charconvert_to-variable*
1643v:charconvert_to
1644		The name of the character encoding of a file after conversion.
1645		Only valid while evaluating the 'charconvert' option.
1646
1647					*v:cmdarg* *cmdarg-variable*
1648v:cmdarg	This variable is used for two purposes:
1649		1. The extra arguments given to a file read/write command.
1650		   Currently these are "++enc=" and "++ff=".  This variable is
1651		   set before an autocommand event for a file read/write
1652		   command is triggered.  There is a leading space to make it
1653		   possible to append this variable directly after the
1654		   read/write command.  Note: The "+cmd" argument isn't
1655		   included here, because it will be executed anyway.
1656		2. When printing a PostScript file with ":hardcopy" this is
1657		   the argument for the ":hardcopy" command.  This can be used
1658		   in 'printexpr'.
1659
1660					*v:cmdbang* *cmdbang-variable*
1661v:cmdbang	Set like v:cmdarg for a file read/write command.  When a "!"
1662		was used the value is 1, otherwise it is 0.  Note that this
1663		can only be used in autocommands.  For user commands |<bang>|
1664		can be used.
1665
1666				*v:completed_item* *completed_item-variable*
1667v:completed_item
1668		|Dictionary| containing the |complete-items| for the most
1669		recently completed word after |CompleteDone|.  The
1670		|Dictionary| is empty if the completion failed.
1671
1672					*v:count* *count-variable*
1673v:count		The count given for the last Normal mode command.  Can be used
1674		to get the count before a mapping.  Read-only.  Example: >
1675	:map _x :<C-U>echo "the count is " . v:count<CR>
1676<		Note: The <C-U> is required to remove the line range that you
1677		get when typing ':' after a count.
1678		When there are two counts, as in "3d2w", they are multiplied,
1679		just like what happens in the command, "d6w" for the example.
1680		Also used for evaluating the 'formatexpr' option.
1681		"count" also works, for backwards compatibility.
1682
1683					*v:count1* *count1-variable*
1684v:count1	Just like "v:count", but defaults to one when no count is
1685		used.
1686
1687						*v:ctype* *ctype-variable*
1688v:ctype		The current locale setting for characters of the runtime
1689		environment.  This allows Vim scripts to be aware of the
1690		current locale encoding.  Technical: it's the value of
1691		LC_CTYPE.  When not using a locale the value is "C".
1692		This variable can not be set directly, use the |:language|
1693		command.
1694		See |multi-lang|.
1695
1696					*v:dying* *dying-variable*
1697v:dying		Normally zero.  When a deadly signal is caught it's set to
1698		one.  When multiple signals are caught the number increases.
1699		Can be used in an autocommand to check if Vim didn't
1700		terminate normally. {only works on Unix}
1701		Example: >
1702	:au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif
1703<		Note: if another deadly signal is caught when v:dying is one,
1704		VimLeave autocommands will not be executed.
1705
1706					*v:errmsg* *errmsg-variable*
1707v:errmsg	Last given error message.  It's allowed to set this variable.
1708		Example: >
1709	:let v:errmsg = ""
1710	:silent! next
1711	:if v:errmsg != ""
1712	:  ... handle error
1713<		"errmsg" also works, for backwards compatibility.
1714
1715				*v:errors* *errors-variable* *assert-return*
1716v:errors	Errors found by assert functions, such as |assert_true()|.
1717		This is a list of strings.
1718		The assert functions append an item when an assert fails.
1719		The return value indicates this: a one is returned if an item
1720		was added to v:errors, otherwise zero is returned.
1721		To remove old results make it empty: >
1722	:let v:errors = []
1723<		If v:errors is set to anything but a list it is made an empty
1724		list by the assert function.
1725
1726					*v:event* *event-variable*
1727v:event		Dictionary containing information about the current
1728		|autocommand|.  The dictionary is emptied when the |autocommand|
1729		finishes, please refer to |dict-identity| for how to get an
1730		independent copy of it.
1731
1732					*v:exception* *exception-variable*
1733v:exception	The value of the exception most recently caught and not
1734		finished.  See also |v:throwpoint| and |throw-variables|.
1735		Example: >
1736	:try
1737	:  throw "oops"
1738	:catch /.*/
1739	:  echo "caught" v:exception
1740	:endtry
1741<		Output: "caught oops".
1742
1743					*v:false* *false-variable*
1744v:false		A Number with value zero. Used to put "false" in JSON.  See
1745		|json_encode()|.
1746		When used as a string this evaluates to "v:false". >
1747			echo v:false
1748<			v:false ~
1749		That is so that eval() can parse the string back to the same
1750		value.  Read-only.
1751
1752					*v:fcs_reason* *fcs_reason-variable*
1753v:fcs_reason	The reason why the |FileChangedShell| event was triggered.
1754		Can be used in an autocommand to decide what to do and/or what
1755		to set v:fcs_choice to.  Possible values:
1756			deleted		file no longer exists
1757			conflict	file contents, mode or timestamp was
1758					changed and buffer is modified
1759			changed		file contents has changed
1760			mode		mode of file changed
1761			time		only file timestamp changed
1762
1763					*v:fcs_choice* *fcs_choice-variable*
1764v:fcs_choice	What should happen after a |FileChangedShell| event was
1765		triggered.  Can be used in an autocommand to tell Vim what to
1766		do with the affected buffer:
1767			reload		Reload the buffer (does not work if
1768					the file was deleted).
1769			ask		Ask the user what to do, as if there
1770					was no autocommand.  Except that when
1771					only the timestamp changed nothing
1772					will happen.
1773			<empty>		Nothing, the autocommand should do
1774					everything that needs to be done.
1775		The default is empty.  If another (invalid) value is used then
1776		Vim behaves like it is empty, there is no warning message.
1777
1778					*v:fname_in* *fname_in-variable*
1779v:fname_in	The name of the input file.  Valid while evaluating:
1780			option		used for ~
1781			'charconvert'	file to be converted
1782			'diffexpr'	original file
1783			'patchexpr'	original file
1784			'printexpr'	file to be printed
1785		And set to the swap file name for |SwapExists|.
1786
1787					*v:fname_out* *fname_out-variable*
1788v:fname_out	The name of the output file.  Only valid while
1789		evaluating:
1790			option		used for ~
1791			'charconvert'	resulting converted file (*)
1792			'diffexpr'	output of diff
1793			'patchexpr'	resulting patched file
1794		(*) When doing conversion for a write command (e.g., ":w
1795		file") it will be equal to v:fname_in.  When doing conversion
1796		for a read command (e.g., ":e file") it will be a temporary
1797		file and different from v:fname_in.
1798
1799					*v:fname_new* *fname_new-variable*
1800v:fname_new	The name of the new version of the file.  Only valid while
1801		evaluating 'diffexpr'.
1802
1803					*v:fname_diff* *fname_diff-variable*
1804v:fname_diff	The name of the diff (patch) file.  Only valid while
1805		evaluating 'patchexpr'.
1806
1807					*v:folddashes* *folddashes-variable*
1808v:folddashes	Used for 'foldtext': dashes representing foldlevel of a closed
1809		fold.
1810		Read-only in the |sandbox|. |fold-foldtext|
1811
1812					*v:foldlevel* *foldlevel-variable*
1813v:foldlevel	Used for 'foldtext': foldlevel of closed fold.
1814		Read-only in the |sandbox|. |fold-foldtext|
1815
1816					*v:foldend* *foldend-variable*
1817v:foldend	Used for 'foldtext': last line of closed fold.
1818		Read-only in the |sandbox|. |fold-foldtext|
1819
1820					*v:foldstart* *foldstart-variable*
1821v:foldstart	Used for 'foldtext': first line of closed fold.
1822		Read-only in the |sandbox|. |fold-foldtext|
1823
1824					*v:hlsearch* *hlsearch-variable*
1825v:hlsearch	Variable that indicates whether search highlighting is on.
1826		Setting it makes sense only if 'hlsearch' is enabled which
1827		requires |+extra_search|. Setting this variable to zero acts
1828		like the |:nohlsearch| command, setting it to one acts like >
1829			let &hlsearch = &hlsearch
1830<		Note that the value is restored when returning from a
1831		function. |function-search-undo|.
1832
1833					*v:insertmode* *insertmode-variable*
1834v:insertmode	Used for the |InsertEnter| and |InsertChange| autocommand
1835		events.  Values:
1836			i	Insert mode
1837			r	Replace mode
1838			v	Virtual Replace mode
1839
1840						*v:key* *key-variable*
1841v:key		Key of the current item of a |Dictionary|.  Only valid while
1842		evaluating the expression used with |map()| and |filter()|.
1843		Read-only.
1844
1845						*v:lang* *lang-variable*
1846v:lang		The current locale setting for messages of the runtime
1847		environment.  This allows Vim scripts to be aware of the
1848		current language.  Technical: it's the value of LC_MESSAGES.
1849		The value is system dependent.
1850		This variable can not be set directly, use the |:language|
1851		command.
1852		It can be different from |v:ctype| when messages are desired
1853		in a different language than what is used for character
1854		encoding.  See |multi-lang|.
1855
1856						*v:lc_time* *lc_time-variable*
1857v:lc_time	The current locale setting for time messages of the runtime
1858		environment.  This allows Vim scripts to be aware of the
1859		current language.  Technical: it's the value of LC_TIME.
1860		This variable can not be set directly, use the |:language|
1861		command.  See |multi-lang|.
1862
1863						*v:lnum* *lnum-variable*
1864v:lnum		Line number for the 'foldexpr' |fold-expr|, 'formatexpr' and
1865		'indentexpr' expressions, tab page number for 'guitablabel'
1866		and 'guitabtooltip'.  Only valid while one of these
1867		expressions is being evaluated.  Read-only when in the
1868		|sandbox|.
1869
1870					*v:mouse_win* *mouse_win-variable*
1871v:mouse_win	Window number for a mouse click obtained with |getchar()|.
1872		First window has number 1, like with |winnr()|.  The value is
1873		zero when there was no mouse button click.
1874
1875					*v:mouse_winid* *mouse_winid-variable*
1876v:mouse_winid	Window ID for a mouse click obtained with |getchar()|.
1877		The value is zero when there was no mouse button click.
1878
1879					*v:mouse_lnum* *mouse_lnum-variable*
1880v:mouse_lnum	Line number for a mouse click obtained with |getchar()|.
1881		This is the text line number, not the screen line number.  The
1882		value is zero when there was no mouse button click.
1883
1884					*v:mouse_col* *mouse_col-variable*
1885v:mouse_col	Column number for a mouse click obtained with |getchar()|.
1886		This is the screen column number, like with |virtcol()|.  The
1887		value is zero when there was no mouse button click.
1888
1889					*v:none* *none-variable* *None*
1890v:none		An empty String. Used to put an empty item in JSON.  See
1891		|json_encode()|.
1892		When used as a number this evaluates to zero.
1893		When used as a string this evaluates to "v:none". >
1894			echo v:none
1895<			v:none ~
1896		That is so that eval() can parse the string back to the same
1897		value.  Read-only.
1898
1899					*v:null* *null-variable*
1900v:null		An empty String. Used to put "null" in JSON.  See
1901		|json_encode()|.
1902		When used as a number this evaluates to zero.
1903		When used as a string this evaluates to "v:null". >
1904			echo v:null
1905<			v:null ~
1906		That is so that eval() can parse the string back to the same
1907		value.  Read-only.
1908
1909					*v:oldfiles* *oldfiles-variable*
1910v:oldfiles	List of file names that is loaded from the |viminfo| file on
1911		startup.  These are the files that Vim remembers marks for.
1912		The length of the List is limited by the ' argument of the
1913		'viminfo' option (default is 100).
1914		When the |viminfo| file is not used the List is empty.
1915		Also see |:oldfiles| and |c_#<|.
1916		The List can be modified, but this has no effect on what is
1917		stored in the |viminfo| file later.  If you use values other
1918		than String this will cause trouble.
1919		{only when compiled with the |+viminfo| feature}
1920
1921						    *v:option_new*
1922v:option_new    New value of the option. Valid while executing an |OptionSet|
1923		autocommand.
1924						    *v:option_old*
1925v:option_old    Old value of the option. Valid while executing an |OptionSet|
1926		autocommand.
1927						    *v:option_type*
1928v:option_type   Scope of the set command. Valid while executing an
1929		|OptionSet| autocommand. Can be either "global" or "local"
1930					*v:operator* *operator-variable*
1931v:operator	The last operator given in Normal mode.  This is a single
1932		character except for commands starting with <g> or <z>,
1933		in which case it is two characters.  Best used alongside
1934		|v:prevcount| and |v:register|.  Useful if you want to cancel
1935		Operator-pending mode and then use the operator, e.g.: >
1936			:omap O <Esc>:call MyMotion(v:operator)<CR>
1937<		The value remains set until another operator is entered, thus
1938		don't expect it to be empty.
1939		v:operator is not set for |:delete|, |:yank| or other Ex
1940		commands.
1941		Read-only.
1942
1943					*v:prevcount* *prevcount-variable*
1944v:prevcount	The count given for the last but one Normal mode command.
1945		This is the v:count value of the previous command.  Useful if
1946		you want to cancel Visual or Operator-pending mode and then
1947		use the count, e.g.: >
1948			:vmap % <Esc>:call MyFilter(v:prevcount)<CR>
1949<		Read-only.
1950
1951					*v:profiling* *profiling-variable*
1952v:profiling	Normally zero.  Set to one after using ":profile start".
1953		See |profiling|.
1954
1955					*v:progname* *progname-variable*
1956v:progname	Contains the name (with path removed) with which Vim was
1957		invoked.  Allows you to do special initialisations for |view|,
1958		|evim| etc., or any other name you might symlink to Vim.
1959		Read-only.
1960
1961					*v:progpath* *progpath-variable*
1962v:progpath	Contains the command with which Vim was invoked, including the
1963		path.  Useful if you want to message a Vim server using a
1964		|--remote-expr|.
1965		To get the full path use: >
1966			echo exepath(v:progpath)
1967<		If the path is relative it will be expanded to the full path,
1968		so that it still works after `:cd`. Thus starting "./vim"
1969		results in "/home/user/path/to/vim/src/vim".
1970		On MS-Windows the executable may be called "vim.exe", but the
1971		".exe" is not added to v:progpath.
1972		Read-only.
1973
1974					*v:register* *register-variable*
1975v:register	The name of the register in effect for the current normal mode
1976		command (regardless of whether that command actually used a
1977		register).  Or for the currently executing normal mode mapping
1978		(use this in custom commands that take a register).
1979		If none is supplied it is the default register '"', unless
1980		'clipboard' contains "unnamed" or "unnamedplus", then it is
1981		'*' or '+'.
1982		Also see |getreg()| and |setreg()|
1983
1984					*v:scrollstart* *scrollstart-variable*
1985v:scrollstart	String describing the script or function that caused the
1986		screen to scroll up.  It's only set when it is empty, thus the
1987		first reason is remembered.  It is set to "Unknown" for a
1988		typed command.
1989		This can be used to find out why your script causes the
1990		hit-enter prompt.
1991
1992					*v:servername* *servername-variable*
1993v:servername	The resulting registered |client-server-name| if any.
1994		Read-only.
1995
1996
1997v:searchforward			*v:searchforward* *searchforward-variable*
1998		Search direction:  1 after a forward search, 0 after a
1999		backward search.  It is reset to forward when directly setting
2000		the last search pattern, see |quote/|.
2001		Note that the value is restored when returning from a
2002		function. |function-search-undo|.
2003		Read-write.
2004
2005					*v:shell_error* *shell_error-variable*
2006v:shell_error	Result of the last shell command.  When non-zero, the last
2007		shell command had an error.  When zero, there was no problem.
2008		This only works when the shell returns the error code to Vim.
2009		The value -1 is often used when the command could not be
2010		executed.  Read-only.
2011		Example: >
2012	:!mv foo bar
2013	:if v:shell_error
2014	:  echo 'could not rename "foo" to "bar"!'
2015	:endif
2016<		"shell_error" also works, for backwards compatibility.
2017
2018					*v:statusmsg* *statusmsg-variable*
2019v:statusmsg	Last given status message.  It's allowed to set this variable.
2020
2021					*v:swapname* *swapname-variable*
2022v:swapname	Only valid when executing |SwapExists| autocommands: Name of
2023		the swap file found.  Read-only.
2024
2025					*v:swapchoice* *swapchoice-variable*
2026v:swapchoice	|SwapExists| autocommands can set this to the selected choice
2027		for handling an existing swap file:
2028			'o'	Open read-only
2029			'e'	Edit anyway
2030			'r'	Recover
2031			'd'	Delete swapfile
2032			'q'	Quit
2033			'a'	Abort
2034		The value should be a single-character string.  An empty value
2035		results in the user being asked, as would happen when there is
2036		no SwapExists autocommand.  The default is empty.
2037
2038					*v:swapcommand* *swapcommand-variable*
2039v:swapcommand	Normal mode command to be executed after a file has been
2040		opened.  Can be used for a |SwapExists| autocommand to have
2041		another Vim open the file and jump to the right place.  For
2042		example, when jumping to a tag the value is ":tag tagname\r".
2043		For ":edit +cmd file" the value is ":cmd\r".
2044
2045				*v:t_TYPE* *v:t_bool* *t_bool-variable*
2046v:t_bool	Value of |Boolean| type.  Read-only.  See: |type()|
2047					*v:t_channel* *t_channel-variable*
2048v:t_channel	Value of |Channel| type.  Read-only.  See: |type()|
2049					*v:t_dict* *t_dict-variable*
2050v:t_dict	Value of |Dictionary| type.  Read-only.  See: |type()|
2051					*v:t_float* *t_float-variable*
2052v:t_float	Value of |Float| type.  Read-only.  See: |type()|
2053					*v:t_func* *t_func-variable*
2054v:t_func	Value of |Funcref| type.  Read-only.  See: |type()|
2055					*v:t_job* *t_job-variable*
2056v:t_job		Value of |Job| type.  Read-only.  See: |type()|
2057					*v:t_list* *t_list-variable*
2058v:t_list	Value of |List| type.  Read-only.  See: |type()|
2059					*v:t_none* *t_none-variable*
2060v:t_none	Value of |None| type.  Read-only.  See: |type()|
2061					*v:t_number* *t_number-variable*
2062v:t_number	Value of |Number| type.  Read-only.  See: |type()|
2063					*v:t_string* *t_string-variable*
2064v:t_string	Value of |String| type.  Read-only.  See: |type()|
2065					*v:t_blob* *t_blob-variable*
2066v:t_blob	Value of |Blob| type.  Read-only.  See: |type()|
2067
2068				*v:termresponse* *termresponse-variable*
2069v:termresponse	The escape sequence returned by the terminal for the |t_RV|
2070		termcap entry.  It is set when Vim receives an escape sequence
2071		that starts with ESC [ or CSI and ends in a 'c', with only
2072		digits, ';' and '.' in between.
2073		When this option is set, the TermResponse autocommand event is
2074		fired, so that you can react to the response from the
2075		terminal.
2076		The response from a new xterm is: "<Esc>[ Pp ; Pv ; Pc c".  Pp
2077		is the terminal type: 0 for vt100 and 1 for vt220.  Pv is the
2078		patch level (since this was introduced in patch 95, it's
2079		always 95 or bigger).  Pc is always zero.
2080		{only when compiled with |+termresponse| feature}
2081
2082						*v:termblinkresp*
2083v:termblinkresp	The escape sequence returned by the terminal for the |t_RC|
2084		termcap entry.  This is used to find out whether the terminal
2085		cursor is blinking. This is used by |term_getcursor()|.
2086
2087						*v:termstyleresp*
2088v:termstyleresp	The escape sequence returned by the terminal for the |t_RS|
2089		termcap entry.  This is used to find out what the shape of the
2090		cursor is.  This is used by |term_getcursor()|.
2091
2092						*v:termrbgresp*
2093v:termrbgresp	The escape sequence returned by the terminal for the |t_RB|
2094		termcap entry.  This is used to find out what the terminal
2095		background color is, see 'background'.
2096
2097						*v:termrfgresp*
2098v:termrfgresp	The escape sequence returned by the terminal for the |t_RF|
2099		termcap entry.  This is used to find out what the terminal
2100		foreground color is.
2101
2102						*v:termu7resp*
2103v:termu7resp	The escape sequence returned by the terminal for the |t_u7|
2104		termcap entry.  This is used to find out what the terminal
2105		does with ambiguous width characters, see 'ambiwidth'.
2106
2107					*v:testing* *testing-variable*
2108v:testing	Must be set before using `test_garbagecollect_now()`.
2109		Also, when set certain error messages won't be shown for 2
2110		seconds. (e.g. "'dictionary' option is empty")
2111
2112				*v:this_session* *this_session-variable*
2113v:this_session	Full filename of the last loaded or saved session file.  See
2114		|:mksession|.  It is allowed to set this variable.  When no
2115		session file has been saved, this variable is empty.
2116		"this_session" also works, for backwards compatibility.
2117
2118					*v:throwpoint* *throwpoint-variable*
2119v:throwpoint	The point where the exception most recently caught and not
2120		finished was thrown.  Not set when commands are typed.  See
2121		also |v:exception| and |throw-variables|.
2122		Example: >
2123	:try
2124	:  throw "oops"
2125	:catch /.*/
2126	:  echo "Exception from" v:throwpoint
2127	:endtry
2128<		Output: "Exception from test.vim, line 2"
2129
2130						*v:true* *true-variable*
2131v:true		A Number with value one. Used to put "true" in JSON.  See
2132		|json_encode()|.
2133		When used as a string this evaluates to "v:true". >
2134			echo v:true
2135<			v:true ~
2136		That is so that eval() can parse the string back to the same
2137		value.  Read-only.
2138						*v:val* *val-variable*
2139v:val		Value of the current item of a |List| or |Dictionary|.  Only
2140		valid while evaluating the expression used with |map()| and
2141		|filter()|.  Read-only.
2142
2143					*v:version* *version-variable*
2144v:version	Version number of Vim: Major version number times 100 plus
2145		minor version number.  Version 5.0 is 500.  Version 5.1 (5.01)
2146		is 501.  Read-only.  "version" also works, for backwards
2147		compatibility.
2148		Use |has()| to check if a certain patch was included, e.g.: >
2149			if has("patch-7.4.123")
2150<		Note that patch numbers are specific to the version, thus both
2151		version 5.0 and 5.1 may have a patch 123, but these are
2152		completely different.
2153
2154				*v:vim_did_enter* *vim_did_enter-variable*
2155v:vim_did_enter	Zero until most of startup is done.  It is set to one just
2156		before |VimEnter| autocommands are triggered.
2157
2158					*v:warningmsg* *warningmsg-variable*
2159v:warningmsg	Last given warning message.  It's allowed to set this variable.
2160
2161					*v:windowid* *windowid-variable*
2162v:windowid	When any X11 based GUI is running or when running in a
2163		terminal and Vim connects to the X server (|-X|) this will be
2164		set to the window ID.
2165		When an MS-Windows GUI is running this will be set to the
2166		window handle.
2167		Otherwise the value is zero.
2168		Note: for windows inside Vim use |winnr()| or |win_getid()|,
2169		see |window-ID|.
2170
2171==============================================================================
21724. Builtin Functions					*functions*
2173
2174See |function-list| for a list grouped by what the function is used for.
2175
2176(Use CTRL-] on the function name to jump to the full explanation.)
2177
2178USAGE				RESULT	DESCRIPTION	~
2179
2180abs({expr})			Float or Number  absolute value of {expr}
2181acos({expr})			Float	arc cosine of {expr}
2182add({object}, {item})		List/Blob   append {item} to {object}
2183and({expr}, {expr})		Number	bitwise AND
2184append({lnum}, {text})		Number	append {text} below line {lnum}
2185appendbufline({expr}, {lnum}, {text})
2186				Number	append {text} below line {lnum}
2187					in buffer {expr}
2188argc([{winid}])			Number	number of files in the argument list
2189argidx()			Number	current index in the argument list
2190arglistid([{winnr} [, {tabnr}]]) Number	argument list id
2191argv({nr} [, {winid}])		String	{nr} entry of the argument list
2192argv([-1, {winid}])		List	the argument list
2193assert_beeps({cmd})		Number	assert {cmd} causes a beep
2194assert_equal({exp}, {act} [, {msg}])
2195				Number	assert {exp} is equal to {act}
2196assert_equalfile({fname-one}, {fname-two})
2197				Number	assert file contents is equal
2198assert_exception({error} [, {msg}])
2199				Number	assert {error} is in v:exception
2200assert_fails({cmd} [, {error} [, {msg}]])
2201				Number	assert {cmd} fails
2202assert_false({actual} [, {msg}])
2203				Number	assert {actual} is false
2204assert_inrange({lower}, {upper}, {actual} [, {msg}])
2205				Number	assert {actual} is inside the range
2206assert_match({pat}, {text} [, {msg}])
2207				Number	assert {pat} matches {text}
2208assert_notequal({exp}, {act} [, {msg}])
2209				Number	assert {exp} is not equal {act}
2210assert_notmatch({pat}, {text} [, {msg}])
2211				Number	assert {pat} not matches {text}
2212assert_report({msg})		Number	report a test failure
2213assert_true({actual} [, {msg}])	Number	assert {actual} is true
2214asin({expr})			Float	arc sine of {expr}
2215atan({expr})			Float	arc tangent of {expr}
2216atan2({expr1}, {expr2})		Float	arc tangent of {expr1} / {expr2}
2217balloon_show({expr})		none	show {expr} inside the balloon
2218balloon_split({msg})		List	split {msg} as used for a balloon
2219browse({save}, {title}, {initdir}, {default})
2220				String	put up a file requester
2221browsedir({title}, {initdir})	String	put up a directory requester
2222bufexists({expr})		Number	|TRUE| if buffer {expr} exists
2223buflisted({expr})		Number	|TRUE| if buffer {expr} is listed
2224bufloaded({expr})		Number	|TRUE| if buffer {expr} is loaded
2225bufname({expr})			String	Name of the buffer {expr}
2226bufnr({expr} [, {create}])	Number	Number of the buffer {expr}
2227bufwinid({expr})		Number	window ID of buffer {expr}
2228bufwinnr({expr})		Number	window number of buffer {expr}
2229byte2line({byte})		Number	line number at byte count {byte}
2230byteidx({expr}, {nr})		Number	byte index of {nr}'th char in {expr}
2231byteidxcomp({expr}, {nr})	Number	byte index of {nr}'th char in {expr}
2232call({func}, {arglist} [, {dict}])
2233				any	call {func} with arguments {arglist}
2234ceil({expr})			Float	round {expr} up
2235ch_canread({handle})		Number	check if there is something to read
2236ch_close({handle})		none	close {handle}
2237ch_close_in({handle})		none	close in part of {handle}
2238ch_evalexpr({handle}, {expr} [, {options}])
2239				any	evaluate {expr} on JSON {handle}
2240ch_evalraw({handle}, {string} [, {options}])
2241				any	evaluate {string} on raw {handle}
2242ch_getbufnr({handle}, {what})	Number	get buffer number for {handle}/{what}
2243ch_getjob({channel})		Job	get the Job of {channel}
2244ch_info({handle})		String	info about channel {handle}
2245ch_log({msg} [, {handle}])	none	write {msg} in the channel log file
2246ch_logfile({fname} [, {mode}])	none	start logging channel activity
2247ch_open({address} [, {options}])
2248				Channel	open a channel to {address}
2249ch_read({handle} [, {options}]) String	read from {handle}
2250ch_readblob({handle} [, {options}])
2251				Blob	read Blob from {handle}
2252ch_readraw({handle} [, {options}])
2253				String	read raw from {handle}
2254ch_sendexpr({handle}, {expr} [, {options}])
2255				any	send {expr} over JSON {handle}
2256ch_sendraw({handle}, {expr} [, {options}])
2257				any	send {expr} over raw {handle}
2258ch_setoptions({handle}, {options})
2259				none	set options for {handle}
2260ch_status({handle} [, {options}])
2261				String	status of channel {handle}
2262changenr()			Number	current change number
2263char2nr({expr} [, {utf8}])	Number	ASCII/UTF8 value of first char in {expr}
2264cindent({lnum})			Number	C indent for line {lnum}
2265clearmatches()			none	clear all matches
2266col({expr})			Number	column nr of cursor or mark
2267complete({startcol}, {matches}) none	set Insert mode completion
2268complete_add({expr})		Number	add completion match
2269complete_check()		Number	check for key typed during completion
2270complete_info([{what}])		Dict	get current completion information
2271confirm({msg} [, {choices} [, {default} [, {type}]]])
2272				Number	number of choice picked by user
2273copy({expr})			any	make a shallow copy of {expr}
2274cos({expr})			Float	cosine of {expr}
2275cosh({expr})			Float	hyperbolic cosine of {expr}
2276count({comp}, {expr} [, {ic} [, {start}]])
2277				Number	count how many {expr} are in {comp}
2278cscope_connection([{num}, {dbpath} [, {prepend}]])
2279				Number	checks existence of cscope connection
2280cursor({lnum}, {col} [, {off}])
2281				Number	move cursor to {lnum}, {col}, {off}
2282cursor({list})			Number	move cursor to position in {list}
2283debugbreak({pid})		Number  interrupt process being debugged
2284deepcopy({expr} [, {noref}])	any	make a full copy of {expr}
2285delete({fname} [, {flags}])	Number	delete the file or directory {fname}
2286deletebufline({expr}, {first} [, {last}])
2287				Number	delete lines from buffer {expr}
2288did_filetype()			Number	|TRUE| if FileType autocmd event used
2289diff_filler({lnum})		Number	diff filler lines about {lnum}
2290diff_hlID({lnum}, {col})	Number	diff highlighting at {lnum}/{col}
2291empty({expr})			Number	|TRUE| if {expr} is empty
2292escape({string}, {chars})	String	escape {chars} in {string} with '\'
2293eval({string})			any	evaluate {string} into its value
2294eventhandler()			Number	|TRUE| if inside an event handler
2295executable({expr})		Number	1 if executable {expr} exists
2296execute({command})		String	execute {command} and get the output
2297exepath({expr})			String	full path of the command {expr}
2298exists({expr})			Number	|TRUE| if {expr} exists
2299extend({expr1}, {expr2} [, {expr3}])
2300				List/Dict insert items of {expr2} into {expr1}
2301exp({expr})			Float	exponential of {expr}
2302expand({expr} [, {nosuf} [, {list}]])
2303				any	expand special keywords in {expr}
2304feedkeys({string} [, {mode}])	Number	add key sequence to typeahead buffer
2305filereadable({file})		Number	|TRUE| if {file} is a readable file
2306filewritable({file})		Number	|TRUE| if {file} is a writable file
2307filter({expr1}, {expr2})	List/Dict  remove items from {expr1} where
2308					{expr2} is 0
2309finddir({name} [, {path} [, {count}]])
2310				String	find directory {name} in {path}
2311findfile({name} [, {path} [, {count}]])
2312				String	find file {name} in {path}
2313float2nr({expr})		Number	convert Float {expr} to a Number
2314floor({expr})			Float	round {expr} down
2315fmod({expr1}, {expr2})		Float	remainder of {expr1} / {expr2}
2316fnameescape({fname})		String	escape special characters in {fname}
2317fnamemodify({fname}, {mods})	String	modify file name
2318foldclosed({lnum})		Number	first line of fold at {lnum} if closed
2319foldclosedend({lnum})		Number	last line of fold at {lnum} if closed
2320foldlevel({lnum})		Number	fold level at {lnum}
2321foldtext()			String	line displayed for closed fold
2322foldtextresult({lnum})		String	text for closed fold at {lnum}
2323foreground()			Number	bring the Vim window to the foreground
2324funcref({name} [, {arglist}] [, {dict}])
2325				Funcref	reference to function {name}
2326function({name} [, {arglist}] [, {dict}])
2327				Funcref	named reference to function {name}
2328garbagecollect([{atexit}])	none	free memory, breaking cyclic references
2329get({list}, {idx} [, {def}])	any	get item {idx} from {list} or {def}
2330get({dict}, {key} [, {def}])	any	get item {key} from {dict} or {def}
2331get({func}, {what})		any	get property of funcref/partial {func}
2332getbufinfo([{expr}])		List	information about buffers
2333getbufline({expr}, {lnum} [, {end}])
2334				List	lines {lnum} to {end} of buffer {expr}
2335getbufvar({expr}, {varname} [, {def}])
2336				any	variable {varname} in buffer {expr}
2337getchangelist({expr})		List	list of change list items
2338getchar([expr])			Number	get one character from the user
2339getcharmod()			Number	modifiers for the last typed character
2340getcharsearch()			Dict	last character search
2341getcmdline()			String	return the current command-line
2342getcmdpos()			Number	return cursor position in command-line
2343getcmdtype()			String	return current command-line type
2344getcmdwintype()			String	return current command-line window type
2345getcompletion({pat}, {type} [, {filtered}])
2346				List	list of cmdline completion matches
2347getcurpos()			List	position of the cursor
2348getcwd([{winnr} [, {tabnr}]])	String	get the current working directory
2349getfontname([{name}])		String	name of font being used
2350getfperm({fname})		String	file permissions of file {fname}
2351getfsize({fname})		Number	size in bytes of file {fname}
2352getftime({fname})		Number	last modification time of file
2353getftype({fname})		String	description of type of file {fname}
2354getjumplist([{winnr} [, {tabnr}]])
2355				List	list of jump list items
2356getline({lnum})			String	line {lnum} of current buffer
2357getline({lnum}, {end})		List	lines {lnum} to {end} of current buffer
2358getloclist({nr} [, {what}])	List	list of location list items
2359getmatches()			List	list of current matches
2360getpid()			Number	process ID of Vim
2361getpos({expr})			List	position of cursor, mark, etc.
2362getqflist([{what}])		List	list of quickfix items
2363getreg([{regname} [, 1 [, {list}]]])
2364				String or List   contents of register
2365getregtype([{regname}])		String	type of register
2366gettabinfo([{expr}])		List	list of tab pages
2367gettabvar({nr}, {varname} [, {def}])
2368				any	variable {varname} in tab {nr} or {def}
2369gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
2370				any	{name} in {winnr} in tab page {tabnr}
2371gettagstack([{nr}])		Dict	get the tag stack of window {nr}
2372getwininfo([{winid}])		List	list of info about each window
2373getwinpos([{timeout}])		List	X and Y coord in pixels of the Vim window
2374getwinposx()			Number	X coord in pixels of the Vim window
2375getwinposy()			Number	Y coord in pixels of the Vim window
2376getwinvar({nr}, {varname} [, {def}])
2377				any	variable {varname} in window {nr}
2378glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])
2379				any	expand file wildcards in {expr}
2380glob2regpat({expr})		String	convert a glob pat into a search pat
2381globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
2382				String	do glob({expr}) for all dirs in {path}
2383has({feature})			Number	|TRUE| if feature {feature} supported
2384has_key({dict}, {key})		Number	|TRUE| if {dict} has entry {key}
2385haslocaldir([{winnr} [, {tabnr}]])
2386				Number	|TRUE| if the window executed |:lcd|
2387hasmapto({what} [, {mode} [, {abbr}]])
2388				Number	|TRUE| if mapping to {what} exists
2389histadd({history}, {item})	String	add an item to a history
2390histdel({history} [, {item}])	String	remove an item from a history
2391histget({history} [, {index}])	String	get the item {index} from a history
2392histnr({history})		Number	highest index of a history
2393hlexists({name})		Number	|TRUE| if highlight group {name} exists
2394hlID({name})			Number	syntax ID of highlight group {name}
2395hostname()			String	name of the machine Vim is running on
2396iconv({expr}, {from}, {to})	String	convert encoding of {expr}
2397indent({lnum})			Number	indent of line {lnum}
2398index({object}, {expr} [, {start} [, {ic}]])
2399				Number	index in {object} where {expr} appears
2400input({prompt} [, {text} [, {completion}]])
2401				String	get input from the user
2402inputdialog({prompt} [, {text} [, {completion}]])
2403				String	like input() but in a GUI dialog
2404inputlist({textlist})		Number	let the user pick from a choice list
2405inputrestore()			Number	restore typeahead
2406inputsave()			Number	save and clear typeahead
2407inputsecret({prompt} [, {text}]) String	like input() but hiding the text
2408insert({object}, {item} [, {idx}]) List	insert {item} in {object} [before {idx}]
2409invert({expr})			Number	bitwise invert
2410isdirectory({directory})	Number	|TRUE| if {directory} is a directory
2411islocked({expr})		Number	|TRUE| if {expr} is locked
2412isnan({expr})			Number	|TRUE| if {expr} is NaN
2413items({dict})			List	key-value pairs in {dict}
2414job_getchannel({job})		Channel	get the channel handle for {job}
2415job_info([{job}])		Dict	get information about {job}
2416job_setoptions({job}, {options}) none	set options for {job}
2417job_start({command} [, {options}])
2418				Job	start a job
2419job_status({job})		String	get the status of {job}
2420job_stop({job} [, {how}])	Number	stop {job}
2421join({list} [, {sep}])		String	join {list} items into one String
2422js_decode({string})		any	decode JS style JSON
2423js_encode({expr})		String	encode JS style JSON
2424json_decode({string})		any	decode JSON
2425json_encode({expr})		String	encode JSON
2426keys({dict})			List	keys in {dict}
2427len({expr})			Number	the length of {expr}
2428libcall({lib}, {func}, {arg})	String	call {func} in library {lib} with {arg}
2429libcallnr({lib}, {func}, {arg})	Number	idem, but return a Number
2430line({expr})			Number	line nr of cursor, last line or mark
2431line2byte({lnum})		Number	byte count of line {lnum}
2432lispindent({lnum})		Number	Lisp indent for line {lnum}
2433localtime()			Number	current time
2434log({expr})			Float	natural logarithm (base e) of {expr}
2435log10({expr})			Float	logarithm of Float {expr} to base 10
2436luaeval({expr} [, {expr}])	any	evaluate |Lua| expression
2437map({expr1}, {expr2})		List/Dict  change each item in {expr1} to {expr}
2438maparg({name} [, {mode} [, {abbr} [, {dict}]]])
2439				String or Dict
2440					rhs of mapping {name} in mode {mode}
2441mapcheck({name} [, {mode} [, {abbr}]])
2442				String	check for mappings matching {name}
2443match({expr}, {pat} [, {start} [, {count}]])
2444				Number	position where {pat} matches in {expr}
2445matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
2446				Number	highlight {pattern} with {group}
2447matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
2448				Number	highlight positions with {group}
2449matcharg({nr})			List	arguments of |:match|
2450matchdelete({id})		Number	delete match identified by {id}
2451matchend({expr}, {pat} [, {start} [, {count}]])
2452				Number	position where {pat} ends in {expr}
2453matchlist({expr}, {pat} [, {start} [, {count}]])
2454				List	match and submatches of {pat} in {expr}
2455matchstr({expr}, {pat} [, {start} [, {count}]])
2456				String	{count}'th match of {pat} in {expr}
2457matchstrpos({expr}, {pat} [, {start} [, {count}]])
2458				List	{count}'th match of {pat} in {expr}
2459max({expr})			Number	maximum value of items in {expr}
2460min({expr})			Number	minimum value of items in {expr}
2461mkdir({name} [, {path} [, {prot}]])
2462				Number	create directory {name}
2463mode([expr])			String	current editing mode
2464mzeval({expr})			any	evaluate |MzScheme| expression
2465nextnonblank({lnum})		Number	line nr of non-blank line >= {lnum}
2466nr2char({expr} [, {utf8}])	String	single char with ASCII/UTF8 value {expr}
2467or({expr}, {expr})		Number	bitwise OR
2468pathshorten({expr})		String	shorten directory names in a path
2469perleval({expr})		any	evaluate |Perl| expression
2470pow({x}, {y})			Float	{x} to the power of {y}
2471prevnonblank({lnum})		Number	line nr of non-blank line <= {lnum}
2472printf({fmt}, {expr1}...)	String	format text
2473prompt_setcallback({buf}, {expr}) none	set prompt callback function
2474prompt_setinterrupt({buf}, {text}) none	set prompt interrupt function
2475prompt_setprompt({buf}, {text}) none	set prompt text
2476prop_add({lnum}, {col}, {props})  none	add a text property
2477prop_clear({lnum} [, {lnum-end} [, {props}]])
2478				none	remove all text properties
2479prop_find({props} [, {direction}])
2480				Dict	search for a text property
2481prop_list({lnum} [, {props})	List	text properties in {lnum}
2482prop_remove({props} [, {lnum} [, {lnum-end}]])
2483				Number	remove a text property
2484prop_type_add({name}, {props})	none	define a new property type
2485prop_type_change({name}, {props})
2486				none	change an existing property type
2487prop_type_delete({name} [, {props}])
2488				none	delete a property type
2489prop_type_get([{name} [, {props}])
2490				Dict	get property type values
2491prop_type_list([{props}])	List	get list of property types
2492pumvisible()			Number	whether popup menu is visible
2493pyeval({expr})			any	evaluate |Python| expression
2494py3eval({expr})			any	evaluate |python3| expression
2495pyxeval({expr})			any	evaluate |python_x| expression
2496range({expr} [, {max} [, {stride}]])
2497				List	items from {expr} to {max}
2498readfile({fname} [, {type} [, {max}]])
2499				List	get list of lines from file {fname}
2500reg_executing()			String	get the executing register name
2501reg_recording()			String	get the recording register name
2502reltime([{start} [, {end}]])	List	get time value
2503reltimefloat({time})		Float	turn the time value into a Float
2504reltimestr({time})		String	turn time value into a String
2505remote_expr({server}, {string} [, {idvar} [, {timeout}]])
2506				String	send expression
2507remote_foreground({server})	Number	bring Vim server to the foreground
2508remote_peek({serverid} [, {retvar}])
2509				Number	check for reply string
2510remote_read({serverid} [, {timeout}])
2511				String	read reply string
2512remote_send({server}, {string} [, {idvar}])
2513				String	send key sequence
2514remote_startserver({name})	none	become server {name}
2515remove({list}, {idx} [, {end}])	any/List
2516					remove items {idx}-{end} from {list}
2517remove({blob}, {idx} [, {end}])	Number/Blob
2518					remove bytes {idx}-{end} from {blob}
2519remove({dict}, {key})		any	remove entry {key} from {dict}
2520rename({from}, {to})		Number	rename (move) file from {from} to {to}
2521repeat({expr}, {count})		String	repeat {expr} {count} times
2522resolve({filename})		String	get filename a shortcut points to
2523reverse({list})			List	reverse {list} in-place
2524round({expr})			Float	round off {expr}
2525rubyeval({expr})		any	evaluate |Ruby| expression
2526screenattr({row}, {col})	Number	attribute at screen position
2527screenchar({row}, {col})	Number	character at screen position
2528screencol()			Number	current cursor column
2529screenrow()			Number	current cursor row
2530search({pattern} [, {flags} [, {stopline} [, {timeout}]]])
2531				Number	search for {pattern}
2532searchdecl({name} [, {global} [, {thisblock}]])
2533				Number	search for variable declaration
2534searchpair({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
2535				Number	search for other end of start/end pair
2536searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
2537				List	search for other end of start/end pair
2538searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]])
2539				List	search for {pattern}
2540server2client({clientid}, {string})
2541				Number	send reply string
2542serverlist()			String	get a list of available servers
2543setbufline({expr}, {lnum}, {text})
2544				Number	set line {lnum} to {text} in buffer
2545					{expr}
2546setbufvar({expr}, {varname}, {val})
2547				none	set {varname} in buffer {expr} to {val}
2548setcharsearch({dict})		Dict	set character search from {dict}
2549setcmdpos({pos})		Number	set cursor position in command-line
2550setfperm({fname}, {mode})	Number	set {fname} file permissions to {mode}
2551setline({lnum}, {line})		Number	set line {lnum} to {line}
2552setloclist({nr}, {list} [, {action} [, {what}]])
2553				Number	modify location list using {list}
2554setmatches({list})		Number	restore a list of matches
2555setpos({expr}, {list})		Number	set the {expr} position to {list}
2556setqflist({list} [, {action} [, {what}]])
2557				Number	modify quickfix list using {list}
2558setreg({n}, {v} [, {opt}])	Number	set register to value and type
2559settabvar({nr}, {varname}, {val}) none	set {varname} in tab page {nr} to {val}
2560settabwinvar({tabnr}, {winnr}, {varname}, {val})
2561				none	set {varname} in window {winnr} in tab
2562					page {tabnr} to {val}
2563settagstack({nr}, {dict} [, {action}])
2564				Number	modify tag stack using {dict}
2565setwinvar({nr}, {varname}, {val}) none	set {varname} in window {nr} to {val}
2566sha256({string})		String	SHA256 checksum of {string}
2567shellescape({string} [, {special}])
2568				String	escape {string} for use as shell
2569					command argument
2570shiftwidth([{col}])		Number	effective value of 'shiftwidth'
2571sign_define({name} [, {dict}])	Number	define or update a sign
2572sign_getdefined([{name}])	List	get a list of defined signs
2573sign_getplaced([{expr} [, {dict}]])
2574				List	get a list of placed signs
2575sign_jump({id}, {group}, {expr})
2576				Number	jump to a sign
2577sign_place({id}, {group}, {name}, {expr} [, {dict}])
2578				Number	place a sign
2579sign_undefine([{name}])		Number	undefine a sign
2580sign_unplace({group} [, {dict}])
2581				Number	unplace a sign
2582simplify({filename})		String	simplify filename as much as possible
2583sin({expr})			Float	sine of {expr}
2584sinh({expr})			Float	hyperbolic sine of {expr}
2585sort({list} [, {func} [, {dict}]])
2586				List	sort {list}, using {func} to compare
2587soundfold({word})		String	sound-fold {word}
2588spellbadword()			String	badly spelled word at cursor
2589spellsuggest({word} [, {max} [, {capital}]])
2590				List	spelling suggestions
2591split({expr} [, {pat} [, {keepempty}]])
2592				List	make |List| from {pat} separated {expr}
2593sqrt({expr})			Float	square root of {expr}
2594str2float({expr})		Float	convert String to Float
2595str2nr({expr} [, {base}])	Number	convert String to Number
2596strchars({expr} [, {skipcc}])	Number	character length of the String {expr}
2597strcharpart({str}, {start} [, {len}])
2598				String	{len} characters of {str} at {start}
2599strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
2600strftime({format} [, {time}])	String	time in specified format
2601strgetchar({str}, {index})	Number	get char {index} from {str}
2602stridx({haystack}, {needle} [, {start}])
2603				Number	index of {needle} in {haystack}
2604string({expr})			String	String representation of {expr} value
2605strlen({expr})			Number	length of the String {expr}
2606strpart({str}, {start} [, {len}])
2607				String	{len} characters of {str} at {start}
2608strridx({haystack}, {needle} [, {start}])
2609				Number	last index of {needle} in {haystack}
2610strtrans({expr})		String	translate string to make it printable
2611strwidth({expr})		Number	display cell length of the String {expr}
2612submatch({nr} [, {list}])	String or List
2613					specific match in ":s" or substitute()
2614substitute({expr}, {pat}, {sub}, {flags})
2615				String	all {pat} in {expr} replaced with {sub}
2616swapinfo({fname})		Dict	information about swap file {fname}
2617swapname({expr})		String	swap file of buffer {expr}
2618synID({lnum}, {col}, {trans})	Number	syntax ID at {lnum} and {col}
2619synIDattr({synID}, {what} [, {mode}])
2620				String	attribute {what} of syntax ID {synID}
2621synIDtrans({synID})		Number	translated syntax ID of {synID}
2622synconcealed({lnum}, {col})	List	info about concealing
2623synstack({lnum}, {col})		List	stack of syntax IDs at {lnum} and {col}
2624system({expr} [, {input}])	String	output of shell command/filter {expr}
2625systemlist({expr} [, {input}])	List	output of shell command/filter {expr}
2626tabpagebuflist([{arg}])		List	list of buffer numbers in tab page
2627tabpagenr([{arg}])		Number	number of current or last tab page
2628tabpagewinnr({tabarg} [, {arg}]) Number	number of current window in tab page
2629taglist({expr} [, {filename}])	List	list of tags matching {expr}
2630tagfiles()			List	tags files used
2631tan({expr})			Float	tangent of {expr}
2632tanh({expr})			Float	hyperbolic tangent of {expr}
2633tempname()			String	name for a temporary file
2634term_dumpdiff({filename}, {filename} [, {options}])
2635				Number  display difference between two dumps
2636term_dumpload({filename} [, {options}])
2637				Number	displaying a screen dump
2638term_dumpwrite({buf}, {filename} [, {options}])
2639				none	dump terminal window contents
2640term_getaltscreen({buf})	Number	get the alternate screen flag
2641term_getansicolors({buf})	List	get ANSI palette in GUI color mode
2642term_getattr({attr}, {what})	Number	get the value of attribute {what}
2643term_getcursor({buf})		List	get the cursor position of a terminal
2644term_getjob({buf})		Job	get the job associated with a terminal
2645term_getline({buf}, {row})	String	get a line of text from a terminal
2646term_getscrolled({buf})		Number	get the scroll count of a terminal
2647term_getsize({buf})		List	get the size of a terminal
2648term_getstatus({buf})		String	get the status of a terminal
2649term_gettitle({buf})		String	get the title of a terminal
2650term_gettty({buf}, [{input}])	String	get the tty name of a terminal
2651term_list()			List	get the list of terminal buffers
2652term_scrape({buf}, {row})	List	get row of a terminal screen
2653term_sendkeys({buf}, {keys})	none	send keystrokes to a terminal
2654term_setansicolors({buf}, {colors})
2655				none	set ANSI palette in GUI color mode
2656term_setkill({buf}, {how})	none	set signal to stop job in terminal
2657term_setrestore({buf}, {command}) none	set command to restore terminal
2658term_setsize({buf}, {rows}, {cols})
2659				none	set the size of a terminal
2660term_start({cmd}, {options})	Number	open a terminal window and run a job
2661term_wait({buf} [, {time}])	Number  wait for screen to be updated
2662test_alloc_fail({id}, {countdown}, {repeat})
2663				none	make memory allocation fail
2664test_autochdir()		none	enable 'autochdir' during startup
2665test_feedinput({string})	none	add key sequence to input buffer
2666test_garbagecollect_now()	none	free memory right now for testing
2667test_ignore_error({expr})	none	ignore a specific error
2668test_null_blob()		Blob	null value for testing
2669test_null_channel()		Channel	null value for testing
2670test_null_dict()		Dict	null value for testing
2671test_null_job()			Job	null value for testing
2672test_null_list()		List	null value for testing
2673test_null_partial()		Funcref	null value for testing
2674test_null_string()		String	null value for testing
2675test_option_not_set({name})	none	reset flag indicating option was set
2676test_override({expr}, {val})	none	test with Vim internal overrides
2677test_refcount({expr})		Number	get the reference count of {expr}
2678test_scrollbar({which}, {value}, {dragging})
2679				none	scroll in the GUI for testing
2680test_settime({expr})		none	set current time for testing
2681timer_info([{id}])		List	information about timers
2682timer_pause({id}, {pause})	none	pause or unpause a timer
2683timer_start({time}, {callback} [, {options}])
2684				Number	create a timer
2685timer_stop({timer})		none	stop a timer
2686timer_stopall()			none	stop all timers
2687tolower({expr})			String	the String {expr} switched to lowercase
2688toupper({expr})			String	the String {expr} switched to uppercase
2689tr({src}, {fromstr}, {tostr})	String	translate chars of {src} in {fromstr}
2690					to chars in {tostr}
2691trim({text} [, {mask}])		String	trim characters in {mask} from {text}
2692trunc({expr})			Float	truncate Float {expr}
2693type({name})			Number	type of variable {name}
2694undofile({name})		String	undo file name for {name}
2695undotree()			List	undo file tree
2696uniq({list} [, {func} [, {dict}]])
2697				List	remove adjacent duplicates from a list
2698values({dict})			List	values in {dict}
2699virtcol({expr})			Number	screen column of cursor or mark
2700visualmode([expr])		String	last visual mode used
2701wildmenumode()			Number	whether 'wildmenu' mode is active
2702win_findbuf({bufnr})		List	find windows containing {bufnr}
2703win_getid([{win} [, {tab}]])	Number	get window ID for {win} in {tab}
2704win_gotoid({expr})		Number	go to window with ID {expr}
2705win_id2tabwin({expr})		List	get tab and window nr from window ID
2706win_id2win({expr})		Number	get window nr from window ID
2707win_screenpos({nr})		List	get screen position of window {nr}
2708winbufnr({nr})			Number	buffer number of window {nr}
2709wincol()			Number	window column of the cursor
2710winheight({nr})			Number	height of window {nr}
2711winlayout([{tabnr}])		List	layout of windows in tab {tabnr}
2712winline()			Number	window line of the cursor
2713winnr([{expr}])			Number	number of current window
2714winrestcmd()			String	returns command to restore window sizes
2715winrestview({dict})		none	restore view of current window
2716winsaveview()			Dict	save view of current window
2717winwidth({nr})			Number	width of window {nr}
2718wordcount()			Dict	get byte/char/word statistics
2719writefile({object}, {fname} [, {flags}])
2720				Number	write |Blob| or |List| of lines to file
2721xor({expr}, {expr})		Number	bitwise XOR
2722
2723
2724abs({expr})							*abs()*
2725		Return the absolute value of {expr}.  When {expr} evaluates to
2726		a |Float| abs() returns a |Float|.  When {expr} can be
2727		converted to a |Number| abs() returns a |Number|.  Otherwise
2728		abs() gives an error message and returns -1.
2729		Examples: >
2730			echo abs(1.456)
2731<			1.456  >
2732			echo abs(-5.456)
2733<			5.456  >
2734			echo abs(-4)
2735<			4
2736		{only available when compiled with the |+float| feature}
2737
2738
2739acos({expr})							*acos()*
2740		Return the arc cosine of {expr} measured in radians, as a
2741		|Float| in the range of [0, pi].
2742		{expr} must evaluate to a |Float| or a |Number| in the range
2743		[-1, 1].
2744		Examples: >
2745			:echo acos(0)
2746<			1.570796 >
2747			:echo acos(-0.5)
2748<			2.094395
2749		{only available when compiled with the |+float| feature}
2750
2751
2752add({object}, {expr})					*add()*
2753		Append the item {expr} to |List| or |Blob| {object}.  Returns
2754		the resulting |List| or |Blob|.  Examples: >
2755			:let alist = add([1, 2, 3], item)
2756			:call add(mylist, "woodstock")
2757<		Note that when {expr} is a |List| it is appended as a single
2758		item.  Use |extend()| to concatenate |Lists|.
2759		When {object} is a |Blob| then  {expr} must be a number.
2760		Use |insert()| to add an item at another position.
2761
2762
2763and({expr}, {expr})					*and()*
2764		Bitwise AND on the two arguments.  The arguments are converted
2765		to a number.  A List, Dict or Float argument causes an error.
2766		Example: >
2767			:let flag = and(bits, 0x80)
2768
2769
2770append({lnum}, {text})					*append()*
2771		When {text} is a |List|: Append each item of the |List| as a
2772		text line below line {lnum} in the current buffer.
2773		Otherwise append {text} as one text line below line {lnum} in
2774		the current buffer.
2775		{lnum} can be zero to insert a line before the first one.
2776		Returns 1 for failure ({lnum} out of range or out of memory),
2777		0 for success.  Example: >
2778			:let failed = append(line('$'), "# THE END")
2779			:let failed = append(0, ["Chapter 1", "the beginning"])
2780
2781appendbufline({expr}, {lnum}, {text})			*appendbufline()*
2782		Like |append()| but append the text in buffer {expr}.
2783
2784		For the use of {expr}, see |bufname()|.
2785
2786		{lnum} is used like with |append()|.  Note that using |line()|
2787		would use the current buffer, not the one appending to.
2788		Use "$" to append at the end of the buffer.
2789
2790		On success 0 is returned, on failure 1 is returned.
2791
2792		If {expr} is not a valid buffer or {lnum} is not valid, an
2793		error message is given. Example: >
2794			:let failed = appendbufline(13, 0, "# THE START")
2795<
2796							*argc()*
2797argc([{winid}])
2798		The result is the number of files in the argument list.  See
2799		|arglist|.
2800		If {winid} is not supplied, the argument list of the current
2801		window is used.
2802		If {winid} is -1, the global argument list is used.
2803		Otherwise {winid} specifies the window of which the argument
2804		list is used: either the window number or the window ID.
2805		Returns -1 if the {winid} argument is invalid.
2806
2807							*argidx()*
2808argidx()	The result is the current index in the argument list.  0 is
2809		the first file.  argc() - 1 is the last one.  See |arglist|.
2810
2811							*arglistid()*
2812arglistid([{winnr} [, {tabnr}]])
2813		Return the argument list ID.  This is a number which
2814		identifies the argument list being used.  Zero is used for the
2815		global argument list.  See |arglist|.
2816		Returns -1 if the arguments are invalid.
2817
2818		Without arguments use the current window.
2819		With {winnr} only use this window in the current tab page.
2820		With {winnr} and {tabnr} use the window in the specified tab
2821		page.
2822		{winnr} can be the window number or the |window-ID|.
2823
2824							*argv()*
2825argv([{nr} [, {winid}])
2826		The result is the {nr}th file in the argument list.  See
2827		|arglist|.  "argv(0)" is the first one.  Example: >
2828	:let i = 0
2829	:while i < argc()
2830	:  let f = escape(fnameescape(argv(i)), '.')
2831	:  exe 'amenu Arg.' . f . ' :e ' . f . '<CR>'
2832	:  let i = i + 1
2833	:endwhile
2834<		Without the {nr} argument, or when {nr} is -1, a |List| with
2835		the whole |arglist| is returned.
2836
2837		The {winid} argument specifies the window ID, see |argc()|.
2838
2839assert_beeps({cmd})					*assert_beeps()*
2840		Run {cmd} and add an error message to |v:errors| if it does
2841		NOT produce a beep or visual bell.
2842		Also see |assert_fails()| and |assert-return|.
2843
2844							*assert_equal()*
2845assert_equal({expected}, {actual} [, {msg}])
2846		When {expected} and {actual} are not equal an error message is
2847		added to |v:errors| and 1 is returned.  Otherwise zero is
2848		returned |assert-return|.
2849		There is no automatic conversion, the String "4" is different
2850		from the Number 4.  And the number 4 is different from the
2851		Float 4.0.  The value of 'ignorecase' is not used here, case
2852		always matters.
2853		When {msg} is omitted an error in the form "Expected
2854		{expected} but got {actual}" is produced.
2855		Example: >
2856	assert_equal('foo', 'bar')
2857<		Will result in a string to be added to |v:errors|:
2858	test.vim line 12: Expected 'foo' but got 'bar' ~
2859
2860							*assert_equalfile()*
2861assert_equalfile({fname-one}, {fname-two})
2862		When the files {fname-one} and {fname-two} do not contain
2863		exactly the same text an error message is added to |v:errors|.
2864		Also see |assert-return|.
2865		When {fname-one} or {fname-two} does not exist the error will
2866		mention that.
2867		Mainly useful with |terminal-diff|.
2868
2869assert_exception({error} [, {msg}])			*assert_exception()*
2870		When v:exception does not contain the string {error} an error
2871		message is added to |v:errors|.  Also see |assert-return|.
2872		This can be used to assert that a command throws an exception.
2873		Using the error number, followed by a colon, avoids problems
2874		with translations: >
2875			try
2876			  commandthatfails
2877			  call assert_false(1, 'command should have failed')
2878			catch
2879			  call assert_exception('E492:')
2880			endtry
2881
2882assert_fails({cmd} [, {error} [, {msg}]])			*assert_fails()*
2883		Run {cmd} and add an error message to |v:errors| if it does
2884		NOT produce an error.  Also see |assert-return|.
2885		When {error} is given it must match in |v:errmsg|.
2886		Note that beeping is not considered an error, and some failing
2887		commands only beep.  Use |assert_beeps()| for those.
2888
2889assert_false({actual} [, {msg}])				*assert_false()*
2890		When {actual} is not false an error message is added to
2891		|v:errors|, like with |assert_equal()|.
2892		Also see |assert-return|.
2893		A value is false when it is zero. When {actual} is not a
2894		number the assert fails.
2895		When {msg} is omitted an error in the form
2896		"Expected False but got {actual}" is produced.
2897
2898assert_inrange({lower}, {upper}, {actual} [, {msg}])	 *assert_inrange()*
2899		This asserts number and |Float| values.  When {actual}  is lower
2900		than {lower} or higher than {upper} an error message is added
2901		to |v:errors|.  Also see |assert-return|.
2902		When {msg} is omitted an error in the form
2903		"Expected range {lower} - {upper}, but got {actual}" is
2904		produced.
2905
2906								*assert_match()*
2907assert_match({pattern}, {actual} [, {msg}])
2908		When {pattern} does not match {actual} an error message is
2909		added to |v:errors|.  Also see |assert-return|.
2910
2911		{pattern} is used as with |=~|: The matching is always done
2912		like 'magic' was set and 'cpoptions' is empty, no matter what
2913		the actual value of 'magic' or 'cpoptions' is.
2914
2915		{actual} is used as a string, automatic conversion applies.
2916		Use "^" and "$" to match with the start and end of the text.
2917		Use both to match the whole text.
2918
2919		When {msg} is omitted an error in the form
2920		"Pattern {pattern} does not match {actual}" is produced.
2921		Example: >
2922	assert_match('^f.*o$', 'foobar')
2923<		Will result in a string to be added to |v:errors|:
2924	test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
2925
2926							*assert_notequal()*
2927assert_notequal({expected}, {actual} [, {msg}])
2928		The opposite of `assert_equal()`: add an error message to
2929		|v:errors| when {expected} and {actual} are equal.
2930		Also see |assert-return|.
2931
2932							*assert_notmatch()*
2933assert_notmatch({pattern}, {actual} [, {msg}])
2934		The opposite of `assert_match()`: add an error message to
2935		|v:errors| when {pattern} matches {actual}.
2936		Also see |assert-return|.
2937
2938assert_report({msg})					*assert_report()*
2939		Report a test failure directly, using {msg}.
2940		Always returns one.
2941
2942assert_true({actual} [, {msg}])				*assert_true()*
2943		When {actual} is not true an error message is added to
2944		|v:errors|, like with |assert_equal()|.
2945		Also see |assert-return|.
2946		A value is TRUE when it is a non-zero number.  When {actual}
2947		is not a number the assert fails.
2948		When {msg} is omitted an error in the form "Expected True but
2949		got {actual}" is produced.
2950
2951asin({expr})						*asin()*
2952		Return the arc sine of {expr} measured in radians, as a |Float|
2953		in the range of [-pi/2, pi/2].
2954		{expr} must evaluate to a |Float| or a |Number| in the range
2955		[-1, 1].
2956		Examples: >
2957			:echo asin(0.8)
2958<			0.927295 >
2959			:echo asin(-0.5)
2960<			-0.523599
2961		{only available when compiled with the |+float| feature}
2962
2963
2964atan({expr})						*atan()*
2965		Return the principal value of the arc tangent of {expr}, in
2966		the range [-pi/2, +pi/2] radians, as a |Float|.
2967		{expr} must evaluate to a |Float| or a |Number|.
2968		Examples: >
2969			:echo atan(100)
2970<			1.560797 >
2971			:echo atan(-4.01)
2972<			-1.326405
2973		{only available when compiled with the |+float| feature}
2974
2975
2976atan2({expr1}, {expr2})					*atan2()*
2977		Return the arc tangent of {expr1} / {expr2}, measured in
2978		radians, as a |Float| in the range [-pi, pi].
2979		{expr1} and {expr2} must evaluate to a |Float| or a |Number|.
2980		Examples: >
2981			:echo atan2(-1, 1)
2982<			-0.785398 >
2983			:echo atan2(1, -1)
2984<			2.356194
2985		{only available when compiled with the |+float| feature}
2986
2987balloon_show({expr})					*balloon_show()*
2988		Show {expr} inside the balloon.  For the GUI {expr} is used as
2989		a string.  For a terminal {expr} can be a list, which contains
2990		the lines of the balloon.  If {expr} is not a list it will be
2991		split with |balloon_split()|.
2992
2993		Example: >
2994			func GetBalloonContent()
2995			   " initiate getting the content
2996			   return ''
2997			endfunc
2998			set balloonexpr=GetBalloonContent()
2999
3000			func BalloonCallback(result)
3001			  call balloon_show(a:result)
3002			endfunc
3003<
3004		The intended use is that fetching the content of the balloon
3005		is initiated from 'balloonexpr'.  It will invoke an
3006		asynchronous method, in which a callback invokes
3007		balloon_show().  The 'balloonexpr' itself can return an
3008		empty string or a placeholder.
3009
3010		When showing a balloon is not possible nothing happens, no
3011		error message.
3012		{only available when compiled with the |+balloon_eval| or
3013		|+balloon_eval_term| feature}
3014
3015balloon_split({msg})					*balloon_split()*
3016		Split {msg} into lines to be displayed in a balloon.  The
3017		splits are made for the current window size and optimize to
3018		show debugger output.
3019		Returns a |List| with the split lines.
3020		{only available when compiled with the |+balloon_eval_term|
3021		feature}
3022
3023							*browse()*
3024browse({save}, {title}, {initdir}, {default})
3025		Put up a file requester.  This only works when "has("browse")"
3026		returns |TRUE| (only in some GUI versions).
3027		The input fields are:
3028		    {save}	when |TRUE|, select file to write
3029		    {title}	title for the requester
3030		    {initdir}	directory to start browsing in
3031		    {default}	default file name
3032		When the "Cancel" button is hit, something went wrong, or
3033		browsing is not possible, an empty string is returned.
3034
3035							*browsedir()*
3036browsedir({title}, {initdir})
3037		Put up a directory requester.  This only works when
3038		"has("browse")" returns |TRUE| (only in some GUI versions).
3039		On systems where a directory browser is not supported a file
3040		browser is used.  In that case: select a file in the directory
3041		to be used.
3042		The input fields are:
3043		    {title}	title for the requester
3044		    {initdir}	directory to start browsing in
3045		When the "Cancel" button is hit, something went wrong, or
3046		browsing is not possible, an empty string is returned.
3047
3048bufexists({expr})					*bufexists()*
3049		The result is a Number, which is |TRUE| if a buffer called
3050		{expr} exists.
3051		If the {expr} argument is a number, buffer numbers are used.
3052		Number zero is the alternate buffer for the current window.
3053
3054		If the {expr} argument is a string it must match a buffer name
3055		exactly.  The name can be:
3056		- Relative to the current directory.
3057		- A full path.
3058		- The name of a buffer with 'buftype' set to "nofile".
3059		- A URL name.
3060		Unlisted buffers will be found.
3061		Note that help files are listed by their short name in the
3062		output of |:buffers|, but bufexists() requires using their
3063		long name to be able to find them.
3064		bufexists() may report a buffer exists, but to use the name
3065		with a |:buffer| command you may need to use |expand()|.  Esp
3066		for MS-Windows 8.3 names in the form "c:\DOCUME~1"
3067		Use "bufexists(0)" to test for the existence of an alternate
3068		file name.
3069							*buffer_exists()*
3070		Obsolete name: buffer_exists().
3071
3072buflisted({expr})					*buflisted()*
3073		The result is a Number, which is |TRUE| if a buffer called
3074		{expr} exists and is listed (has the 'buflisted' option set).
3075		The {expr} argument is used like with |bufexists()|.
3076
3077bufloaded({expr})					*bufloaded()*
3078		The result is a Number, which is |TRUE| if a buffer called
3079		{expr} exists and is loaded (shown in a window or hidden).
3080		The {expr} argument is used like with |bufexists()|.
3081
3082bufname({expr})						*bufname()*
3083		The result is the name of a buffer, as it is displayed by the
3084		":ls" command.
3085		If {expr} is a Number, that buffer number's name is given.
3086		Number zero is the alternate buffer for the current window.
3087		If {expr} is a String, it is used as a |file-pattern| to match
3088		with the buffer names.  This is always done like 'magic' is
3089		set and 'cpoptions' is empty.  When there is more than one
3090		match an empty string is returned.
3091		"" or "%" can be used for the current buffer, "#" for the
3092		alternate buffer.
3093		A full match is preferred, otherwise a match at the start, end
3094		or middle of the buffer name is accepted.  If you only want a
3095		full match then put "^" at the start and "$" at the end of the
3096		pattern.
3097		Listed buffers are found first.  If there is a single match
3098		with a listed buffer, that one is returned.  Next unlisted
3099		buffers are searched for.
3100		If the {expr} is a String, but you want to use it as a buffer
3101		number, force it to be a Number by adding zero to it: >
3102			:echo bufname("3" + 0)
3103<		If the buffer doesn't exist, or doesn't have a name, an empty
3104		string is returned. >
3105	bufname("#")		alternate buffer name
3106	bufname(3)		name of buffer 3
3107	bufname("%")		name of current buffer
3108	bufname("file2")	name of buffer where "file2" matches.
3109<							*buffer_name()*
3110		Obsolete name: buffer_name().
3111
3112							*bufnr()*
3113bufnr({expr} [, {create}])
3114		The result is the number of a buffer, as it is displayed by
3115		the ":ls" command.  For the use of {expr}, see |bufname()|
3116		above.
3117		If the buffer doesn't exist, -1 is returned.  Or, if the
3118		{create} argument is present and not zero, a new, unlisted,
3119		buffer is created and its number is returned.
3120		bufnr("$") is the last buffer: >
3121	:let last_buffer = bufnr("$")
3122<		The result is a Number, which is the highest buffer number
3123		of existing buffers.  Note that not all buffers with a smaller
3124		number necessarily exist, because ":bwipeout" may have removed
3125		them.  Use bufexists() to test for the existence of a buffer.
3126							*buffer_number()*
3127		Obsolete name: buffer_number().
3128							*last_buffer_nr()*
3129		Obsolete name for bufnr("$"): last_buffer_nr().
3130
3131bufwinid({expr})					*bufwinid()*
3132		The result is a Number, which is the |window-ID| of the first
3133		window associated with buffer {expr}.  For the use of {expr},
3134		see |bufname()| above.  If buffer {expr} doesn't exist or
3135		there is no such window, -1 is returned.  Example: >
3136
3137	echo "A window containing buffer 1 is " . (bufwinid(1))
3138<
3139		Only deals with the current tab page.
3140
3141bufwinnr({expr})					*bufwinnr()*
3142		The result is a Number, which is the number of the first
3143		window associated with buffer {expr}.  For the use of {expr},
3144		see |bufname()| above.  If buffer {expr} doesn't exist or
3145		there is no such window, -1 is returned.  Example: >
3146
3147	echo "A window containing buffer 1 is " . (bufwinnr(1))
3148
3149<		The number can be used with |CTRL-W_w| and ":wincmd w"
3150		|:wincmd|.
3151		Only deals with the current tab page.
3152
3153byte2line({byte})					*byte2line()*
3154		Return the line number that contains the character at byte
3155		count {byte} in the current buffer.  This includes the
3156		end-of-line character, depending on the 'fileformat' option
3157		for the current buffer.  The first character has byte count
3158		one.
3159		Also see |line2byte()|, |go| and |:goto|.
3160		{not available when compiled without the |+byte_offset|
3161		feature}
3162
3163byteidx({expr}, {nr})					*byteidx()*
3164		Return byte index of the {nr}'th character in the string
3165		{expr}.  Use zero for the first character, it returns zero.
3166		This function is only useful when there are multibyte
3167		characters, otherwise the returned value is equal to {nr}.
3168		Composing characters are not counted separately, their byte
3169		length is added to the preceding base character.  See
3170		|byteidxcomp()| below for counting composing characters
3171		separately.
3172		Example : >
3173			echo matchstr(str, ".", byteidx(str, 3))
3174<		will display the fourth character.  Another way to do the
3175		same: >
3176			let s = strpart(str, byteidx(str, 3))
3177			echo strpart(s, 0, byteidx(s, 1))
3178<		Also see |strgetchar()| and |strcharpart()|.
3179
3180		If there are less than {nr} characters -1 is returned.
3181		If there are exactly {nr} characters the length of the string
3182		in bytes is returned.
3183
3184byteidxcomp({expr}, {nr})					*byteidxcomp()*
3185		Like byteidx(), except that a composing character is counted
3186		as a separate character.  Example: >
3187			let s = 'e' . nr2char(0x301)
3188			echo byteidx(s, 1)
3189			echo byteidxcomp(s, 1)
3190			echo byteidxcomp(s, 2)
3191<		The first and third echo result in 3 ('e' plus composing
3192		character is 3 bytes), the second echo results in 1 ('e' is
3193		one byte).
3194		Only works different from byteidx() when 'encoding' is set to
3195		a Unicode encoding.
3196
3197call({func}, {arglist} [, {dict}])			*call()* *E699*
3198		Call function {func} with the items in |List| {arglist} as
3199		arguments.
3200		{func} can either be a |Funcref| or the name of a function.
3201		a:firstline and a:lastline are set to the cursor line.
3202		Returns the return value of the called function.
3203		{dict} is for functions with the "dict" attribute.  It will be
3204		used to set the local variable "self". |Dictionary-function|
3205
3206ceil({expr})							*ceil()*
3207		Return the smallest integral value greater than or equal to
3208		{expr} as a |Float| (round up).
3209		{expr} must evaluate to a |Float| or a |Number|.
3210		Examples: >
3211			echo ceil(1.456)
3212<			2.0  >
3213			echo ceil(-5.456)
3214<			-5.0  >
3215			echo ceil(4.0)
3216<			4.0
3217		{only available when compiled with the |+float| feature}
3218
3219ch_canread({handle})						*ch_canread()*
3220		Return non-zero when there is something to read from {handle}.
3221		{handle} can be a Channel or a Job that has a Channel.
3222
3223		This is useful to read from a channel at a convenient time,
3224		e.g. from a timer.
3225
3226		Note that messages are dropped when the channel does not have
3227		a callback.  Add a close callback to avoid that.
3228
3229		{only available when compiled with the |+channel| feature}
3230
3231ch_close({handle})						*ch_close()*
3232		Close {handle}.  See |channel-close|.
3233		{handle} can be a Channel or a Job that has a Channel.
3234		A close callback is not invoked.
3235
3236		{only available when compiled with the |+channel| feature}
3237
3238ch_close_in({handle})						*ch_close_in()*
3239		Close the "in" part of {handle}.  See |channel-close-in|.
3240		{handle} can be a Channel or a Job that has a Channel.
3241		A close callback is not invoked.
3242
3243		{only available when compiled with the |+channel| feature}
3244
3245ch_evalexpr({handle}, {expr} [, {options}])			*ch_evalexpr()*
3246		Send {expr} over {handle}.  The {expr} is encoded
3247		according to the type of channel.  The function cannot be used
3248		with a raw channel.  See |channel-use|.
3249		{handle} can be a Channel or a Job that has a Channel.
3250								*E917*
3251		{options} must be a Dictionary.  It must not have a "callback"
3252		entry.  It can have a "timeout" entry to specify the timeout
3253		for this specific request.
3254
3255		ch_evalexpr() waits for a response and returns the decoded
3256		expression.  When there is an error or timeout it returns an
3257		empty string.
3258
3259		{only available when compiled with the |+channel| feature}
3260
3261ch_evalraw({handle}, {string} [, {options}])		*ch_evalraw()*
3262		Send {string} over {handle}.
3263		{handle} can be a Channel or a Job that has a Channel.
3264
3265		Works like |ch_evalexpr()|, but does not encode the request or
3266		decode the response.  The caller is responsible for the
3267		correct contents.  Also does not add a newline for a channel
3268		in NL mode, the caller must do that.  The NL in the response
3269		is removed.
3270		Note that Vim does not know when the text received on a raw
3271		channel is complete, it may only return the first part and you
3272		need to use |ch_readraw()| to fetch the rest.
3273		See |channel-use|.
3274
3275		{only available when compiled with the |+channel| feature}
3276
3277ch_getbufnr({handle}, {what})				 *ch_getbufnr()*
3278		Get the buffer number that {handle} is using for {what}.
3279		{handle} can be a Channel or a Job that has a Channel.
3280		{what} can be "err" for stderr, "out" for stdout or empty for
3281		socket output.
3282		Returns -1 when there is no buffer.
3283		{only available when compiled with the |+channel| feature}
3284
3285ch_getjob({channel})						*ch_getjob()*
3286		Get the Job associated with {channel}.
3287		If there is no job calling |job_status()| on the returned Job
3288		will result in "fail".
3289
3290		{only available when compiled with the |+channel| and
3291		|+job| features}
3292
3293ch_info({handle})						*ch_info()*
3294		Returns a Dictionary with information about {handle}.  The
3295		items are:
3296		   "id"		  number of the channel
3297		   "status"	  "open", "buffered" or "closed", like
3298				  ch_status()
3299		When opened with ch_open():
3300		   "hostname"	  the hostname of the address
3301		   "port"	  the port of the address
3302		   "sock_status"  "open" or "closed"
3303		   "sock_mode"	  "NL", "RAW", "JSON" or "JS"
3304		   "sock_io"	  "socket"
3305		   "sock_timeout" timeout in msec
3306		When opened with job_start():
3307		   "out_status"	  "open", "buffered" or "closed"
3308		   "out_mode"	  "NL", "RAW", "JSON" or "JS"
3309		   "out_io"	  "null", "pipe", "file" or "buffer"
3310		   "out_timeout"  timeout in msec
3311		   "err_status"	  "open", "buffered" or "closed"
3312		   "err_mode"	  "NL", "RAW", "JSON" or "JS"
3313		   "err_io"	  "out", "null", "pipe", "file" or "buffer"
3314		   "err_timeout"  timeout in msec
3315		   "in_status"	  "open" or "closed"
3316		   "in_mode"	  "NL", "RAW", "JSON" or "JS"
3317		   "in_io"	  "null", "pipe", "file" or "buffer"
3318		   "in_timeout"	  timeout in msec
3319
3320ch_log({msg} [, {handle}])					*ch_log()*
3321		Write {msg} in the channel log file, if it was opened with
3322		|ch_logfile()|.
3323		When {handle} is passed the channel number is used for the
3324		message.
3325		{handle} can be a Channel or a Job that has a Channel.  The
3326		Channel must be open for the channel number to be used.
3327
3328ch_logfile({fname} [, {mode}])					*ch_logfile()*
3329		Start logging channel activity to {fname}.
3330		When {fname} is an empty string: stop logging.
3331
3332		When {mode} is omitted or "a" append to the file.
3333		When {mode} is "w" start with an empty file.
3334
3335		Use |ch_log()| to write log messages.  The file is flushed
3336		after every message, on Unix you can use "tail -f" to see what
3337		is going on in real time.
3338
3339		This function is not available in the |sandbox|.
3340		NOTE: the channel communication is stored in the file, be
3341		aware that this may contain confidential and privacy sensitive
3342		information, e.g. a password you type in a terminal window.
3343
3344
3345ch_open({address} [, {options}])				*ch_open()*
3346		Open a channel to {address}.  See |channel|.
3347		Returns a Channel.  Use |ch_status()| to check for failure.
3348
3349		{address} has the form "hostname:port", e.g.,
3350		"localhost:8765".
3351
3352		If {options} is given it must be a |Dictionary|.
3353		See |channel-open-options|.
3354
3355		{only available when compiled with the |+channel| feature}
3356
3357ch_read({handle} [, {options}])					*ch_read()*
3358		Read from {handle} and return the received message.
3359		{handle} can be a Channel or a Job that has a Channel.
3360		For a NL channel this waits for a NL to arrive, except when
3361		there is nothing more to read (channel was closed).
3362		See |channel-more|.
3363		{only available when compiled with the |+channel| feature}
3364
3365ch_readblob({handle} [, {options}])			*ch_readblob()*
3366		Like ch_read() but reads binary data and returns a |Blob|.
3367		See |channel-more|.
3368		{only available when compiled with the |+channel| feature}
3369
3370ch_readraw({handle} [, {options}])			*ch_readraw()*
3371		Like ch_read() but for a JS and JSON channel does not decode
3372		the message.  For a NL channel it does not block waiting for
3373		the NL to arrive, but otherwise works like ch_read().
3374		See |channel-more|.
3375		{only available when compiled with the |+channel| feature}
3376
3377ch_sendexpr({handle}, {expr} [, {options}])			*ch_sendexpr()*
3378		Send {expr} over {handle}.  The {expr} is encoded
3379		according to the type of channel.  The function cannot be used
3380		with a raw channel.
3381		See |channel-use|.				*E912*
3382		{handle} can be a Channel or a Job that has a Channel.
3383
3384		{only available when compiled with the |+channel| feature}
3385
3386ch_sendraw({handle}, {expr} [, {options}])		*ch_sendraw()*
3387		Send |String| or |Blob| {expr} over {handle}.
3388		Works like |ch_sendexpr()|, but does not encode the request or
3389		decode the response.  The caller is responsible for the
3390		correct contents.  Also does not add a newline for a channel
3391		in NL mode, the caller must do that.  The NL in the response
3392		is removed.
3393		See |channel-use|.
3394
3395		{only available when compiled with the |+channel| feature}
3396
3397ch_setoptions({handle}, {options})			*ch_setoptions()*
3398		Set options on {handle}:
3399			"callback"	the channel callback
3400			"timeout"	default read timeout in msec
3401			"mode"		mode for the whole channel
3402		See |ch_open()| for more explanation.
3403		{handle} can be a Channel or a Job that has a Channel.
3404
3405		Note that changing the mode may cause queued messages to be
3406		lost.
3407
3408		These options cannot be changed:
3409			"waittime"	only applies to |ch_open()|
3410
3411ch_status({handle} [, {options}])				*ch_status()*
3412		Return the status of {handle}:
3413			"fail"		failed to open the channel
3414			"open"		channel can be used
3415			"buffered"	channel can be read, not written to
3416			"closed"	channel can not be used
3417		{handle} can be a Channel or a Job that has a Channel.
3418		"buffered" is used when the channel was closed but there is
3419		still data that can be obtained with |ch_read()|.
3420
3421		If {options} is given it can contain a "part" entry to specify
3422		the part of the channel to return the status for: "out" or
3423		"err".  For example, to get the error status: >
3424			ch_status(job, {"part": "err"})
3425<
3426changenr()						*changenr()*
3427		Return the number of the most recent change.  This is the same
3428		number as what is displayed with |:undolist| and can be used
3429		with the |:undo| command.
3430		When a change was made it is the number of that change.  After
3431		redo it is the number of the redone change.  After undo it is
3432		one less than the number of the undone change.
3433
3434char2nr({expr} [, {utf8}])					*char2nr()*
3435		Return number value of the first char in {expr}.  Examples: >
3436			char2nr(" ")		returns 32
3437			char2nr("ABC")		returns 65
3438<		When {utf8} is omitted or zero, the current 'encoding' is used.
3439		Example for "utf-8": >
3440			char2nr("á")		returns 225
3441			char2nr("á"[0])		returns 195
3442<		With {utf8} set to 1, always treat as utf-8 characters.
3443		A combining character is a separate character.
3444		|nr2char()| does the opposite.
3445
3446cindent({lnum})						*cindent()*
3447		Get the amount of indent for line {lnum} according the C
3448		indenting rules, as with 'cindent'.
3449		The indent is counted in spaces, the value of 'tabstop' is
3450		relevant.  {lnum} is used just like in |getline()|.
3451		When {lnum} is invalid or Vim was not compiled the |+cindent|
3452		feature, -1 is returned.
3453		See |C-indenting|.
3454
3455clearmatches()						*clearmatches()*
3456		Clears all matches previously defined for the current window
3457		by |matchadd()| and the |:match| commands.
3458
3459							*col()*
3460col({expr})	The result is a Number, which is the byte index of the column
3461		position given with {expr}.  The accepted positions are:
3462		    .	    the cursor position
3463		    $	    the end of the cursor line (the result is the
3464			    number of bytes in the cursor line plus one)
3465		    'x	    position of mark x (if the mark is not set, 0 is
3466			    returned)
3467		    v       In Visual mode: the start of the Visual area (the
3468			    cursor is the end).  When not in Visual mode
3469			    returns the cursor position.  Differs from |'<| in
3470			    that it's updated right away.
3471		Additionally {expr} can be [lnum, col]: a |List| with the line
3472		and column number. Most useful when the column is "$", to get
3473		the last column of a specific line.  When "lnum" or "col" is
3474		out of range then col() returns zero.
3475		To get the line number use |line()|.  To get both use
3476		|getpos()|.
3477		For the screen column position use |virtcol()|.
3478		Note that only marks in the current file can be used.
3479		Examples: >
3480			col(".")		column of cursor
3481			col("$")		length of cursor line plus one
3482			col("'t")		column of mark t
3483			col("'" . markname)	column of mark markname
3484<		The first column is 1.  0 is returned for an error.
3485		For an uppercase mark the column may actually be in another
3486		buffer.
3487		For the cursor position, when 'virtualedit' is active, the
3488		column is one higher if the cursor is after the end of the
3489		line.  This can be used to obtain the column in Insert mode: >
3490			:imap <F2> <C-O>:let save_ve = &ve<CR>
3491				\<C-O>:set ve=all<CR>
3492				\<C-O>:echo col(".") . "\n" <Bar>
3493				\let &ve = save_ve<CR>
3494<
3495
3496complete({startcol}, {matches})			*complete()* *E785*
3497		Set the matches for Insert mode completion.
3498		Can only be used in Insert mode.  You need to use a mapping
3499		with CTRL-R = (see |i_CTRL-R|).  It does not work after CTRL-O
3500		or with an expression mapping.
3501		{startcol} is the byte offset in the line where the completed
3502		text start.  The text up to the cursor is the original text
3503		that will be replaced by the matches.  Use col('.') for an
3504		empty string.  "col('.') - 1" will replace one character by a
3505		match.
3506		{matches} must be a |List|.  Each |List| item is one match.
3507		See |complete-items| for the kind of items that are possible.
3508		Note that the after calling this function you need to avoid
3509		inserting anything that would cause completion to stop.
3510		The match can be selected with CTRL-N and CTRL-P as usual with
3511		Insert mode completion.  The popup menu will appear if
3512		specified, see |ins-completion-menu|.
3513		Example: >
3514	inoremap <F5> <C-R>=ListMonths()<CR>
3515
3516	func! ListMonths()
3517	  call complete(col('.'), ['January', 'February', 'March',
3518		\ 'April', 'May', 'June', 'July', 'August', 'September',
3519		\ 'October', 'November', 'December'])
3520	  return ''
3521	endfunc
3522<		This isn't very useful, but it shows how it works.  Note that
3523		an empty string is returned to avoid a zero being inserted.
3524
3525complete_add({expr})				*complete_add()*
3526		Add {expr} to the list of matches.  Only to be used by the
3527		function specified with the 'completefunc' option.
3528		Returns 0 for failure (empty string or out of memory),
3529		1 when the match was added, 2 when the match was already in
3530		the list.
3531		See |complete-functions| for an explanation of {expr}.  It is
3532		the same as one item in the list that 'omnifunc' would return.
3533
3534complete_check()				*complete_check()*
3535		Check for a key typed while looking for completion matches.
3536		This is to be used when looking for matches takes some time.
3537		Returns |TRUE| when searching for matches is to be aborted,
3538		zero otherwise.
3539		Only to be used by the function specified with the
3540		'completefunc' option.
3541
3542							*complete_info()*
3543complete_info([{what}])
3544		Returns a Dictionary with information about Insert mode
3545		completion.  See |ins-completion|.
3546		The items are:
3547		   mode		Current completion mode name string.
3548				See |completion_info_mode| for the values.
3549		   pum_visible	|TRUE| if popup menu is visible.
3550				See |pumvisible()|.
3551		   items	List of completion matches.  Each item is a
3552				dictionary containing the entries "word",
3553				"abbr", "menu", "kind", "info" and "user_data".
3554				See |complete-items|.
3555		   selected	Selected item index.  First index is zero.
3556				Index is -1 if no item is selected (showing
3557				typed text only)
3558		   inserted	Inserted string. [NOT IMPLEMENT YET]
3559
3560							*complete_info_mode*
3561		mode values are:
3562		   ""		     Not in completion mode
3563		   "keyword"	     Keyword completion |i_CTRL-X_CTRL-N|
3564		   "ctrl_x"	     Just pressed CTRL-X |i_CTRL-X|
3565		   "whole_line"	     Whole lines |i_CTRL-X_CTRL-L|
3566		   "files"	     File names |i_CTRL-X_CTRL-F|
3567		   "tags"	     Tags |i_CTRL-X_CTRL-]|
3568		   "path_defines"    Definition completion |i_CTRL-X_CTRL-D|
3569		   "path_patterns"   Include completion |i_CTRL-X_CTRL-I|
3570		   "dictionary"	     Dictionary |i_CTRL-X_CTRL-K|
3571		   "thesaurus"	     Thesaurus |i_CTRL-X_CTRL-T|
3572		   "cmdline"	     Vim Command line |i_CTRL-X_CTRL-V|
3573		   "function"	     User defined completion |i_CTRL-X_CTRL-U|
3574		   "omni"	     Omni completion |i_CTRL-X_CTRL-O|
3575		   "spell"	     Spelling suggestions |i_CTRL-X_s|
3576		   "eval"            |complete()| completion
3577		   "unknown"	     Other internal modes
3578
3579		If the optional {what} list argument is supplied, then only
3580		the items listed in {what} are returned.  Unsupported items in
3581		{what} are silently ignored.
3582
3583		Examples: >
3584			" Get all items
3585			call complete_info()
3586			" Get only 'mode'
3587			call complete_info(['mode'])
3588			" Get only 'mode' and 'pum_visible'
3589			call complete_info(['mode', 'pum_visible'])
3590<
3591						*confirm()*
3592confirm({msg} [, {choices} [, {default} [, {type}]]])
3593		confirm() offers the user a dialog, from which a choice can be
3594		made.  It returns the number of the choice.  For the first
3595		choice this is 1.
3596		Note: confirm() is only supported when compiled with dialog
3597		support, see |+dialog_con| and |+dialog_gui|.
3598
3599		{msg} is displayed in a |dialog| with {choices} as the
3600		alternatives.  When {choices} is missing or empty, "&OK" is
3601		used (and translated).
3602		{msg} is a String, use '\n' to include a newline.  Only on
3603		some systems the string is wrapped when it doesn't fit.
3604
3605		{choices} is a String, with the individual choices separated
3606		by '\n', e.g. >
3607			confirm("Save changes?", "&Yes\n&No\n&Cancel")
3608<		The letter after the '&' is the shortcut key for that choice.
3609		Thus you can type 'c' to select "Cancel".  The shortcut does
3610		not need to be the first letter: >
3611			confirm("file has been modified", "&Save\nSave &All")
3612<		For the console, the first letter of each choice is used as
3613		the default shortcut key.
3614
3615		The optional {default} argument is the number of the choice
3616		that is made if the user hits <CR>.  Use 1 to make the first
3617		choice the default one.  Use 0 to not set a default.  If
3618		{default} is omitted, 1 is used.
3619
3620		The optional {type} argument gives the type of dialog.  This
3621		is only used for the icon of the GTK, Mac, Motif and Win32
3622		GUI.  It can be one of these values: "Error", "Question",
3623		"Info", "Warning" or "Generic".  Only the first character is
3624		relevant.  When {type} is omitted, "Generic" is used.
3625
3626		If the user aborts the dialog by pressing <Esc>, CTRL-C,
3627		or another valid interrupt key, confirm() returns 0.
3628
3629		An example: >
3630   :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2)
3631   :if choice == 0
3632   :	echo "make up your mind!"
3633   :elseif choice == 3
3634   :	echo "tasteful"
3635   :else
3636   :	echo "I prefer bananas myself."
3637   :endif
3638<		In a GUI dialog, buttons are used.  The layout of the buttons
3639		depends on the 'v' flag in 'guioptions'.  If it is included,
3640		the buttons are always put vertically.  Otherwise,  confirm()
3641		tries to put the buttons in one horizontal line.  If they
3642		don't fit, a vertical layout is used anyway.  For some systems
3643		the horizontal layout is always used.
3644
3645							*copy()*
3646copy({expr})	Make a copy of {expr}.  For Numbers and Strings this isn't
3647		different from using {expr} directly.
3648		When {expr} is a |List| a shallow copy is created.  This means
3649		that the original |List| can be changed without changing the
3650		copy, and vice versa.  But the items are identical, thus
3651		changing an item changes the contents of both |Lists|.
3652		A |Dictionary| is copied in a similar way as a |List|.
3653		Also see |deepcopy()|.
3654
3655cos({expr})						*cos()*
3656		Return the cosine of {expr}, measured in radians, as a |Float|.
3657		{expr} must evaluate to a |Float| or a |Number|.
3658		Examples: >
3659			:echo cos(100)
3660<			0.862319 >
3661			:echo cos(-4.01)
3662<			-0.646043
3663		{only available when compiled with the |+float| feature}
3664
3665
3666cosh({expr})						*cosh()*
3667		Return the hyperbolic cosine of {expr} as a |Float| in the range
3668		[1, inf].
3669		{expr} must evaluate to a |Float| or a |Number|.
3670		Examples: >
3671			:echo cosh(0.5)
3672<			1.127626 >
3673			:echo cosh(-0.5)
3674<			-1.127626
3675		{only available when compiled with the |+float| feature}
3676
3677
3678count({comp}, {expr} [, {ic} [, {start}]])			*count()*
3679		Return the number of times an item with value {expr} appears
3680		in |String|, |List| or |Dictionary| {comp}.
3681
3682		If {start} is given then start with the item with this index.
3683		{start} can only be used with a |List|.
3684
3685		When {ic} is given and it's |TRUE| then case is ignored.
3686
3687		When {comp} is a string then the number of not overlapping
3688		occurrences of {expr} is returned. Zero is returned when
3689		{expr} is an empty string.
3690
3691							*cscope_connection()*
3692cscope_connection([{num} , {dbpath} [, {prepend}]])
3693		Checks for the existence of a |cscope| connection.  If no
3694		parameters are specified, then the function returns:
3695			0, if cscope was not available (not compiled in), or
3696			   if there are no cscope connections;
3697			1, if there is at least one cscope connection.
3698
3699		If parameters are specified, then the value of {num}
3700		determines how existence of a cscope connection is checked:
3701
3702		{num}	Description of existence check
3703		-----	------------------------------
3704		0	Same as no parameters (e.g., "cscope_connection()").
3705		1	Ignore {prepend}, and use partial string matches for
3706			{dbpath}.
3707		2	Ignore {prepend}, and use exact string matches for
3708			{dbpath}.
3709		3	Use {prepend}, use partial string matches for both
3710			{dbpath} and {prepend}.
3711		4	Use {prepend}, use exact string matches for both
3712			{dbpath} and {prepend}.
3713
3714		Note: All string comparisons are case sensitive!
3715
3716		Examples.  Suppose we had the following (from ":cs show"): >
3717
3718  # pid    database name			prepend path
3719  0 27664  cscope.out				/usr/local
3720<
3721		Invocation					Return Val ~
3722		----------					---------- >
3723		cscope_connection()					1
3724		cscope_connection(1, "out")				1
3725		cscope_connection(2, "out")				0
3726		cscope_connection(3, "out")				0
3727		cscope_connection(3, "out", "local")			1
3728		cscope_connection(4, "out")				0
3729		cscope_connection(4, "out", "local")			0
3730		cscope_connection(4, "cscope.out", "/usr/local")	1
3731<
3732cursor({lnum}, {col} [, {off}])				*cursor()*
3733cursor({list})
3734		Positions the cursor at the column (byte count) {col} in the
3735		line {lnum}.  The first column is one.
3736
3737		When there is one argument {list} this is used as a |List|
3738		with two, three or four item:
3739			[{lnum}, {col}]
3740			[{lnum}, {col}, {off}]
3741			[{lnum}, {col}, {off}, {curswant}]
3742		This is like the return value of |getpos()| or |getcurpos()|,
3743		but without the first item.
3744
3745		Does not change the jumplist.
3746		If {lnum} is greater than the number of lines in the buffer,
3747		the cursor will be positioned at the last line in the buffer.
3748		If {lnum} is zero, the cursor will stay in the current line.
3749		If {col} is greater than the number of bytes in the line,
3750		the cursor will be positioned at the last character in the
3751		line.
3752		If {col} is zero, the cursor will stay in the current column.
3753		If {curswant} is given it is used to set the preferred column
3754		for vertical movement.  Otherwise {col} is used.
3755
3756		When 'virtualedit' is used {off} specifies the offset in
3757		screen columns from the start of the character.  E.g., a
3758		position within a <Tab> or after the last character.
3759		Returns 0 when the position could be set, -1 otherwise.
3760
3761debugbreak({pid})					*debugbreak()*
3762		Specifically used to interrupt a program being debugged.  It
3763		will cause process {pid} to get a SIGTRAP.  Behavior for other
3764		processes is undefined. See |terminal-debugger|.
3765		{only available on MS-Windows}
3766
3767deepcopy({expr} [, {noref}])				*deepcopy()* *E698*
3768		Make a copy of {expr}.  For Numbers and Strings this isn't
3769		different from using {expr} directly.
3770		When {expr} is a |List| a full copy is created.  This means
3771		that the original |List| can be changed without changing the
3772		copy, and vice versa.  When an item is a |List| or
3773		|Dictionary|, a copy for it is made, recursively.  Thus
3774		changing an item in the copy does not change the contents of
3775		the original |List|.
3776		A |Dictionary| is copied in a similar way as a |List|.
3777		When {noref} is omitted or zero a contained |List| or
3778		|Dictionary| is only copied once.  All references point to
3779		this single copy.  With {noref} set to 1 every occurrence of a
3780		|List| or |Dictionary| results in a new copy.  This also means
3781		that a cyclic reference causes deepcopy() to fail.
3782								*E724*
3783		Nesting is possible up to 100 levels.  When there is an item
3784		that refers back to a higher level making a deep copy with
3785		{noref} set to 1 will fail.
3786		Also see |copy()|.
3787
3788delete({fname} [, {flags}])					*delete()*
3789		Without {flags} or with {flags} empty: Deletes the file by the
3790		name {fname}.  This also works when {fname} is a symbolic link.
3791
3792		When {flags} is "d": Deletes the directory by the name
3793		{fname}.  This fails when directory {fname} is not empty.
3794
3795		When {flags} is "rf": Deletes the directory by the name
3796		{fname} and everything in it, recursively.  BE CAREFUL!
3797		Note: on MS-Windows it is not possible to delete a directory
3798		that is being used.
3799
3800		A symbolic link itself is deleted, not what it points to.
3801
3802		The result is a Number, which is 0 if the delete operation was
3803		successful and -1 when the deletion failed or partly failed.
3804
3805		Use |remove()| to delete an item from a |List|.
3806		To delete a line from the buffer use |:delete| or
3807		|deletebufline()|.
3808
3809deletebufline({expr}, {first} [, {last}])		*deletebufline()*
3810		Delete lines {first} to {last} (inclusive) from buffer {expr}.
3811		If {last} is omitted then delete line {first} only.
3812		On success 0 is returned, on failure 1 is returned.
3813
3814		For the use of {expr}, see |bufname()| above.
3815
3816		{first} and {last} are used like with |getline()|. Note that
3817		when using |line()| this refers to the current buffer. Use "$"
3818		to refer to the last line in buffer {expr}.
3819
3820							*did_filetype()*
3821did_filetype()	Returns |TRUE| when autocommands are being executed and the
3822		FileType event has been triggered at least once.  Can be used
3823		to avoid triggering the FileType event again in the scripts
3824		that detect the file type. |FileType|
3825		Returns |FALSE| when `:setf FALLBACK` was used.
3826		When editing another file, the counter is reset, thus this
3827		really checks if the FileType event has been triggered for the
3828		current buffer.  This allows an autocommand that starts
3829		editing another buffer to set 'filetype' and load a syntax
3830		file.
3831
3832diff_filler({lnum})					*diff_filler()*
3833		Returns the number of filler lines above line {lnum}.
3834		These are the lines that were inserted at this point in
3835		another diff'ed window.  These filler lines are shown in the
3836		display but don't exist in the buffer.
3837		{lnum} is used like with |getline()|.  Thus "." is the current
3838		line, "'m" mark m, etc.
3839		Returns 0 if the current window is not in diff mode.
3840
3841diff_hlID({lnum}, {col})				*diff_hlID()*
3842		Returns the highlight ID for diff mode at line {lnum} column
3843		{col} (byte index).  When the current line does not have a
3844		diff change zero is returned.
3845		{lnum} is used like with |getline()|.  Thus "." is the current
3846		line, "'m" mark m, etc.
3847		{col} is 1 for the leftmost column, {lnum} is 1 for the first
3848		line.
3849		The highlight ID can be used with |synIDattr()| to obtain
3850		syntax information about the highlighting.
3851
3852empty({expr})						*empty()*
3853		Return the Number 1 if {expr} is empty, zero otherwise.
3854		- A |List| or |Dictionary| is empty when it does not have any
3855		  items.
3856		- A |String| is empty when its length is zero.
3857		- A |Number| and |Float| are empty when their value is zero.
3858		- |v:false|, |v:none| and |v:null| are empty, |v:true| is not.
3859		- A |Job| is empty when it failed to start.
3860		- A |Channel| is empty when it is closed.
3861		- A |Blob| is empty when its length is zero.
3862
3863		For a long |List| this is much faster than comparing the
3864		length with zero.
3865
3866escape({string}, {chars})				*escape()*
3867		Escape the characters in {chars} that occur in {string} with a
3868		backslash.  Example: >
3869			:echo escape('c:\program files\vim', ' \')
3870<		results in: >
3871			c:\\program\ files\\vim
3872<		Also see |shellescape()| and |fnameescape()|.
3873
3874							*eval()*
3875eval({string})	Evaluate {string} and return the result.  Especially useful to
3876		turn the result of |string()| back into the original value.
3877		This works for Numbers, Floats, Strings, Blobs and composites
3878		of them.  Also works for |Funcref|s that refer to existing
3879		functions.
3880
3881eventhandler()						*eventhandler()*
3882		Returns 1 when inside an event handler.  That is that Vim got
3883		interrupted while waiting for the user to type a character,
3884		e.g., when dropping a file on Vim.  This means interactive
3885		commands cannot be used.  Otherwise zero is returned.
3886
3887executable({expr})					*executable()*
3888		This function checks if an executable with the name {expr}
3889		exists.  {expr} must be the name of the program without any
3890		arguments.
3891		executable() uses the value of $PATH and/or the normal
3892		searchpath for programs.		*PATHEXT*
3893		On MS-DOS and MS-Windows the ".exe", ".bat", etc. can
3894		optionally be included.  Then the extensions in $PATHEXT are
3895		tried.  Thus if "foo.exe" does not exist, "foo.exe.bat" can be
3896		found.  If $PATHEXT is not set then ".exe;.com;.bat;.cmd" is
3897		used.  A dot by itself can be used in $PATHEXT to try using
3898		the name without an extension.  When 'shell' looks like a
3899		Unix shell, then the name is also tried without adding an
3900		extension.
3901		On MS-DOS and MS-Windows it only checks if the file exists and
3902		is not a directory, not if it's really executable.
3903		On MS-Windows an executable in the same directory as Vim is
3904		always found.  Since this directory is added to $PATH it
3905		should also work to execute it |win32-PATH|.
3906		The result is a Number:
3907			1	exists
3908			0	does not exist
3909			-1	not implemented on this system
3910		|exepath()| can be used to get the full path of an executable.
3911
3912execute({command} [, {silent}])					*execute()*
3913		Execute an Ex command or commands and return the output as a
3914		string.
3915		{command} can be a string or a List.  In case of a List the
3916		lines are executed one by one.
3917		This is equivalent to: >
3918			redir => var
3919			{command}
3920			redir END
3921<
3922		The optional {silent} argument can have these values:
3923			""		no `:silent` used
3924			"silent"	`:silent` used
3925			"silent!"	`:silent!` used
3926		The default is "silent".  Note that with "silent!", unlike
3927		`:redir`, error messages are dropped.  When using an external
3928		command the screen may be messed up, use `system()` instead.
3929							*E930*
3930		It is not possible to use `:redir` anywhere in {command}.
3931
3932		To get a list of lines use |split()| on the result: >
3933			split(execute('args'), "\n")
3934
3935<		When used recursively the output of the recursive call is not
3936		included in the output of the higher level call.
3937
3938exepath({expr})						*exepath()*
3939		If {expr} is an executable and is either an absolute path, a
3940		relative path or found in $PATH, return the full path.
3941		Note that the current directory is used when {expr} starts
3942		with "./", which may be a problem for Vim: >
3943			echo exepath(v:progpath)
3944<		If {expr} cannot be found in $PATH or is not executable then
3945		an empty string is returned.
3946
3947							*exists()*
3948exists({expr})	The result is a Number, which is |TRUE| if {expr} is defined,
3949		zero otherwise.
3950
3951		For checking for a supported feature use |has()|.
3952		For checking if a file exists use |filereadable()|.
3953
3954		The {expr} argument is a string, which contains one of these:
3955			&option-name	Vim option (only checks if it exists,
3956					not if it really works)
3957			+option-name	Vim option that works.
3958			$ENVNAME	environment variable (could also be
3959					done by comparing with an empty
3960					string)
3961			*funcname	built-in function (see |functions|)
3962					or user defined function (see
3963					|user-functions|). Also works for a
3964					variable that is a Funcref.
3965			varname		internal variable (see
3966					|internal-variables|).  Also works
3967					for |curly-braces-names|, |Dictionary|
3968					entries, |List| items, etc.  Beware
3969					that evaluating an index may cause an
3970					error message for an invalid
3971					expression.  E.g.: >
3972					   :let l = [1, 2, 3]
3973					   :echo exists("l[5]")
3974<					   0 >
3975					   :echo exists("l[xx]")
3976<					   E121: Undefined variable: xx
3977					   0
3978			:cmdname	Ex command: built-in command, user
3979					command or command modifier |:command|.
3980					Returns:
3981					1  for match with start of a command
3982					2  full match with a command
3983					3  matches several user commands
3984					To check for a supported command
3985					always check the return value to be 2.
3986			:2match		The |:2match| command.
3987			:3match		The |:3match| command.
3988			#event		autocommand defined for this event
3989			#event#pattern	autocommand defined for this event and
3990					pattern (the pattern is taken
3991					literally and compared to the
3992					autocommand patterns character by
3993					character)
3994			#group		autocommand group exists
3995			#group#event	autocommand defined for this group and
3996					event.
3997			#group#event#pattern
3998					autocommand defined for this group,
3999					event and pattern.
4000			##event		autocommand for this event is
4001					supported.
4002
4003		Examples: >
4004			exists("&shortname")
4005			exists("$HOSTNAME")
4006			exists("*strftime")
4007			exists("*s:MyFunc")
4008			exists("bufcount")
4009			exists(":Make")
4010			exists("#CursorHold")
4011			exists("#BufReadPre#*.gz")
4012			exists("#filetypeindent")
4013			exists("#filetypeindent#FileType")
4014			exists("#filetypeindent#FileType#*")
4015			exists("##ColorScheme")
4016<		There must be no space between the symbol (&/$/*/#) and the
4017		name.
4018		There must be no extra characters after the name, although in
4019		a few cases this is ignored.  That may become more strict in
4020		the future, thus don't count on it!
4021		Working example: >
4022			exists(":make")
4023<		NOT working example: >
4024			exists(":make install")
4025
4026<		Note that the argument must be a string, not the name of the
4027		variable itself.  For example: >
4028			exists(bufcount)
4029<		This doesn't check for existence of the "bufcount" variable,
4030		but gets the value of "bufcount", and checks if that exists.
4031
4032exp({expr})						*exp()*
4033		Return the exponential of {expr} as a |Float| in the range
4034		[0, inf].
4035		{expr} must evaluate to a |Float| or a |Number|.
4036		Examples: >
4037			:echo exp(2)
4038<			7.389056 >
4039			:echo exp(-1)
4040<			0.367879
4041		{only available when compiled with the |+float| feature}
4042
4043
4044expand({expr} [, {nosuf} [, {list}]])				*expand()*
4045		Expand wildcards and the following special keywords in {expr}.
4046		'wildignorecase' applies.
4047
4048		If {list} is given and it is |TRUE|, a List will be returned.
4049		Otherwise the result is a String and when there are several
4050		matches, they are separated by <NL> characters.  [Note: in
4051		version 5.0 a space was used, which caused problems when a
4052		file name contains a space]
4053
4054		If the expansion fails, the result is an empty string.  A name
4055		for a non-existing file is not included, unless {expr} does
4056		not start with '%', '#' or '<', see below.
4057
4058		When {expr} starts with '%', '#' or '<', the expansion is done
4059		like for the |cmdline-special| variables with their associated
4060		modifiers.  Here is a short overview:
4061
4062			%		current file name
4063			#		alternate file name
4064			#n		alternate file name n
4065			<cfile>		file name under the cursor
4066			<afile>		autocmd file name
4067			<abuf>		autocmd buffer number (as a String!)
4068			<amatch>	autocmd matched name
4069			<sfile>		sourced script file or function name
4070			<slnum>		sourced script line number or function
4071					line number
4072			<sflnum>	script file line number, also when in
4073					a function
4074			<cword>		word under the cursor
4075			<cWORD>		WORD under the cursor
4076			<client>	the {clientid} of the last received
4077					message |server2client()|
4078		Modifiers:
4079			:p		expand to full path
4080			:h		head (last path component removed)
4081			:t		tail (last path component only)
4082			:r		root (one extension removed)
4083			:e		extension only
4084
4085		Example: >
4086			:let &tags = expand("%:p:h") . "/tags"
4087<		Note that when expanding a string that starts with '%', '#' or
4088		'<', any following text is ignored.  This does NOT work: >
4089			:let doesntwork = expand("%:h.bak")
4090<		Use this: >
4091			:let doeswork = expand("%:h") . ".bak"
4092<		Also note that expanding "<cfile>" and others only returns the
4093		referenced file name without further expansion.  If "<cfile>"
4094		is "~/.cshrc", you need to do another expand() to have the
4095		"~/" expanded into the path of the home directory: >
4096			:echo expand(expand("<cfile>"))
4097<
4098		There cannot be white space between the variables and the
4099		following modifier.  The |fnamemodify()| function can be used
4100		to modify normal file names.
4101
4102		When using '%' or '#', and the current or alternate file name
4103		is not defined, an empty string is used.  Using "%:p" in a
4104		buffer with no name, results in the current directory, with a
4105		'/' added.
4106
4107		When {expr} does not start with '%', '#' or '<', it is
4108		expanded like a file name is expanded on the command line.
4109		'suffixes' and 'wildignore' are used, unless the optional
4110		{nosuf} argument is given and it is |TRUE|.
4111		Names for non-existing files are included.  The "**" item can
4112		be used to search in a directory tree.  For example, to find
4113		all "README" files in the current directory and below: >
4114			:echo expand("**/README")
4115<
4116		expand() can also be used to expand variables and environment
4117		variables that are only known in a shell.  But this can be
4118		slow, because a shell may be used to do the expansion.  See
4119		|expr-env-expand|.
4120		The expanded variable is still handled like a list of file
4121		names.  When an environment variable cannot be expanded, it is
4122		left unchanged.  Thus ":echo expand('$FOOBAR')" results in
4123		"$FOOBAR".
4124
4125		See |glob()| for finding existing files.  See |system()| for
4126		getting the raw output of an external command.
4127
4128extend({expr1}, {expr2} [, {expr3}])			*extend()*
4129		{expr1} and {expr2} must be both |Lists| or both
4130		|Dictionaries|.
4131
4132		If they are |Lists|: Append {expr2} to {expr1}.
4133		If {expr3} is given insert the items of {expr2} before item
4134		{expr3} in {expr1}.  When {expr3} is zero insert before the
4135		first item.  When {expr3} is equal to len({expr1}) then
4136		{expr2} is appended.
4137		Examples: >
4138			:echo sort(extend(mylist, [7, 5]))
4139			:call extend(mylist, [2, 3], 1)
4140<		When {expr1} is the same List as {expr2} then the number of
4141		items copied is equal to the original length of the List.
4142		E.g., when {expr3} is 1 you get N new copies of the first item
4143		(where N is the original length of the List).
4144		Use |add()| to concatenate one item to a list.  To concatenate
4145		two lists into a new list use the + operator: >
4146			:let newlist = [1, 2, 3] + [4, 5]
4147<
4148		If they are |Dictionaries|:
4149		Add all entries from {expr2} to {expr1}.
4150		If a key exists in both {expr1} and {expr2} then {expr3} is
4151		used to decide what to do:
4152		{expr3} = "keep": keep the value of {expr1}
4153		{expr3} = "force": use the value of {expr2}
4154		{expr3} = "error": give an error message		*E737*
4155		When {expr3} is omitted then "force" is assumed.
4156
4157		{expr1} is changed when {expr2} is not empty.  If necessary
4158		make a copy of {expr1} first.
4159		{expr2} remains unchanged.
4160		When {expr1} is locked and {expr2} is not empty the operation
4161		fails.
4162		Returns {expr1}.
4163
4164
4165feedkeys({string} [, {mode}])				*feedkeys()*
4166		Characters in {string} are queued for processing as if they
4167		come from a mapping or were typed by the user.
4168
4169		By default the string is added to the end of the typeahead
4170		buffer, thus if a mapping is still being executed the
4171		characters come after them.  Use the 'i' flag to insert before
4172		other characters, they will be executed next, before any
4173		characters from a mapping.
4174
4175		The function does not wait for processing of keys contained in
4176		{string}.
4177
4178		To include special keys into {string}, use double-quotes
4179		and "\..." notation |expr-quote|. For example,
4180		feedkeys("\<CR>") simulates pressing of the <Enter> key. But
4181		feedkeys('\<CR>') pushes 5 characters.
4182
4183		{mode} is a String, which can contain these character flags:
4184		'm'	Remap keys. This is default.  If {mode} is absent,
4185			keys are remapped.
4186		'n'	Do not remap keys.
4187		't'	Handle keys as if typed; otherwise they are handled as
4188			if coming from a mapping.  This matters for undo,
4189			opening folds, etc.
4190		'L'	Lowlevel input.  Only works for Unix or when using the
4191			GUI. Keys are used as if they were coming from the
4192			terminal.  Other flags are not used.  *E980*
4193		'i'	Insert the string instead of appending (see above).
4194		'x'	Execute commands until typeahead is empty.  This is
4195			similar to using ":normal!".  You can call feedkeys()
4196			several times without 'x' and then one time with 'x'
4197			(possibly with an empty {string}) to execute all the
4198			typeahead.  Note that when Vim ends in Insert mode it
4199			will behave as if <Esc> is typed, to avoid getting
4200			stuck, waiting for a character to be typed before the
4201			script continues.
4202			Note that if you manage to call feedkeys() while
4203			executing commands, thus calling it recursively, then
4204			all typehead will be consumed by the last call.
4205		'!'	When used with 'x' will not end Insert mode. Can be
4206			used in a test when a timer is set to exit Insert mode
4207			a little later.  Useful for testing CursorHoldI.
4208
4209		Return value is always 0.
4210
4211filereadable({file})					*filereadable()*
4212		The result is a Number, which is |TRUE| when a file with the
4213		name {file} exists, and can be read.  If {file} doesn't exist,
4214		or is a directory, the result is |FALSE|.  {file} is any
4215		expression, which is used as a String.
4216		If you don't care about the file being readable you can use
4217		|glob()|.
4218							*file_readable()*
4219		Obsolete name: file_readable().
4220
4221
4222filewritable({file})					*filewritable()*
4223		The result is a Number, which is 1 when a file with the
4224		name {file} exists, and can be written.  If {file} doesn't
4225		exist, or is not writable, the result is 0.  If {file} is a
4226		directory, and we can write to it, the result is 2.
4227
4228
4229filter({expr1}, {expr2})				*filter()*
4230		{expr1} must be a |List| or a |Dictionary|.
4231		For each item in {expr1} evaluate {expr2} and when the result
4232		is zero remove the item from the |List| or |Dictionary|.
4233		{expr2} must be a |string| or |Funcref|.
4234
4235		If {expr2} is a |string|, inside {expr2} |v:val| has the value
4236		of the current item.  For a |Dictionary| |v:key| has the key
4237		of the current item and for a |List| |v:key| has the index of
4238		the current item.
4239		Examples: >
4240			call filter(mylist, 'v:val !~ "OLD"')
4241<		Removes the items where "OLD" appears. >
4242			call filter(mydict, 'v:key >= 8')
4243<		Removes the items with a key below 8. >
4244			call filter(var, 0)
4245<		Removes all the items, thus clears the |List| or |Dictionary|.
4246
4247		Note that {expr2} is the result of expression and is then
4248		used as an expression again.  Often it is good to use a
4249		|literal-string| to avoid having to double backslashes.
4250
4251		If {expr2} is a |Funcref| it must take two arguments:
4252			1. the key or the index of the current item.
4253			2. the value of the current item.
4254		The function must return |TRUE| if the item should be kept.
4255		Example that keeps the odd items of a list: >
4256			func Odd(idx, val)
4257			  return a:idx % 2 == 1
4258			endfunc
4259			call filter(mylist, function('Odd'))
4260<		It is shorter when using a |lambda|: >
4261			call filter(myList, {idx, val -> idx * val <= 42})
4262<		If you do not use "val" you can leave it out: >
4263			call filter(myList, {idx -> idx % 2 == 1})
4264<
4265		The operation is done in-place.  If you want a |List| or
4266		|Dictionary| to remain unmodified make a copy first: >
4267			:let l = filter(copy(mylist), 'v:val =~ "KEEP"')
4268
4269<		Returns {expr1}, the |List| or |Dictionary| that was filtered.
4270		When an error is encountered while evaluating {expr2} no
4271		further items in {expr1} are processed.  When {expr2} is a
4272		Funcref errors inside a function are ignored, unless it was
4273		defined with the "abort" flag.
4274
4275
4276finddir({name} [, {path} [, {count}]])				*finddir()*
4277		Find directory {name} in {path}.  Supports both downwards and
4278		upwards recursive directory searches.  See |file-searching|
4279		for the syntax of {path}.
4280		Returns the path of the first found match.  When the found
4281		directory is below the current directory a relative path is
4282		returned.  Otherwise a full path is returned.
4283		If {path} is omitted or empty then 'path' is used.
4284		If the optional {count} is given, find {count}'s occurrence of
4285		{name} in {path} instead of the first one.
4286		When {count} is negative return all the matches in a |List|.
4287		This is quite similar to the ex-command |:find|.
4288		{only available when compiled with the |+file_in_path|
4289		feature}
4290
4291findfile({name} [, {path} [, {count}]])				*findfile()*
4292		Just like |finddir()|, but find a file instead of a directory.
4293		Uses 'suffixesadd'.
4294		Example: >
4295			:echo findfile("tags.vim", ".;")
4296<		Searches from the directory of the current file upwards until
4297		it finds the file "tags.vim".
4298
4299float2nr({expr})					*float2nr()*
4300		Convert {expr} to a Number by omitting the part after the
4301		decimal point.
4302		{expr} must evaluate to a |Float| or a Number.
4303		When the value of {expr} is out of range for a |Number| the
4304		result is truncated to 0x7fffffff or -0x7fffffff (or when
4305		64-bit Number support is enabled, 0x7fffffffffffffff or
4306		-0x7fffffffffffffff).  NaN results in -0x80000000 (or when
4307		64-bit Number support is enabled, -0x8000000000000000).
4308		Examples: >
4309			echo float2nr(3.95)
4310<			3  >
4311			echo float2nr(-23.45)
4312<			-23  >
4313			echo float2nr(1.0e100)
4314<			2147483647  (or 9223372036854775807) >
4315			echo float2nr(-1.0e150)
4316<			-2147483647 (or -9223372036854775807) >
4317			echo float2nr(1.0e-100)
4318<			0
4319		{only available when compiled with the |+float| feature}
4320
4321
4322floor({expr})							*floor()*
4323		Return the largest integral value less than or equal to
4324		{expr} as a |Float| (round down).
4325		{expr} must evaluate to a |Float| or a |Number|.
4326		Examples: >
4327			echo floor(1.856)
4328<			1.0  >
4329			echo floor(-5.456)
4330<			-6.0  >
4331			echo floor(4.0)
4332<			4.0
4333		{only available when compiled with the |+float| feature}
4334
4335
4336fmod({expr1}, {expr2})					*fmod()*
4337		Return the remainder of {expr1} / {expr2}, even if the
4338		division is not representable.  Returns {expr1} - i * {expr2}
4339		for some integer i such that if {expr2} is non-zero, the
4340		result has the same sign as {expr1} and magnitude less than
4341		the magnitude of {expr2}.  If {expr2} is zero, the value
4342		returned is zero.  The value returned is a |Float|.
4343		{expr1} and {expr2} must evaluate to a |Float| or a |Number|.
4344		Examples: >
4345			:echo fmod(12.33, 1.22)
4346<			0.13 >
4347			:echo fmod(-12.33, 1.22)
4348<			-0.13
4349		{only available when compiled with |+float| feature}
4350
4351
4352fnameescape({string})					*fnameescape()*
4353		Escape {string} for use as file name command argument.  All
4354		characters that have a special meaning, such as '%' and '|'
4355		are escaped with a backslash.
4356		For most systems the characters escaped are
4357		" \t\n*?[{`$\\%#'\"|!<".  For systems where a backslash
4358		appears in a filename, it depends on the value of 'isfname'.
4359		A leading '+' and '>' is also escaped (special after |:edit|
4360		and |:write|).  And a "-" by itself (special after |:cd|).
4361		Example: >
4362			:let fname = '+some str%nge|name'
4363			:exe "edit " . fnameescape(fname)
4364<		results in executing: >
4365			edit \+some\ str\%nge\|name
4366
4367fnamemodify({fname}, {mods})				*fnamemodify()*
4368		Modify file name {fname} according to {mods}.  {mods} is a
4369		string of characters like it is used for file names on the
4370		command line.  See |filename-modifiers|.
4371		Example: >
4372			:echo fnamemodify("main.c", ":p:h")
4373<		results in: >
4374			/home/mool/vim/vim/src
4375<		Note: Environment variables don't work in {fname}, use
4376		|expand()| first then.
4377
4378foldclosed({lnum})					*foldclosed()*
4379		The result is a Number.  If the line {lnum} is in a closed
4380		fold, the result is the number of the first line in that fold.
4381		If the line {lnum} is not in a closed fold, -1 is returned.
4382
4383foldclosedend({lnum})					*foldclosedend()*
4384		The result is a Number.  If the line {lnum} is in a closed
4385		fold, the result is the number of the last line in that fold.
4386		If the line {lnum} is not in a closed fold, -1 is returned.
4387
4388foldlevel({lnum})					*foldlevel()*
4389		The result is a Number, which is the foldlevel of line {lnum}
4390		in the current buffer.  For nested folds the deepest level is
4391		returned.  If there is no fold at line {lnum}, zero is
4392		returned.  It doesn't matter if the folds are open or closed.
4393		When used while updating folds (from 'foldexpr') -1 is
4394		returned for lines where folds are still to be updated and the
4395		foldlevel is unknown.  As a special case the level of the
4396		previous line is usually available.
4397
4398							*foldtext()*
4399foldtext()	Returns a String, to be displayed for a closed fold.  This is
4400		the default function used for the 'foldtext' option and should
4401		only be called from evaluating 'foldtext'.  It uses the
4402		|v:foldstart|, |v:foldend| and |v:folddashes| variables.
4403		The returned string looks like this: >
4404			+-- 45 lines: abcdef
4405<		The number of leading dashes depends on the foldlevel.  The
4406		"45" is the number of lines in the fold.  "abcdef" is the text
4407		in the first non-blank line of the fold.  Leading white space,
4408		"//" or "/*" and the text from the 'foldmarker' and
4409		'commentstring' options is removed.
4410		When used to draw the actual foldtext, the rest of the line
4411		will be filled with the fold char from the 'fillchars'
4412		setting.
4413		{not available when compiled without the |+folding| feature}
4414
4415foldtextresult({lnum})					*foldtextresult()*
4416		Returns the text that is displayed for the closed fold at line
4417		{lnum}.  Evaluates 'foldtext' in the appropriate context.
4418		When there is no closed fold at {lnum} an empty string is
4419		returned.
4420		{lnum} is used like with |getline()|.  Thus "." is the current
4421		line, "'m" mark m, etc.
4422		Useful when exporting folded text, e.g., to HTML.
4423		{not available when compiled without the |+folding| feature}
4424
4425							*foreground()*
4426foreground()	Move the Vim window to the foreground.  Useful when sent from
4427		a client to a Vim server. |remote_send()|
4428		On Win32 systems this might not work, the OS does not always
4429		allow a window to bring itself to the foreground.  Use
4430		|remote_foreground()| instead.
4431		{only in the Win32, Athena, Motif and GTK GUI versions and the
4432		Win32 console version}
4433
4434						*funcref()*
4435funcref({name} [, {arglist}] [, {dict}])
4436		Just like |function()|, but the returned Funcref will lookup
4437		the function by reference, not by name.  This matters when the
4438		function {name} is redefined later.
4439
4440		Unlike |function()|, {name} must be an existing user function.
4441		Also for autoloaded functions. {name} cannot be a builtin
4442		function.
4443
4444					*function()* *E700* *E922* *E923*
4445function({name} [, {arglist}] [, {dict}])
4446		Return a |Funcref| variable that refers to function {name}.
4447		{name} can be the name of a user defined function or an
4448		internal function.
4449
4450		{name} can also be a Funcref or a partial.  When it is a
4451		partial the dict stored in it will be used and the {dict}
4452		argument is not allowed. E.g.: >
4453			let FuncWithArg = function(dict.Func, [arg])
4454			let Broken = function(dict.Func, [arg], dict)
4455<
4456		When using the Funcref the function will be found by {name},
4457		also when it was redefined later.  Use |funcref()| to keep the
4458		same function.
4459
4460		When {arglist} or {dict} is present this creates a partial.
4461		That means the argument list and/or the dictionary is stored in
4462		the Funcref and will be used when the Funcref is called.
4463
4464		The arguments are passed to the function in front of other
4465		arguments.  Example: >
4466			func Callback(arg1, arg2, name)
4467			...
4468			let Func = function('Callback', ['one', 'two'])
4469			...
4470			call Func('name')
4471<		Invokes the function as with: >
4472			call Callback('one', 'two', 'name')
4473
4474<		The function() call can be nested to add more arguments to the
4475		Funcref.  The extra arguments are appended to the list of
4476		arguments.  Example: >
4477			func Callback(arg1, arg2, name)
4478			...
4479			let Func = function('Callback', ['one'])
4480			let Func2 = function(Func, ['two'])
4481			...
4482			call Func2('name')
4483<		Invokes the function as with: >
4484			call Callback('one', 'two', 'name')
4485
4486<		The Dictionary is only useful when calling a "dict" function.
4487		In that case the {dict} is passed in as "self". Example: >
4488			function Callback() dict
4489			   echo "called for " . self.name
4490			endfunction
4491			...
4492			let context = {"name": "example"}
4493			let Func = function('Callback', context)
4494			...
4495			call Func()	" will echo: called for example
4496<		The use of function() is not needed when there are no extra
4497		arguments, these two are equivalent: >
4498			let Func = function('Callback', context)
4499			let Func = context.Callback
4500
4501<		The argument list and the Dictionary can be combined: >
4502			function Callback(arg1, count) dict
4503			...
4504			let context = {"name": "example"}
4505			let Func = function('Callback', ['one'], context)
4506			...
4507			call Func(500)
4508<		Invokes the function as with: >
4509			call context.Callback('one', 500)
4510
4511
4512garbagecollect([{atexit}])				*garbagecollect()*
4513		Cleanup unused |Lists|, |Dictionaries|, |Channels| and |Jobs|
4514		that have circular references.
4515
4516		There is hardly ever a need to invoke this function, as it is
4517		automatically done when Vim runs out of memory or is waiting
4518		for the user to press a key after 'updatetime'.  Items without
4519		circular references are always freed when they become unused.
4520		This is useful if you have deleted a very big |List| and/or
4521		|Dictionary| with circular references in a script that runs
4522		for a long time.
4523
4524		When the optional {atexit} argument is one, garbage
4525		collection will also be done when exiting Vim, if it wasn't
4526		done before.  This is useful when checking for memory leaks.
4527
4528		The garbage collection is not done immediately but only when
4529		it's safe to perform.  This is when waiting for the user to
4530		type a character.  To force garbage collection immediately use
4531		|test_garbagecollect_now()|.
4532
4533get({list}, {idx} [, {default}])			*get()*
4534		Get item {idx} from |List| {list}.  When this item is not
4535		available return {default}.  Return zero when {default} is
4536		omitted.
4537get({blob}, {idx} [, {default}])
4538		Get byte {idx} from |Blob| {blob}.  When this byte is not
4539		available return {default}.  Return -1 when {default} is
4540		omitted.
4541get({dict}, {key} [, {default}])
4542		Get item with key {key} from |Dictionary| {dict}.  When this
4543		item is not available return {default}.  Return zero when
4544		{default} is omitted.
4545get({func}, {what})
4546		Get an item with from Funcref {func}.  Possible values for
4547		{what} are:
4548			"name"	The function name
4549			"func"	The function
4550			"dict"	The dictionary
4551			"args"	The list with arguments
4552
4553							*getbufinfo()*
4554getbufinfo([{expr}])
4555getbufinfo([{dict}])
4556		Get information about buffers as a List of Dictionaries.
4557
4558		Without an argument information about all the buffers is
4559		returned.
4560
4561		When the argument is a Dictionary only the buffers matching
4562		the specified criteria are returned.  The following keys can
4563		be specified in {dict}:
4564			buflisted	include only listed buffers.
4565			bufloaded	include only loaded buffers.
4566			bufmodified	include only modified buffers.
4567
4568		Otherwise, {expr} specifies a particular buffer to return
4569		information for.  For the use of {expr}, see |bufname()|
4570		above.  If the buffer is found the returned List has one item.
4571		Otherwise the result is an empty list.
4572
4573		Each returned List item is a dictionary with the following
4574		entries:
4575			bufnr		buffer number.
4576			changed		TRUE if the buffer is modified.
4577			changedtick	number of changes made to the buffer.
4578			hidden		TRUE if the buffer is hidden.
4579			listed		TRUE if the buffer is listed.
4580			lnum		current line number in buffer.
4581			loaded		TRUE if the buffer is loaded.
4582			name		full path to the file in the buffer.
4583			signs		list of signs placed in the buffer.
4584					Each list item is a dictionary with
4585					the following fields:
4586					    id	  sign identifier
4587					    lnum  line number
4588					    name  sign name
4589			variables	a reference to the dictionary with
4590					buffer-local variables.
4591			windows		list of |window-ID|s that display this
4592					buffer
4593
4594		Examples: >
4595			for buf in getbufinfo()
4596			    echo buf.name
4597			endfor
4598			for buf in getbufinfo({'buflisted':1})
4599			    if buf.changed
4600				....
4601			    endif
4602			endfor
4603<
4604		To get buffer-local options use: >
4605			getbufvar({bufnr}, '&option_name')
4606
4607<
4608							*getbufline()*
4609getbufline({expr}, {lnum} [, {end}])
4610		Return a |List| with the lines starting from {lnum} to {end}
4611		(inclusive) in the buffer {expr}.  If {end} is omitted, a
4612		|List| with only the line {lnum} is returned.
4613
4614		For the use of {expr}, see |bufname()| above.
4615
4616		For {lnum} and {end} "$" can be used for the last line of the
4617		buffer.  Otherwise a number must be used.
4618
4619		When {lnum} is smaller than 1 or bigger than the number of
4620		lines in the buffer, an empty |List| is returned.
4621
4622		When {end} is greater than the number of lines in the buffer,
4623		it is treated as {end} is set to the number of lines in the
4624		buffer.  When {end} is before {lnum} an empty |List| is
4625		returned.
4626
4627		This function works only for loaded buffers.  For unloaded and
4628		non-existing buffers, an empty |List| is returned.
4629
4630		Example: >
4631			:let lines = getbufline(bufnr("myfile"), 1, "$")
4632
4633getbufvar({expr}, {varname} [, {def}])				*getbufvar()*
4634		The result is the value of option or local buffer variable
4635		{varname} in buffer {expr}.  Note that the name without "b:"
4636		must be used.
4637		When {varname} is empty returns a dictionary with all the
4638		buffer-local variables.
4639		When {varname} is equal to "&" returns a dictionary with all
4640		the buffer-local options.
4641		Otherwise, when {varname} starts with "&" returns the value of
4642		a buffer-local option.
4643		This also works for a global or buffer-local option, but it
4644		doesn't work for a global variable, window-local variable or
4645		window-local option.
4646		For the use of {expr}, see |bufname()| above.
4647		When the buffer or variable doesn't exist {def} or an empty
4648		string is returned, there is no error message.
4649		Examples: >
4650			:let bufmodified = getbufvar(1, "&mod")
4651			:echo "todo myvar = " . getbufvar("todo", "myvar")
4652<
4653getchangelist({expr})					*getchangelist()*
4654		Returns the |changelist| for the buffer {expr}. For the use
4655		of {expr}, see |bufname()| above. If buffer {expr} doesn't
4656		exist, an empty list is returned.
4657
4658		The returned list contains two entries: a list with the change
4659		locations and the current position in the list.  Each
4660		entry in the change list is a dictionary with the following
4661		entries:
4662			col		column number
4663			coladd		column offset for 'virtualedit'
4664			lnum		line number
4665		If buffer {expr} is the current buffer, then the current
4666		position refers to the position in the list. For other
4667		buffers, it is set to the length of the list.
4668
4669getchar([expr])						*getchar()*
4670		Get a single character from the user or input stream.
4671		If [expr] is omitted, wait until a character is available.
4672		If [expr] is 0, only get a character when one is available.
4673			Return zero otherwise.
4674		If [expr] is 1, only check if a character is available, it is
4675			not consumed.  Return zero if no character available.
4676
4677		Without [expr] and when [expr] is 0 a whole character or
4678		special key is returned.  If it is a single character, the
4679		result is a number.  Use nr2char() to convert it to a String.
4680		Otherwise a String is returned with the encoded character.
4681		For a special key it's a String with a sequence of bytes
4682		starting with 0x80 (decimal: 128).  This is the same value as
4683		the String "\<Key>", e.g., "\<Left>".  The returned value is
4684		also a String when a modifier (shift, control, alt) was used
4685		that is not included in the character.
4686
4687		When [expr] is 0 and Esc is typed, there will be a short delay
4688		while Vim waits to see if this is the start of an escape
4689		sequence.
4690
4691		When [expr] is 1 only the first byte is returned.  For a
4692		one-byte character it is the character itself as a number.
4693		Use nr2char() to convert it to a String.
4694
4695		Use getcharmod() to obtain any additional modifiers.
4696
4697		When the user clicks a mouse button, the mouse event will be
4698		returned.  The position can then be found in |v:mouse_col|,
4699		|v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|.  This
4700		example positions the mouse as it would normally happen: >
4701			let c = getchar()
4702			if c == "\<LeftMouse>" && v:mouse_win > 0
4703			  exe v:mouse_win . "wincmd w"
4704			  exe v:mouse_lnum
4705			  exe "normal " . v:mouse_col . "|"
4706			endif
4707<
4708		When using bracketed paste only the first character is
4709		returned, the rest of the pasted text is dropped.
4710		|xterm-bracketed-paste|.
4711
4712		There is no prompt, you will somehow have to make clear to the
4713		user that a character has to be typed.
4714		There is no mapping for the character.
4715		Key codes are replaced, thus when the user presses the <Del>
4716		key you get the code for the <Del> key, not the raw character
4717		sequence.  Examples: >
4718			getchar() == "\<Del>"
4719			getchar() == "\<S-Left>"
4720<		This example redefines "f" to ignore case: >
4721			:nmap f :call FindChar()<CR>
4722			:function FindChar()
4723			:  let c = nr2char(getchar())
4724			:  while col('.') < col('$') - 1
4725			:    normal l
4726			:    if getline('.')[col('.') - 1] ==? c
4727			:      break
4728			:    endif
4729			:  endwhile
4730			:endfunction
4731<
4732		You may also receive synthetic characters, such as
4733		|<CursorHold>|. Often you will want to ignore this and get
4734		another character: >
4735			:function GetKey()
4736			:  let c = getchar()
4737			:  while c == "\<CursorHold>"
4738			:    let c = getchar()
4739			:  endwhile
4740			:  return c
4741			:endfunction
4742
4743getcharmod()						*getcharmod()*
4744		The result is a Number which is the state of the modifiers for
4745		the last obtained character with getchar() or in another way.
4746		These values are added together:
4747			2	shift
4748			4	control
4749			8	alt (meta)
4750			16	meta (when it's different from ALT)
4751			32	mouse double click
4752			64	mouse triple click
4753			96	mouse quadruple click (== 32 + 64)
4754			128	command (Macintosh only)
4755		Only the modifiers that have not been included in the
4756		character itself are obtained.  Thus Shift-a results in "A"
4757		without a modifier.
4758
4759getcharsearch()						*getcharsearch()*
4760		Return the current character search information as a {dict}
4761		with the following entries:
4762
4763		    char	character previously used for a character
4764				search (|t|, |f|, |T|, or |F|); empty string
4765				if no character search has been performed
4766		    forward	direction of character search; 1 for forward,
4767				0 for backward
4768		    until	type of character search; 1 for a |t| or |T|
4769				character search, 0 for an |f| or |F|
4770				character search
4771
4772		This can be useful to always have |;| and |,| search
4773		forward/backward regardless of the direction of the previous
4774		character search: >
4775			:nnoremap <expr> ; getcharsearch().forward ? ';' : ','
4776			:nnoremap <expr> , getcharsearch().forward ? ',' : ';'
4777<		Also see |setcharsearch()|.
4778
4779getcmdline()						*getcmdline()*
4780		Return the current command-line.  Only works when the command
4781		line is being edited, thus requires use of |c_CTRL-\_e| or
4782		|c_CTRL-R_=|.
4783		Example: >
4784			:cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
4785<		Also see |getcmdtype()|, |getcmdpos()| and |setcmdpos()|.
4786		Returns an empty string when entering a password or using
4787		|inputsecret()|.
4788
4789getcmdpos()						*getcmdpos()*
4790		Return the position of the cursor in the command line as a
4791		byte count.  The first column is 1.
4792		Only works when editing the command line, thus requires use of
4793		|c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
4794		Returns 0 otherwise.
4795		Also see |getcmdtype()|, |setcmdpos()| and |getcmdline()|.
4796
4797getcmdtype()						*getcmdtype()*
4798		Return the current command-line type. Possible return values
4799		are:
4800		    :	normal Ex command
4801		    >	debug mode command |debug-mode|
4802		    /	forward search command
4803		    ?	backward search command
4804		    @	|input()| command
4805		    -	|:insert| or |:append| command
4806		    =	|i_CTRL-R_=|
4807		Only works when editing the command line, thus requires use of
4808		|c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
4809		Returns an empty string otherwise.
4810		Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
4811
4812getcmdwintype()						*getcmdwintype()*
4813		Return the current |command-line-window| type. Possible return
4814		values are the same as |getcmdtype()|. Returns an empty string
4815		when not in the command-line window.
4816
4817getcompletion({pat}, {type} [, {filtered}])		*getcompletion()*
4818		Return a list of command-line completion matches. {type}
4819		specifies what for.  The following completion types are
4820		supported:
4821
4822		arglist		file names in argument list
4823		augroup		autocmd groups
4824		buffer		buffer names
4825		behave		:behave suboptions
4826		color		color schemes
4827		command		Ex command (and arguments)
4828		compiler	compilers
4829		cscope		|:cscope| suboptions
4830		dir		directory names
4831		environment	environment variable names
4832		event		autocommand events
4833		expression	Vim expression
4834		file		file and directory names
4835		file_in_path	file and directory names in |'path'|
4836		filetype	filetype names |'filetype'|
4837		function	function name
4838		help		help subjects
4839		highlight	highlight groups
4840		history		:history suboptions
4841		locale		locale names (as output of locale -a)
4842		mapclear        buffer argument
4843		mapping		mapping name
4844		menu		menus
4845		messages	|:messages| suboptions
4846		option		options
4847		packadd		optional package |pack-add| names
4848		shellcmd	Shell command
4849		sign		|:sign| suboptions
4850		syntax		syntax file names |'syntax'|
4851		syntime		|:syntime| suboptions
4852		tag		tags
4853		tag_listfiles	tags, file names
4854		user		user names
4855		var		user variables
4856
4857		If {pat} is an empty string, then all the matches are returned.
4858		Otherwise only items matching {pat} are returned. See
4859		|wildcards| for the use of special characters in {pat}.
4860
4861		If the optional {filtered} flag is set to 1, then 'wildignore'
4862		is applied to filter the results.  Otherwise all the matches
4863		are returned. The 'wildignorecase' option always applies.
4864
4865		If there are no matches, an empty list is returned.  An
4866		invalid value for {type} produces an error.
4867
4868							*getcurpos()*
4869getcurpos()	Get the position of the cursor.  This is like getpos('.'), but
4870		includes an extra item in the list:
4871		    [bufnum, lnum, col, off, curswant] ~
4872		The "curswant" number is the preferred column when moving the
4873		cursor vertically.  Also see |getpos()|.
4874
4875		This can be used to save and restore the cursor position: >
4876			let save_cursor = getcurpos()
4877			MoveTheCursorAround
4878			call setpos('.', save_cursor)
4879<		Note that this only works within the window.  See
4880		|winrestview()| for restoring more state.
4881							*getcwd()*
4882getcwd([{winnr} [, {tabnr}]])
4883		The result is a String, which is the name of the current
4884		working directory.
4885
4886		With {winnr} return the local current directory of this window
4887		in the current tab page.  {winnr} can be the window number or
4888		the |window-ID|.
4889		If {winnr} is -1 return the name of the global working
4890		directory.  See also |haslocaldir()|.
4891
4892		With {winnr} and {tabnr} return the local current directory of
4893		the window in the specified tab page.
4894		Return an empty string if the arguments are invalid.
4895
4896getfsize({fname})					*getfsize()*
4897		The result is a Number, which is the size in bytes of the
4898		given file {fname}.
4899		If {fname} is a directory, 0 is returned.
4900		If the file {fname} can't be found, -1 is returned.
4901		If the size of {fname} is too big to fit in a Number then -2
4902		is returned.
4903
4904getfontname([{name}])					*getfontname()*
4905		Without an argument returns the name of the normal font being
4906		used.  Like what is used for the Normal highlight group
4907		|hl-Normal|.
4908		With an argument a check is done whether {name} is a valid
4909		font name.  If not then an empty string is returned.
4910		Otherwise the actual font name is returned, or {name} if the
4911		GUI does not support obtaining the real name.
4912		Only works when the GUI is running, thus not in your vimrc or
4913		gvimrc file.  Use the |GUIEnter| autocommand to use this
4914		function just after the GUI has started.
4915		Note that the GTK GUI accepts any font name, thus checking for
4916		a valid name does not work.
4917
4918getfperm({fname})					*getfperm()*
4919		The result is a String, which is the read, write, and execute
4920		permissions of the given file {fname}.
4921		If {fname} does not exist or its directory cannot be read, an
4922		empty string is returned.
4923		The result is of the form "rwxrwxrwx", where each group of
4924		"rwx" flags represent, in turn, the permissions of the owner
4925		of the file, the group the file belongs to, and other users.
4926		If a user does not have a given permission the flag for this
4927		is replaced with the string "-".  Examples: >
4928			:echo getfperm("/etc/passwd")
4929			:echo getfperm(expand("~/.vimrc"))
4930<		This will hopefully (from a security point of view) display
4931		the string "rw-r--r--" or even "rw-------".
4932
4933		For setting permissions use |setfperm()|.
4934
4935getftime({fname})					*getftime()*
4936		The result is a Number, which is the last modification time of
4937		the given file {fname}.  The value is measured as seconds
4938		since 1st Jan 1970, and may be passed to strftime().  See also
4939		|localtime()| and |strftime()|.
4940		If the file {fname} can't be found -1 is returned.
4941
4942getftype({fname})					*getftype()*
4943		The result is a String, which is a description of the kind of
4944		file of the given file {fname}.
4945		If {fname} does not exist an empty string is returned.
4946		Here is a table over different kinds of files and their
4947		results:
4948			Normal file		"file"
4949			Directory		"dir"
4950			Symbolic link		"link"
4951			Block device		"bdev"
4952			Character device	"cdev"
4953			Socket			"socket"
4954			FIFO			"fifo"
4955			All other		"other"
4956		Example: >
4957			getftype("/home")
4958<		Note that a type such as "link" will only be returned on
4959		systems that support it.  On some systems only "dir" and
4960		"file" are returned.  On MS-Windows a symbolic link to a
4961		directory returns "dir" instead of "link".
4962
4963getjumplist([{winnr} [, {tabnr}]])			*getjumplist()*
4964		Returns the |jumplist| for the specified window.
4965
4966		Without arguments use the current window.
4967		With {winnr} only use this window in the current tab page.
4968		{winnr} can also be a |window-ID|.
4969		With {winnr} and {tabnr} use the window in the specified tab
4970		page.
4971
4972		The returned list contains two entries: a list with the jump
4973		locations and the last used jump position number in the list.
4974		Each entry in the jump location list is a dictionary with
4975		the following entries:
4976			bufnr		buffer number
4977			col		column number
4978			coladd		column offset for 'virtualedit'
4979			filename	filename if available
4980			lnum		line number
4981
4982							*getline()*
4983getline({lnum} [, {end}])
4984		Without {end} the result is a String, which is line {lnum}
4985		from the current buffer.  Example: >
4986			getline(1)
4987<		When {lnum} is a String that doesn't start with a
4988		digit, |line()| is called to translate the String into a Number.
4989		To get the line under the cursor: >
4990			getline(".")
4991<		When {lnum} is smaller than 1 or bigger than the number of
4992		lines in the buffer, an empty string is returned.
4993
4994		When {end} is given the result is a |List| where each item is
4995		a line from the current buffer in the range {lnum} to {end},
4996		including line {end}.
4997		{end} is used in the same way as {lnum}.
4998		Non-existing lines are silently omitted.
4999		When {end} is before {lnum} an empty |List| is returned.
5000		Example: >
5001			:let start = line('.')
5002			:let end = search("^$") - 1
5003			:let lines = getline(start, end)
5004
5005<		To get lines from another buffer see |getbufline()|
5006
5007getloclist({nr} [, {what}])				*getloclist()*
5008		Returns a list with all the entries in the location list for
5009		window {nr}.  {nr} can be the window number or the |window-ID|.
5010		When {nr} is zero the current window is used.
5011
5012		For a location list window, the displayed location list is
5013		returned.  For an invalid window number {nr}, an empty list is
5014		returned. Otherwise, same as |getqflist()|.
5015
5016		If the optional {what} dictionary argument is supplied, then
5017		returns the items listed in {what} as a dictionary. Refer to
5018		|getqflist()| for the supported items in {what}.
5019
5020		In addition to the items supported by |getqflist()| in {what},
5021		the following item is supported by |getloclist()|:
5022
5023			filewinid 	id of the window used to display files
5024					from the location list. This field is
5025					applicable only when called from a
5026					location list window. See
5027					|location-list-file-window| for more
5028					details.
5029
5030getmatches()						*getmatches()*
5031		Returns a |List| with all matches previously defined for the
5032		current window by |matchadd()| and the |:match| commands.
5033		|getmatches()| is useful in combination with |setmatches()|,
5034		as |setmatches()| can restore a list of matches saved by
5035		|getmatches()|.
5036		Example: >
5037			:echo getmatches()
5038<			[{'group': 'MyGroup1', 'pattern': 'TODO',
5039			'priority': 10, 'id': 1}, {'group': 'MyGroup2',
5040			'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
5041			:let m = getmatches()
5042			:call clearmatches()
5043			:echo getmatches()
5044<			[] >
5045			:call setmatches(m)
5046			:echo getmatches()
5047<			[{'group': 'MyGroup1', 'pattern': 'TODO',
5048			'priority': 10, 'id': 1}, {'group': 'MyGroup2',
5049			'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
5050			:unlet m
5051<
5052							*getpid()*
5053getpid()	Return a Number which is the process ID of the Vim process.
5054		On Unix and MS-Windows this is a unique number, until Vim
5055		exits.  On MS-DOS it's always zero.
5056
5057							*getpos()*
5058getpos({expr})	Get the position for {expr}.  For possible values of {expr}
5059		see |line()|.  For getting the cursor position see
5060		|getcurpos()|.
5061		The result is a |List| with four numbers:
5062		    [bufnum, lnum, col, off]
5063		"bufnum" is zero, unless a mark like '0 or 'A is used, then it
5064		is the buffer number of the mark.
5065		"lnum" and "col" are the position in the buffer.  The first
5066		column is 1.
5067		The "off" number is zero, unless 'virtualedit' is used.  Then
5068		it is the offset in screen columns from the start of the
5069		character.  E.g., a position within a <Tab> or after the last
5070		character.
5071		Note that for '< and '> Visual mode matters: when it is "V"
5072		(visual line mode) the column of '< is zero and the column of
5073		'> is a large number.
5074		This can be used to save and restore the position of a mark: >
5075			let save_a_mark = getpos("'a")
5076			...
5077			call setpos("'a", save_a_mark)
5078<		Also see |getcurpos()| and |setpos()|.
5079
5080
5081getqflist([{what}])					*getqflist()*
5082		Returns a list with all the current quickfix errors.  Each
5083		list item is a dictionary with these entries:
5084			bufnr	number of buffer that has the file name, use
5085				bufname() to get the name
5086			module	module name
5087			lnum	line number in the buffer (first line is 1)
5088			col	column number (first column is 1)
5089			vcol	|TRUE|: "col" is visual column
5090				|FALSE|: "col" is byte index
5091			nr	error number
5092			pattern	search pattern used to locate the error
5093			text	description of the error
5094			type	type of the error, 'E', '1', etc.
5095			valid	|TRUE|: recognized error message
5096
5097		When there is no error list or it's empty, an empty list is
5098		returned. Quickfix list entries with non-existing buffer
5099		number are returned with "bufnr" set to zero.
5100
5101		Useful application: Find pattern matches in multiple files and
5102		do something with them: >
5103			:vimgrep /theword/jg *.c
5104			:for d in getqflist()
5105			:   echo bufname(d.bufnr) ':' d.lnum '=' d.text
5106			:endfor
5107<
5108		If the optional {what} dictionary argument is supplied, then
5109		returns only the items listed in {what} as a dictionary. The
5110		following string items are supported in {what}:
5111			changedtick	get the total number of changes made
5112					to the list |quickfix-changedtick|
5113			context	get the |quickfix-context|
5114			efm	errorformat to use when parsing "lines". If
5115				not present, then the 'errorformat' option
5116				value is used.
5117			id	get information for the quickfix list with
5118				|quickfix-ID|; zero means the id for the
5119				current list or the list specified by "nr"
5120			idx	index of the current entry in the quickfix
5121				list specified by 'id' or 'nr'.
5122				See |quickfix-index|
5123			items	quickfix list entries
5124			lines	parse a list of lines using 'efm' and return
5125				the resulting entries.  Only a |List| type is
5126				accepted.  The current quickfix list is not
5127				modified. See |quickfix-parse|.
5128			nr	get information for this quickfix list; zero
5129				means the current quickfix list and "$" means
5130				the last quickfix list
5131			qfbufnr number of the buffer displayed in the quickfix
5132				window. Returns 0 if the quickfix buffer is
5133				not present. See |quickfix-buffer|.
5134			size	number of entries in the quickfix list
5135			title	get the list title |quickfix-title|
5136			winid	get the quickfix |window-ID|
5137			all	all of the above quickfix properties
5138		Non-string items in {what} are ignored. To get the value of a
5139		particular item, set it to zero.
5140		If "nr" is not present then the current quickfix list is used.
5141		If both "nr" and a non-zero "id" are specified, then the list
5142		specified by "id" is used.
5143		To get the number of lists in the quickfix stack, set "nr" to
5144		"$" in {what}. The "nr" value in the returned dictionary
5145		contains the quickfix stack size.
5146		When "lines" is specified, all the other items except "efm"
5147		are ignored.  The returned dictionary contains the entry
5148		"items" with the list of entries.
5149
5150		The returned dictionary contains the following entries:
5151			changedtick	total number of changes made to the
5152					list |quickfix-changedtick|
5153			context	quickfix list context. See |quickfix-context|
5154				If not present, set to "".
5155			id	quickfix list ID |quickfix-ID|. If not
5156				present, set to 0.
5157			idx	index of the current entry in the list. If not
5158				present, set to 0.
5159			items	quickfix list entries. If not present, set to
5160				an empty list.
5161			nr	quickfix list number. If not present, set to 0
5162			qfbufnr	number of the buffer displayed in the quickfix
5163				window. If not present, set to 0.
5164			size	number of entries in the quickfix list. If not
5165				present, set to 0.
5166			title	quickfix list title text. If not present, set
5167				to "".
5168			winid	quickfix |window-ID|. If not present, set to 0
5169
5170		Examples (See also |getqflist-examples|): >
5171			:echo getqflist({'all': 1})
5172			:echo getqflist({'nr': 2, 'title': 1})
5173			:echo getqflist({'lines' : ["F1:10:L10"]})
5174<
5175getreg([{regname} [, 1 [, {list}]]])			*getreg()*
5176		The result is a String, which is the contents of register
5177		{regname}.  Example: >
5178			:let cliptext = getreg('*')
5179<		When {regname} was not set the result is an empty string.
5180
5181		getreg('=') returns the last evaluated value of the expression
5182		register.  (For use in maps.)
5183		getreg('=', 1) returns the expression itself, so that it can
5184		be restored with |setreg()|.  For other registers the extra
5185		argument is ignored, thus you can always give it.
5186
5187		If {list} is present and |TRUE|, the result type is changed
5188		to |List|. Each list item is one text line. Use it if you care
5189		about zero bytes possibly present inside register: without
5190		third argument both NLs and zero bytes are represented as NLs
5191		(see |NL-used-for-Nul|).
5192		When the register was not set an empty list is returned.
5193
5194		If {regname} is not specified, |v:register| is used.
5195
5196
5197getregtype([{regname}])					*getregtype()*
5198		The result is a String, which is type of register {regname}.
5199		The value will be one of:
5200		    "v"			for |characterwise| text
5201		    "V"			for |linewise| text
5202		    "<CTRL-V>{width}"	for |blockwise-visual| text
5203		    ""			for an empty or unknown register
5204		<CTRL-V> is one character with value 0x16.
5205		If {regname} is not specified, |v:register| is used.
5206
5207gettabinfo([{arg}])					*gettabinfo()*
5208		If {arg} is not specified, then information about all the tab
5209		pages is returned as a List. Each List item is a Dictionary.
5210		Otherwise, {arg} specifies the tab page number and information
5211		about that one is returned.  If the tab page does not exist an
5212		empty List is returned.
5213
5214		Each List item is a Dictionary with the following entries:
5215			tabnr		tab page number.
5216			variables	a reference to the dictionary with
5217					tabpage-local variables
5218			windows		List of |window-ID|s in the tab page.
5219
5220gettabvar({tabnr}, {varname} [, {def}])				*gettabvar()*
5221		Get the value of a tab-local variable {varname} in tab page
5222		{tabnr}. |t:var|
5223		Tabs are numbered starting with one.
5224		When {varname} is empty a dictionary with all tab-local
5225		variables is returned.
5226		Note that the name without "t:" must be used.
5227		When the tab or variable doesn't exist {def} or an empty
5228		string is returned, there is no error message.
5229
5230gettabwinvar({tabnr}, {winnr}, {varname} [, {def}])		*gettabwinvar()*
5231		Get the value of window-local variable {varname} in window
5232		{winnr} in tab page {tabnr}.
5233		When {varname} is empty a dictionary with all window-local
5234		variables is returned.
5235		When {varname} is equal to "&" get the values of all
5236		window-local options in a Dictionary.
5237		Otherwise, when {varname} starts with "&" get the value of a
5238		window-local option.
5239		Note that {varname} must be the name without "w:".
5240		Tabs are numbered starting with one.  For the current tabpage
5241		use |getwinvar()|.
5242		{winnr} can be the window number or the |window-ID|.
5243		When {winnr} is zero the current window is used.
5244		This also works for a global option, buffer-local option and
5245		window-local option, but it doesn't work for a global variable
5246		or buffer-local variable.
5247		When the tab, window or variable doesn't exist {def} or an
5248		empty string is returned, there is no error message.
5249		Examples: >
5250			:let list_is_on = gettabwinvar(1, 2, '&list')
5251			:echo "myvar = " . gettabwinvar(3, 1, 'myvar')
5252<
5253		To obtain all window-local variables use: >
5254			gettabwinvar({tabnr}, {winnr}, '&')
5255
5256gettagstack([{nr}])					*gettagstack()*
5257		The result is a Dict, which is the tag stack of window {nr}.
5258		{nr} can be the window number or the |window-ID|.
5259		When {nr} is not specified, the current window is used.
5260		When window {nr} doesn't exist, an empty Dict is returned.
5261
5262		The returned dictionary contains the following entries:
5263			curidx		Current index in the stack. When at
5264					top of the stack, set to (length + 1).
5265					Index of bottom of the stack is 1.
5266			items		List of items in the stack. Each item
5267					is a dictionary containing the
5268					entries described below.
5269			length		Number of entries in the stack.
5270
5271		Each item in the stack is a dictionary with the following
5272		entries:
5273			bufnr		buffer number of the current jump
5274			from		cursor position before the tag jump.
5275					See |getpos()| for the format of the
5276					returned list.
5277			matchnr		current matching tag number. Used when
5278					multiple matching tags are found for a
5279					name.
5280			tagname		name of the tag
5281
5282		See |tagstack| for more information about the tag stack.
5283
5284getwininfo([{winid}])					*getwininfo()*
5285		Returns information about windows as a List with Dictionaries.
5286
5287		If {winid} is given Information about the window with that ID
5288		is returned.  If the window does not exist the result is an
5289		empty list.
5290
5291		Without {winid} information about all the windows in all the
5292		tab pages is returned.
5293
5294		Each List item is a Dictionary with the following entries:
5295			botline		last displayed buffer line
5296			bufnr		number of buffer in the window
5297			height		window height (excluding winbar)
5298			loclist		1 if showing a location list
5299					{only with the +quickfix feature}
5300			quickfix	1 if quickfix or location list window
5301					{only with the +quickfix feature}
5302			terminal	1 if a terminal window
5303					{only with the +terminal feature}
5304			tabnr		tab page number
5305			topline		first displayed buffer line
5306			variables	a reference to the dictionary with
5307					window-local variables
5308			width		window width
5309			winbar		1 if the window has a toolbar, 0
5310					otherwise
5311			wincol		leftmost screen column of the window,
5312					col from |win_screenpos()|
5313			winid		|window-ID|
5314			winnr		window number
5315			winrow		topmost screen column of the window,
5316					row from |win_screenpos()|
5317
5318getwinpos([{timeout}])					*getwinpos()*
5319		The result is a list with two numbers, the result of
5320		getwinposx() and getwinposy() combined:
5321			[x-pos, y-pos]
5322		{timeout} can be used to specify how long to wait in msec for
5323		a response from the terminal.  When omitted 100 msec is used.
5324		Use a longer time for a remote terminal.
5325		When using a value less than 10 and no response is received
5326		within that time, a previously reported position is returned,
5327		if available.  This can be used to poll for the position and
5328		do some work in the meantime: >
5329			while 1
5330			  let res = getwinpos(1)
5331			  if res[0] >= 0
5332			    break
5333			  endif
5334			  " Do some work here
5335			endwhile
5336<
5337							*getwinposx()*
5338getwinposx()	The result is a Number, which is the X coordinate in pixels of
5339		the left hand side of the GUI Vim window. Also works for an
5340		xterm (uses a timeout of 100 msec).
5341		The result will be -1 if the information is not available.
5342		The value can be used with `:winpos`.
5343
5344							*getwinposy()*
5345getwinposy()	The result is a Number, which is the Y coordinate in pixels of
5346		the top of the GUI Vim window.  Also works for an xterm (uses
5347		a timeout of 100 msec).
5348		The result will be -1 if the information is not available.
5349		The value can be used with `:winpos`.
5350
5351getwinvar({winnr}, {varname} [, {def}])				*getwinvar()*
5352		Like |gettabwinvar()| for the current tabpage.
5353		Examples: >
5354			:let list_is_on = getwinvar(2, '&list')
5355			:echo "myvar = " . getwinvar(1, 'myvar')
5356<
5357glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])		*glob()*
5358		Expand the file wildcards in {expr}.  See |wildcards| for the
5359		use of special characters.
5360
5361		Unless the optional {nosuf} argument is given and is |TRUE|,
5362		the 'suffixes' and 'wildignore' options apply: Names matching
5363		one of the patterns in 'wildignore' will be skipped and
5364		'suffixes' affect the ordering of matches.
5365		'wildignorecase' always applies.
5366
5367		When {list} is present and it is |TRUE| the result is a List
5368		with all matching files. The advantage of using a List is,
5369		you also get filenames containing newlines correctly.
5370		Otherwise the result is a String and when there are several
5371		matches, they are separated by <NL> characters.
5372
5373		If the expansion fails, the result is an empty String or List.
5374
5375		A name for a non-existing file is not included.  A symbolic
5376		link is only included if it points to an existing file.
5377		However, when the {alllinks} argument is present and it is
5378		|TRUE| then all symbolic links are included.
5379
5380		For most systems backticks can be used to get files names from
5381		any external command.  Example: >
5382			:let tagfiles = glob("`find . -name tags -print`")
5383			:let &tags = substitute(tagfiles, "\n", ",", "g")
5384<		The result of the program inside the backticks should be one
5385		item per line.  Spaces inside an item are allowed.
5386
5387		See |expand()| for expanding special Vim variables.  See
5388		|system()| for getting the raw output of an external command.
5389
5390glob2regpat({expr})					 *glob2regpat()*
5391		Convert a file pattern, as used by glob(), into a search
5392		pattern.  The result can be used to match with a string that
5393		is a file name.  E.g. >
5394			if filename =~ glob2regpat('Make*.mak')
5395<		This is equivalent to: >
5396			if filename =~ '^Make.*\.mak$'
5397<		When {expr} is an empty string the result is "^$", match an
5398		empty string.
5399		Note that the result depends on the system.  On MS-Windows
5400		a backslash usually means a path separator.
5401
5402								*globpath()*
5403globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
5404		Perform glob() on all directories in {path} and concatenate
5405		the results.  Example: >
5406			:echo globpath(&rtp, "syntax/c.vim")
5407<
5408		{path} is a comma-separated list of directory names.  Each
5409		directory name is prepended to {expr} and expanded like with
5410		|glob()|.  A path separator is inserted when needed.
5411		To add a comma inside a directory name escape it with a
5412		backslash.  Note that on MS-Windows a directory may have a
5413		trailing backslash, remove it if you put a comma after it.
5414		If the expansion fails for one of the directories, there is no
5415		error message.
5416
5417		Unless the optional {nosuf} argument is given and is |TRUE|,
5418		the 'suffixes' and 'wildignore' options apply: Names matching
5419		one of the patterns in 'wildignore' will be skipped and
5420		'suffixes' affect the ordering of matches.
5421
5422		When {list} is present and it is |TRUE| the result is a List
5423		with all matching files. The advantage of using a List is, you
5424		also get filenames containing newlines correctly. Otherwise
5425		the result is a String and when there are several matches,
5426		they are separated by <NL> characters.  Example: >
5427			:echo globpath(&rtp, "syntax/c.vim", 0, 1)
5428<
5429		{alllinks} is used as with |glob()|.
5430
5431		The "**" item can be used to search in a directory tree.
5432		For example, to find all "README.txt" files in the directories
5433		in 'runtimepath' and below: >
5434			:echo globpath(&rtp, "**/README.txt")
5435<		Upwards search and limiting the depth of "**" is not
5436		supported, thus using 'path' will not always work properly.
5437
5438							*has()*
5439has({feature})	The result is a Number, which is 1 if the feature {feature} is
5440		supported, zero otherwise.  The {feature} argument is a
5441		string.  See |feature-list| below.
5442		Also see |exists()|.
5443
5444
5445has_key({dict}, {key})					*has_key()*
5446		The result is a Number, which is 1 if |Dictionary| {dict} has
5447		an entry with key {key}.  Zero otherwise.
5448
5449haslocaldir([{winnr} [, {tabnr}]])			*haslocaldir()*
5450		The result is a Number, which is 1 when the window has set a
5451		local path via |:lcd|, and 0 otherwise.
5452
5453		Without arguments use the current window.
5454		With {winnr} use this window in the current tab page.
5455		With {winnr} and {tabnr} use the window in the specified tab
5456		page.
5457		{winnr} can be the window number or the |window-ID|.
5458		Return 0 if the arguments are invalid.
5459
5460hasmapto({what} [, {mode} [, {abbr}]])			*hasmapto()*
5461		The result is a Number, which is 1 if there is a mapping that
5462		contains {what} in somewhere in the rhs (what it is mapped to)
5463		and this mapping exists in one of the modes indicated by
5464		{mode}.
5465		When {abbr} is there and it is |TRUE| use abbreviations
5466		instead of mappings.  Don't forget to specify Insert and/or
5467		Command-line mode.
5468		Both the global mappings and the mappings local to the current
5469		buffer are checked for a match.
5470		If no matching mapping is found 0 is returned.
5471		The following characters are recognized in {mode}:
5472			n	Normal mode
5473			v	Visual mode
5474			o	Operator-pending mode
5475			i	Insert mode
5476			l	Language-Argument ("r", "f", "t", etc.)
5477			c	Command-line mode
5478		When {mode} is omitted, "nvo" is used.
5479
5480		This function is useful to check if a mapping already exists
5481		to a function in a Vim script.  Example: >
5482			:if !hasmapto('\ABCdoit')
5483			:   map <Leader>d \ABCdoit
5484			:endif
5485<		This installs the mapping to "\ABCdoit" only if there isn't
5486		already a mapping to "\ABCdoit".
5487
5488histadd({history}, {item})				*histadd()*
5489		Add the String {item} to the history {history} which can be
5490		one of:					*hist-names*
5491			"cmd"	 or ":"	  command line history
5492			"search" or "/"   search pattern history
5493			"expr"	 or "="   typed expression history
5494			"input"  or "@"	  input line history
5495			"debug"  or ">"   debug command history
5496			empty		  the current or last used history
5497		The {history} string does not need to be the whole name, one
5498		character is sufficient.
5499		If {item} does already exist in the history, it will be
5500		shifted to become the newest entry.
5501		The result is a Number: 1 if the operation was successful,
5502		otherwise 0 is returned.
5503
5504		Example: >
5505			:call histadd("input", strftime("%Y %b %d"))
5506			:let date=input("Enter date: ")
5507<		This function is not available in the |sandbox|.
5508
5509histdel({history} [, {item}])				*histdel()*
5510		Clear {history}, i.e. delete all its entries.  See |hist-names|
5511		for the possible values of {history}.
5512
5513		If the parameter {item} evaluates to a String, it is used as a
5514		regular expression.  All entries matching that expression will
5515		be removed from the history (if there are any).
5516		Upper/lowercase must match, unless "\c" is used |/\c|.
5517		If {item} evaluates to a Number, it will be interpreted as
5518		an index, see |:history-indexing|.  The respective entry will
5519		be removed if it exists.
5520
5521		The result is a Number: 1 for a successful operation,
5522		otherwise 0 is returned.
5523
5524		Examples:
5525		Clear expression register history: >
5526			:call histdel("expr")
5527<
5528		Remove all entries starting with "*" from the search history: >
5529			:call histdel("/", '^\*')
5530<
5531		The following three are equivalent: >
5532			:call histdel("search", histnr("search"))
5533			:call histdel("search", -1)
5534			:call histdel("search", '^'.histget("search", -1).'$')
5535<
5536		To delete the last search pattern and use the last-but-one for
5537		the "n" command and 'hlsearch': >
5538			:call histdel("search", -1)
5539			:let @/ = histget("search", -1)
5540
5541histget({history} [, {index}])				*histget()*
5542		The result is a String, the entry with Number {index} from
5543		{history}.  See |hist-names| for the possible values of
5544		{history}, and |:history-indexing| for {index}.  If there is
5545		no such entry, an empty String is returned.  When {index} is
5546		omitted, the most recent item from the history is used.
5547
5548		Examples:
5549		Redo the second last search from history. >
5550			:execute '/' . histget("search", -2)
5551
5552<		Define an Ex command ":H {num}" that supports re-execution of
5553		the {num}th entry from the output of |:history|. >
5554			:command -nargs=1 H execute histget("cmd", 0+<args>)
5555<
5556histnr({history})					*histnr()*
5557		The result is the Number of the current entry in {history}.
5558		See |hist-names| for the possible values of {history}.
5559		If an error occurred, -1 is returned.
5560
5561		Example: >
5562			:let inp_index = histnr("expr")
5563<
5564hlexists({name})					*hlexists()*
5565		The result is a Number, which is non-zero if a highlight group
5566		called {name} exists.  This is when the group has been
5567		defined in some way.  Not necessarily when highlighting has
5568		been defined for it, it may also have been used for a syntax
5569		item.
5570							*highlight_exists()*
5571		Obsolete name: highlight_exists().
5572
5573							*hlID()*
5574hlID({name})	The result is a Number, which is the ID of the highlight group
5575		with name {name}.  When the highlight group doesn't exist,
5576		zero is returned.
5577		This can be used to retrieve information about the highlight
5578		group.  For example, to get the background color of the
5579		"Comment" group: >
5580	:echo synIDattr(synIDtrans(hlID("Comment")), "bg")
5581<							*highlightID()*
5582		Obsolete name: highlightID().
5583
5584hostname()						*hostname()*
5585		The result is a String, which is the name of the machine on
5586		which Vim is currently running.  Machine names greater than
5587		256 characters long are truncated.
5588
5589iconv({expr}, {from}, {to})				*iconv()*
5590		The result is a String, which is the text {expr} converted
5591		from encoding {from} to encoding {to}.
5592		When the conversion completely fails an empty string is
5593		returned.  When some characters could not be converted they
5594		are replaced with "?".
5595		The encoding names are whatever the iconv() library function
5596		can accept, see ":!man 3 iconv".
5597		Most conversions require Vim to be compiled with the |+iconv|
5598		feature.  Otherwise only UTF-8 to latin1 conversion and back
5599		can be done.
5600		This can be used to display messages with special characters,
5601		no matter what 'encoding' is set to.  Write the message in
5602		UTF-8 and use: >
5603			echo iconv(utf8_str, "utf-8", &enc)
5604<		Note that Vim uses UTF-8 for all Unicode encodings, conversion
5605		from/to UCS-2 is automatically changed to use UTF-8.  You
5606		cannot use UCS-2 in a string anyway, because of the NUL bytes.
5607
5608							*indent()*
5609indent({lnum})	The result is a Number, which is indent of line {lnum} in the
5610		current buffer.  The indent is counted in spaces, the value
5611		of 'tabstop' is relevant.  {lnum} is used just like in
5612		|getline()|.
5613		When {lnum} is invalid -1 is returned.
5614
5615
5616index({object}, {expr} [, {start} [, {ic}]])			*index()*
5617		If {object} is a |List| return the lowest index where the item
5618		has a value equal to {expr}.  There is no automatic
5619		conversion, so the String "4" is different from the Number 4.
5620		And the number 4 is different from the Float 4.0.  The value
5621		of 'ignorecase' is not used here, case always matters.
5622
5623		If {object} is |Blob| return the lowest index where the byte
5624		value is equal to {expr}.
5625
5626		If {start} is given then start looking at the item with index
5627		{start} (may be negative for an item relative to the end).
5628		When {ic} is given and it is |TRUE|, ignore case.  Otherwise
5629		case must match.
5630		-1 is returned when {expr} is not found in {object}.
5631		Example: >
5632			:let idx = index(words, "the")
5633			:if index(numbers, 123) >= 0
5634
5635
5636input({prompt} [, {text} [, {completion}]])		*input()*
5637		The result is a String, which is whatever the user typed on
5638		the command-line.  The {prompt} argument is either a prompt
5639		string, or a blank string (for no prompt).  A '\n' can be used
5640		in the prompt to start a new line.
5641		The highlighting set with |:echohl| is used for the prompt.
5642		The input is entered just like a command-line, with the same
5643		editing commands and mappings.  There is a separate history
5644		for lines typed for input().
5645		Example: >
5646			:if input("Coffee or beer? ") == "beer"
5647			:  echo "Cheers!"
5648			:endif
5649<
5650		If the optional {text} argument is present and not empty, this
5651		is used for the default reply, as if the user typed this.
5652		Example: >
5653			:let color = input("Color? ", "white")
5654
5655<		The optional {completion} argument specifies the type of
5656		completion supported for the input.  Without it completion is
5657		not performed.  The supported completion types are the same as
5658		that can be supplied to a user-defined command using the
5659		"-complete=" argument.  Refer to |:command-completion| for
5660		more information.  Example: >
5661			let fname = input("File: ", "", "file")
5662<
5663		NOTE: This function must not be used in a startup file, for
5664		the versions that only run in GUI mode (e.g., the Win32 GUI).
5665		Note: When input() is called from within a mapping it will
5666		consume remaining characters from that mapping, because a
5667		mapping is handled like the characters were typed.
5668		Use |inputsave()| before input() and |inputrestore()|
5669		after input() to avoid that.  Another solution is to avoid
5670		that further characters follow in the mapping, e.g., by using
5671		|:execute| or |:normal|.
5672
5673		Example with a mapping: >
5674			:nmap \x :call GetFoo()<CR>:exe "/" . Foo<CR>
5675			:function GetFoo()
5676			:  call inputsave()
5677			:  let g:Foo = input("enter search pattern: ")
5678			:  call inputrestore()
5679			:endfunction
5680
5681inputdialog({prompt} [, {text} [, {cancelreturn}]])		*inputdialog()*
5682		Like |input()|, but when the GUI is running and text dialogs
5683		are supported, a dialog window pops up to input the text.
5684		Example: >
5685		   :let n = inputdialog("value for shiftwidth", shiftwidth())
5686		   :if n != ""
5687		   :  let &sw = n
5688		   :endif
5689<		When the dialog is cancelled {cancelreturn} is returned.  When
5690		omitted an empty string is returned.
5691		Hitting <Enter> works like pressing the OK button.  Hitting
5692		<Esc> works like pressing the Cancel button.
5693		NOTE: Command-line completion is not supported.
5694
5695inputlist({textlist})					*inputlist()*
5696		{textlist} must be a |List| of strings.  This |List| is
5697		displayed, one string per line.  The user will be prompted to
5698		enter a number, which is returned.
5699		The user can also select an item by clicking on it with the
5700		mouse.  For the first string 0 is returned.  When clicking
5701		above the first item a negative number is returned.  When
5702		clicking on the prompt one more than the length of {textlist}
5703		is returned.
5704		Make sure {textlist} has less than 'lines' entries, otherwise
5705		it won't work.  It's a good idea to put the entry number at
5706		the start of the string.  And put a prompt in the first item.
5707		Example: >
5708			let color = inputlist(['Select color:', '1. red',
5709				\ '2. green', '3. blue'])
5710
5711inputrestore()						*inputrestore()*
5712		Restore typeahead that was saved with a previous |inputsave()|.
5713		Should be called the same number of times inputsave() is
5714		called.  Calling it more often is harmless though.
5715		Returns 1 when there is nothing to restore, 0 otherwise.
5716
5717inputsave()						*inputsave()*
5718		Preserve typeahead (also from mappings) and clear it, so that
5719		a following prompt gets input from the user.  Should be
5720		followed by a matching inputrestore() after the prompt.  Can
5721		be used several times, in which case there must be just as
5722		many inputrestore() calls.
5723		Returns 1 when out of memory, 0 otherwise.
5724
5725inputsecret({prompt} [, {text}])			*inputsecret()*
5726		This function acts much like the |input()| function with but
5727		two exceptions:
5728		a) the user's response will be displayed as a sequence of
5729		asterisks ("*") thereby keeping the entry secret, and
5730		b) the user's response will not be recorded on the input
5731		|history| stack.
5732		The result is a String, which is whatever the user actually
5733		typed on the command-line in response to the issued prompt.
5734		NOTE: Command-line completion is not supported.
5735
5736insert({object}, {item} [, {idx}])			*insert()*
5737		When {object} is a |List| or a |Blob| insert {item} at the start
5738		of it.
5739
5740		If {idx} is specified insert {item} before the item with index
5741		{idx}.  If {idx} is zero it goes before the first item, just
5742		like omitting {idx}.  A negative {idx} is also possible, see
5743		|list-index|.  -1 inserts just before the last item.
5744
5745		Returns the resulting |List| or |Blob|.  Examples: >
5746			:let mylist = insert([2, 3, 5], 1)
5747			:call insert(mylist, 4, -1)
5748			:call insert(mylist, 6, len(mylist))
5749<		The last example can be done simpler with |add()|.
5750		Note that when {item} is a |List| it is inserted as a single
5751		item.  Use |extend()| to concatenate |Lists|.
5752
5753invert({expr})						*invert()*
5754		Bitwise invert.  The argument is converted to a number.  A
5755		List, Dict or Float argument causes an error.  Example: >
5756			:let bits = invert(bits)
5757
5758isdirectory({directory})				*isdirectory()*
5759		The result is a Number, which is |TRUE| when a directory
5760		with the name {directory} exists.  If {directory} doesn't
5761		exist, or isn't a directory, the result is |FALSE|.  {directory}
5762		is any expression, which is used as a String.
5763
5764islocked({expr})					*islocked()* *E786*
5765		The result is a Number, which is |TRUE| when {expr} is the
5766		name of a locked variable.
5767		{expr} must be the name of a variable, |List| item or
5768		|Dictionary| entry, not the variable itself!  Example: >
5769			:let alist = [0, ['a', 'b'], 2, 3]
5770			:lockvar 1 alist
5771			:echo islocked('alist')		" 1
5772			:echo islocked('alist[1]')	" 0
5773
5774<		When {expr} is a variable that does not exist you get an error
5775		message.  Use |exists()| to check for existence.
5776
5777isnan({expr})						*isnan()*
5778		Return |TRUE| if {expr} is a float with value NaN. >
5779			echo isnan(0.0 / 0.0)
5780<			1 ~
5781
5782		{only available when compiled with the |+float| feature}
5783
5784items({dict})						*items()*
5785		Return a |List| with all the key-value pairs of {dict}.  Each
5786		|List| item is a list with two items: the key of a {dict}
5787		entry and the value of this entry.  The |List| is in arbitrary
5788		order.  Also see |keys()| and |values()|.
5789		Example: >
5790			for [key, value] in items(mydict)
5791			   echo key . ': ' . value
5792			endfor
5793
5794job_getchannel({job})					 *job_getchannel()*
5795		Get the channel handle that {job} is using.
5796		To check if the job has no channel: >
5797			if string(job_getchannel()) == 'channel fail'
5798<
5799		{only available when compiled with the |+job| feature}
5800
5801job_info([{job}])					*job_info()*
5802		Returns a Dictionary with information about {job}:
5803		   "status"	what |job_status()| returns
5804		   "channel"	what |job_getchannel()| returns
5805		   "cmd"	List of command arguments used to start the job
5806		   "process"	process ID
5807		   "tty_in"	terminal input name, empty when none
5808		   "tty_out"	terminal output name, empty when none
5809		   "exitval"	only valid when "status" is "dead"
5810		   "exit_cb"	function to be called on exit
5811		   "stoponexit"	|job-stoponexit|
5812
5813		   Only in Unix:
5814		   "termsig"	the signal which terminated the process
5815				(See |job_stop()| for the values)
5816				only valid when "status" is "dead"
5817
5818		   Only in MS-Windows:
5819		   "tty_type"	Type of virtual console in use.
5820				Values are "winpty" or "conpty".
5821				See 'termwintype'.
5822
5823		Without any arguments, returns a List with all Job objects.
5824
5825job_setoptions({job}, {options})			*job_setoptions()*
5826		Change options for {job}.  Supported are:
5827		   "stoponexit"	|job-stoponexit|
5828		   "exit_cb"	|job-exit_cb|
5829
5830job_start({command} [, {options}])			*job_start()*
5831		Start a job and return a Job object.  Unlike |system()| and
5832		|:!cmd| this does not wait for the job to finish.
5833		To start a job in a terminal window see |term_start()|.
5834
5835		If the job fails to start then |job_status()| on the returned
5836		Job object results in "fail" and none of the callbacks will be
5837		invoked.
5838
5839		{command} can be a String.  This works best on MS-Windows.  On
5840		Unix it is split up in white-separated parts to be passed to
5841		execvp().  Arguments in double quotes can contain white space.
5842
5843		{command} can be a List, where the first item is the executable
5844		and further items are the arguments.  All items are converted
5845		to String.  This works best on Unix.
5846
5847		On MS-Windows, job_start() makes a GUI application hidden. If
5848		want to show it, Use |:!start| instead.
5849
5850		The command is executed directly, not through a shell, the
5851		'shell' option is not used.  To use the shell: >
5852	let job = job_start(["/bin/sh", "-c", "echo hello"])
5853<		Or: >
5854	let job = job_start('/bin/sh -c "echo hello"')
5855<		Note that this will start two processes, the shell and the
5856		command it executes.  If you don't want this use the "exec"
5857		shell command.
5858
5859		On Unix $PATH is used to search for the executable only when
5860		the command does not contain a slash.
5861
5862		The job will use the same terminal as Vim.  If it reads from
5863		stdin the job and Vim will be fighting over input, that
5864		doesn't work.  Redirect stdin and stdout to avoid problems: >
5865	let job = job_start(['sh', '-c', "myserver </dev/null >/dev/null"])
5866<
5867		The returned Job object can be used to get the status with
5868		|job_status()| and stop the job with |job_stop()|.
5869
5870		Note that the job object will be deleted if there are no
5871		references to it.  This closes the stdin and stderr, which may
5872		cause the job to fail with an error.  To avoid this keep a
5873		reference to the job.  Thus instead of: >
5874	call job_start('my-command')
5875<		use: >
5876	let myjob = job_start('my-command')
5877<		and unlet "myjob" once the job is not needed or is past the
5878		point where it would fail (e.g. when it prints a message on
5879		startup).  Keep in mind that variables local to a function
5880		will cease to exist if the function returns.  Use a
5881		script-local variable if needed: >
5882	let s:myjob = job_start('my-command')
5883<
5884		{options} must be a Dictionary.  It can contain many optional
5885		items, see |job-options|.
5886
5887		{only available when compiled with the |+job| feature}
5888
5889job_status({job})					*job_status()* *E916*
5890		Returns a String with the status of {job}:
5891			"run"	job is running
5892			"fail"	job failed to start
5893			"dead"	job died or was stopped after running
5894
5895		On Unix a non-existing command results in "dead" instead of
5896		"fail", because a fork happens before the failure can be
5897		detected.
5898
5899		If an exit callback was set with the "exit_cb" option and the
5900		job is now detected to be "dead" the callback will be invoked.
5901
5902		For more information see |job_info()|.
5903
5904		{only available when compiled with the |+job| feature}
5905
5906job_stop({job} [, {how}])					*job_stop()*
5907		Stop the {job}.  This can also be used to signal the job.
5908
5909		When {how} is omitted or is "term" the job will be terminated.
5910		For Unix SIGTERM is sent.  On MS-Windows the job will be
5911		terminated forcedly (there is no "gentle" way).
5912		This goes to the process group, thus children may also be
5913		affected.
5914
5915		Effect for Unix:
5916			"term"	 SIGTERM (default)
5917			"hup"	 SIGHUP
5918			"quit"	 SIGQUIT
5919			"int"	 SIGINT
5920			"kill"	 SIGKILL (strongest way to stop)
5921			number	 signal with that number
5922
5923		Effect for MS-Windows:
5924			"term"	 terminate process forcedly (default)
5925			"hup"	 CTRL_BREAK
5926			"quit"	 CTRL_BREAK
5927			"int"	 CTRL_C
5928			"kill"	 terminate process forcedly
5929			Others	 CTRL_BREAK
5930
5931		On Unix the signal is sent to the process group.  This means
5932		that when the job is "sh -c command" it affects both the shell
5933		and the command.
5934
5935		The result is a Number: 1 if the operation could be executed,
5936		0 if "how" is not supported on the system.
5937		Note that even when the operation was executed, whether the
5938		job was actually stopped needs to be checked with
5939		|job_status()|.
5940
5941		If the status of the job is "dead", the signal will not be
5942		sent.  This is to avoid to stop the wrong job (esp. on Unix,
5943		where process numbers are recycled).
5944
5945		When using "kill" Vim will assume the job will die and close
5946		the channel.
5947
5948		{only available when compiled with the |+job| feature}
5949
5950join({list} [, {sep}])					*join()*
5951		Join the items in {list} together into one String.
5952		When {sep} is specified it is put in between the items.  If
5953		{sep} is omitted a single space is used.
5954		Note that {sep} is not added at the end.  You might want to
5955		add it there too: >
5956			let lines = join(mylist, "\n") . "\n"
5957<		String items are used as-is.  |Lists| and |Dictionaries| are
5958		converted into a string like with |string()|.
5959		The opposite function is |split()|.
5960
5961js_decode({string})					*js_decode()*
5962		This is similar to |json_decode()| with these differences:
5963		- Object key names do not have to be in quotes.
5964		- Strings can be in single quotes.
5965		- Empty items in an array (between two commas) are allowed and
5966		  result in v:none items.
5967
5968js_encode({expr})					*js_encode()*
5969		This is similar to |json_encode()| with these differences:
5970		- Object key names are not in quotes.
5971		- v:none items in an array result in an empty item between
5972		  commas.
5973		For example, the Vim object:
5974			[1,v:none,{"one":1},v:none] ~
5975		Will be encoded as:
5976			[1,,{one:1},,] ~
5977		While json_encode() would produce:
5978			[1,null,{"one":1},null] ~
5979		This encoding is valid for JavaScript. It is more efficient
5980		than JSON, especially when using an array with optional items.
5981
5982
5983json_decode({string})					*json_decode()*
5984		This parses a JSON formatted string and returns the equivalent
5985		in Vim values.  See |json_encode()| for the relation between
5986		JSON and Vim values.
5987		The decoding is permissive:
5988		- A trailing comma in an array and object is ignored, e.g.
5989		  "[1, 2, ]" is the same as "[1, 2]".
5990		- Integer keys are accepted in objects, e.g. {1:2} is the
5991		  same as {"1":2}.
5992		- More floating point numbers are recognized, e.g. "1." for
5993		  "1.0", or "001.2" for "1.2". Special floating point values
5994		  "Infinity", "-Infinity" and "NaN" (capitalization ignored)
5995		  are accepted.
5996		- Leading zeroes in integer numbers are ignored, e.g. "012"
5997		  for "12" or "-012" for "-12".
5998		- Capitalization is ignored in literal names null, true or
5999		  false, e.g. "NULL" for "null", "True" for "true".
6000		- Control characters U+0000 through U+001F which are not
6001		  escaped in strings are accepted, e.g. "	" (tab
6002		  character in string) for "\t".
6003		- An empty JSON expression or made of only spaces is accepted
6004		  and results in v:none.
6005		- Backslash in an invalid 2-character sequence escape is
6006		  ignored, e.g. "\a" is decoded as "a".
6007		- A correct surrogate pair in JSON strings should normally be
6008		  a 12 character sequence such as "\uD834\uDD1E", but
6009		  json_decode() silently accepts truncated surrogate pairs
6010		  such as "\uD834" or "\uD834\u"
6011								*E938*
6012		A duplicate key in an object, valid in rfc7159, is not
6013		accepted by json_decode() as the result must be a valid Vim
6014		type, e.g. this fails: {"a":"b", "a":"c"}
6015
6016
6017json_encode({expr})					*json_encode()*
6018		Encode {expr} as JSON and return this as a string.
6019		The encoding is specified in:
6020		https://tools.ietf.org/html/rfc7159.html
6021		Vim values are converted as follows:
6022		   |Number|		decimal number
6023		   |Float|		floating point number
6024		   Float nan		"NaN"
6025		   Float inf		"Infinity"
6026		   Float -inf		"-Infinity"
6027		   |String|		in double quotes (possibly null)
6028		   |Funcref|		not possible, error
6029		   |List|		as an array (possibly null); when
6030					used recursively: []
6031		   |Dict|		as an object (possibly null); when
6032					used recursively: {}
6033		   |Blob|		as an array of the individual bytes
6034		   v:false		"false"
6035		   v:true		"true"
6036		   v:none		"null"
6037		   v:null		"null"
6038		Note that NaN and Infinity are passed on as values.  This is
6039		missing in the JSON standard, but several implementations do
6040		allow it.  If not then you will get an error.
6041
6042keys({dict})						*keys()*
6043		Return a |List| with all the keys of {dict}.  The |List| is in
6044		arbitrary order.  Also see |items()| and |values()|.
6045
6046							*len()* *E701*
6047len({expr})	The result is a Number, which is the length of the argument.
6048		When {expr} is a String or a Number the length in bytes is
6049		used, as with |strlen()|.
6050		When {expr} is a |List| the number of items in the |List| is
6051		returned.
6052		When {expr} is a |Blob| the number of bytes is returned.
6053		When {expr} is a |Dictionary| the number of entries in the
6054		|Dictionary| is returned.
6055		Otherwise an error is given.
6056
6057						*libcall()* *E364* *E368*
6058libcall({libname}, {funcname}, {argument})
6059		Call function {funcname} in the run-time library {libname}
6060		with single argument {argument}.
6061		This is useful to call functions in a library that you
6062		especially made to be used with Vim.  Since only one argument
6063		is possible, calling standard library functions is rather
6064		limited.
6065		The result is the String returned by the function.  If the
6066		function returns NULL, this will appear as an empty string ""
6067		to Vim.
6068		If the function returns a number, use libcallnr()!
6069		If {argument} is a number, it is passed to the function as an
6070		int; if {argument} is a string, it is passed as a
6071		null-terminated string.
6072		This function will fail in |restricted-mode|.
6073
6074		libcall() allows you to write your own 'plug-in' extensions to
6075		Vim without having to recompile the program.  It is NOT a
6076		means to call system functions!  If you try to do so Vim will
6077		very probably crash.
6078
6079		For Win32, the functions you write must be placed in a DLL
6080		and use the normal C calling convention (NOT Pascal which is
6081		used in Windows System DLLs).  The function must take exactly
6082		one parameter, either a character pointer or a long integer,
6083		and must return a character pointer or NULL.  The character
6084		pointer returned must point to memory that will remain valid
6085		after the function has returned (e.g. in static data in the
6086		DLL).  If it points to allocated memory, that memory will
6087		leak away.  Using a static buffer in the function should work,
6088		it's then freed when the DLL is unloaded.
6089
6090		WARNING: If the function returns a non-valid pointer, Vim may
6091		crash!	This also happens if the function returns a number,
6092		because Vim thinks it's a pointer.
6093		For Win32 systems, {libname} should be the filename of the DLL
6094		without the ".DLL" suffix.  A full path is only required if
6095		the DLL is not in the usual places.
6096		For Unix: When compiling your own plugins, remember that the
6097		object code must be compiled as position-independent ('PIC').
6098		{only in Win32 and some Unix versions, when the |+libcall|
6099		feature is present}
6100		Examples: >
6101			:echo libcall("libc.so", "getenv", "HOME")
6102<
6103							*libcallnr()*
6104libcallnr({libname}, {funcname}, {argument})
6105		Just like |libcall()|, but used for a function that returns an
6106		int instead of a string.
6107		{only in Win32 on some Unix versions, when the |+libcall|
6108		feature is present}
6109		Examples: >
6110			:echo libcallnr("/usr/lib/libc.so", "getpid", "")
6111			:call libcallnr("libc.so", "printf", "Hello World!\n")
6112			:call libcallnr("libc.so", "sleep", 10)
6113<
6114							*line()*
6115line({expr})	The result is a Number, which is the line number of the file
6116		position given with {expr}.  The accepted positions are:
6117		    .	    the cursor position
6118		    $	    the last line in the current buffer
6119		    'x	    position of mark x (if the mark is not set, 0 is
6120			    returned)
6121		    w0	    first line visible in current window (one if the
6122			    display isn't updated, e.g. in silent Ex mode)
6123		    w$	    last line visible in current window (this is one
6124			    less than "w0" if no lines are visible)
6125		    v	    In Visual mode: the start of the Visual area (the
6126			    cursor is the end).  When not in Visual mode
6127			    returns the cursor position.  Differs from |'<| in
6128			    that it's updated right away.
6129		Note that a mark in another file can be used.  The line number
6130		then applies to another buffer.
6131		To get the column number use |col()|.  To get both use
6132		|getpos()|.
6133		Examples: >
6134			line(".")		line number of the cursor
6135			line("'t")		line number of mark t
6136			line("'" . marker)	line number of mark marker
6137<
6138		To jump to the last known position when opening a file see
6139		|last-position-jump|.
6140
6141line2byte({lnum})					*line2byte()*
6142		Return the byte count from the start of the buffer for line
6143		{lnum}.  This includes the end-of-line character, depending on
6144		the 'fileformat' option for the current buffer.  The first
6145		line returns 1. 'encoding' matters, 'fileencoding' is ignored.
6146		This can also be used to get the byte count for the line just
6147		below the last line: >
6148			line2byte(line("$") + 1)
6149<		This is the buffer size plus one.  If 'fileencoding' is empty
6150		it is the file size plus one.
6151		When {lnum} is invalid, or the |+byte_offset| feature has been
6152		disabled at compile time, -1 is returned.
6153		Also see |byte2line()|, |go| and |:goto|.
6154
6155lispindent({lnum})					*lispindent()*
6156		Get the amount of indent for line {lnum} according the lisp
6157		indenting rules, as with 'lisp'.
6158		The indent is counted in spaces, the value of 'tabstop' is
6159		relevant.  {lnum} is used just like in |getline()|.
6160		When {lnum} is invalid or Vim was not compiled the
6161		|+lispindent| feature, -1 is returned.
6162
6163localtime()						*localtime()*
6164		Return the current time, measured as seconds since 1st Jan
6165		1970.  See also |strftime()| and |getftime()|.
6166
6167
6168log({expr})						*log()*
6169		Return the natural logarithm (base e) of {expr} as a |Float|.
6170		{expr} must evaluate to a |Float| or a |Number| in the range
6171		(0, inf].
6172		Examples: >
6173			:echo log(10)
6174<			2.302585 >
6175			:echo log(exp(5))
6176<			5.0
6177		{only available when compiled with the |+float| feature}
6178
6179
6180log10({expr})						*log10()*
6181		Return the logarithm of Float {expr} to base 10 as a |Float|.
6182		{expr} must evaluate to a |Float| or a |Number|.
6183		Examples: >
6184			:echo log10(1000)
6185<			3.0 >
6186			:echo log10(0.01)
6187<			-2.0
6188		{only available when compiled with the |+float| feature}
6189
6190luaeval({expr} [, {expr}])					*luaeval()*
6191		Evaluate Lua expression {expr} and return its result converted
6192		to Vim data structures. Second {expr} may hold additional
6193		argument accessible as _A inside first {expr}.
6194		Strings are returned as they are.
6195		Boolean objects are converted to numbers.
6196		Numbers are converted to |Float| values if vim was compiled
6197		with |+float| and to numbers otherwise.
6198		Dictionaries and lists obtained by vim.eval() are returned
6199		as-is.
6200		Other objects are returned as zero without any errors.
6201		See |lua-luaeval| for more details.
6202		{only available when compiled with the |+lua| feature}
6203
6204map({expr1}, {expr2})					*map()*
6205		{expr1} must be a |List| or a |Dictionary|.
6206		Replace each item in {expr1} with the result of evaluating
6207		{expr2}.  {expr2} must be a |string| or |Funcref|.
6208
6209		If {expr2} is a |string|, inside {expr2} |v:val| has the value
6210		of the current item.  For a |Dictionary| |v:key| has the key
6211		of the current item and for a |List| |v:key| has the index of
6212		the current item.
6213		Example: >
6214			:call map(mylist, '"> " . v:val . " <"')
6215<		This puts "> " before and " <" after each item in "mylist".
6216
6217		Note that {expr2} is the result of an expression and is then
6218		used as an expression again.  Often it is good to use a
6219		|literal-string| to avoid having to double backslashes.  You
6220		still have to double ' quotes
6221
6222		If {expr2} is a |Funcref| it is called with two arguments:
6223			1. The key or the index of the current item.
6224			2. the value of the current item.
6225		The function must return the new value of the item. Example
6226		that changes each value by "key-value": >
6227			func KeyValue(key, val)
6228			  return a:key . '-' . a:val
6229			endfunc
6230			call map(myDict, function('KeyValue'))
6231<		It is shorter when using a |lambda|: >
6232			call map(myDict, {key, val -> key . '-' . val})
6233<		If you do not use "val" you can leave it out: >
6234			call map(myDict, {key -> 'item: ' . key})
6235<
6236		The operation is done in-place.  If you want a |List| or
6237		|Dictionary| to remain unmodified make a copy first: >
6238			:let tlist = map(copy(mylist), ' v:val . "\t"')
6239
6240<		Returns {expr1}, the |List| or |Dictionary| that was filtered.
6241		When an error is encountered while evaluating {expr2} no
6242		further items in {expr1} are processed.  When {expr2} is a
6243		Funcref errors inside a function are ignored, unless it was
6244		defined with the "abort" flag.
6245
6246
6247maparg({name} [, {mode} [, {abbr} [, {dict}]]])			*maparg()*
6248		When {dict} is omitted or zero: Return the rhs of mapping
6249		{name} in mode {mode}.  The returned String has special
6250		characters translated like in the output of the ":map" command
6251		listing.
6252
6253		When there is no mapping for {name}, an empty String is
6254		returned.  When the mapping for {name} is empty, then "<Nop>"
6255		is returned.
6256
6257		The {name} can have special key names, like in the ":map"
6258		command.
6259
6260		{mode} can be one of these strings:
6261			"n"	Normal
6262			"v"	Visual (including Select)
6263			"o"	Operator-pending
6264			"i"	Insert
6265			"c"	Cmd-line
6266			"s"	Select
6267			"x"	Visual
6268			"l"	langmap |language-mapping|
6269			"t"	Terminal-Job
6270			""	Normal, Visual and Operator-pending
6271		When {mode} is omitted, the modes for "" are used.
6272
6273		When {abbr} is there and it is |TRUE| use abbreviations
6274		instead of mappings.
6275
6276		When {dict} is there and it is |TRUE| return a dictionary
6277		containing all the information of the mapping with the
6278		following items:
6279		  "lhs"	     The {lhs} of the mapping.
6280		  "rhs"	     The {rhs} of the mapping as typed.
6281		  "silent"   1 for a |:map-silent| mapping, else 0.
6282		  "noremap"  1 if the {rhs} of the mapping is not remappable.
6283		  "expr"     1 for an expression mapping (|:map-<expr>|).
6284		  "buffer"   1 for a buffer local mapping (|:map-local|).
6285		  "mode"     Modes for which the mapping is defined. In
6286			     addition to the modes mentioned above, these
6287			     characters will be used:
6288			     " "     Normal, Visual and Operator-pending
6289			     "!"     Insert and Commandline mode
6290				     (|mapmode-ic|)
6291		  "sid"	     The script local ID, used for <sid> mappings
6292			     (|<SID>|).
6293		  "lnum"     The line number in "sid", zero if unknown.
6294		  "nowait"   Do not wait for other, longer mappings.
6295			     (|:map-<nowait>|).
6296
6297		The mappings local to the current buffer are checked first,
6298		then the global mappings.
6299		This function can be used to map a key even when it's already
6300		mapped, and have it do the original mapping too.  Sketch: >
6301			exe 'nnoremap <Tab> ==' . maparg('<Tab>', 'n')
6302
6303
6304mapcheck({name} [, {mode} [, {abbr}]])			*mapcheck()*
6305		Check if there is a mapping that matches with {name} in mode
6306		{mode}.  See |maparg()| for {mode} and special names in
6307		{name}.
6308		When {abbr} is there and it is |TRUE| use abbreviations
6309		instead of mappings.
6310		A match happens with a mapping that starts with {name} and
6311		with a mapping which is equal to the start of {name}.
6312
6313			matches mapping "a"	"ab"	"abc" ~
6314		   mapcheck("a")	yes	yes	 yes
6315		   mapcheck("abc")	yes	yes	 yes
6316		   mapcheck("ax")	yes	no	 no
6317		   mapcheck("b")	no	no	 no
6318
6319		The difference with maparg() is that mapcheck() finds a
6320		mapping that matches with {name}, while maparg() only finds a
6321		mapping for {name} exactly.
6322		When there is no mapping that starts with {name}, an empty
6323		String is returned.  If there is one, the RHS of that mapping
6324		is returned.  If there are several mappings that start with
6325		{name}, the RHS of one of them is returned.  This will be
6326		"<Nop>" if the RHS is empty.
6327		The mappings local to the current buffer are checked first,
6328		then the global mappings.
6329		This function can be used to check if a mapping can be added
6330		without being ambiguous.  Example: >
6331	:if mapcheck("_vv") == ""
6332	:   map _vv :set guifont=7x13<CR>
6333	:endif
6334<		This avoids adding the "_vv" mapping when there already is a
6335		mapping for "_v" or for "_vvv".
6336
6337match({expr}, {pat} [, {start} [, {count}]])			*match()*
6338		When {expr} is a |List| then this returns the index of the
6339		first item where {pat} matches.  Each item is used as a
6340		String, |Lists| and |Dictionaries| are used as echoed.
6341
6342		Otherwise, {expr} is used as a String.  The result is a
6343		Number, which gives the index (byte offset) in {expr} where
6344		{pat} matches.
6345
6346		A match at the first character or |List| item returns zero.
6347		If there is no match -1 is returned.
6348
6349		For getting submatches see |matchlist()|.
6350		Example: >
6351			:echo match("testing", "ing")	" results in 4
6352			:echo match([1, 'x'], '\a')	" results in 1
6353<		See |string-match| for how {pat} is used.
6354								*strpbrk()*
6355		Vim doesn't have a strpbrk() function.  But you can do: >
6356			:let sepidx = match(line, '[.,;: \t]')
6357<								*strcasestr()*
6358		Vim doesn't have a strcasestr() function.  But you can add
6359		"\c" to the pattern to ignore case: >
6360			:let idx = match(haystack, '\cneedle')
6361<
6362		If {start} is given, the search starts from byte index
6363		{start} in a String or item {start} in a |List|.
6364		The result, however, is still the index counted from the
6365		first character/item.  Example: >
6366			:echo match("testing", "ing", 2)
6367<		result is again "4". >
6368			:echo match("testing", "ing", 4)
6369<		result is again "4". >
6370			:echo match("testing", "t", 2)
6371<		result is "3".
6372		For a String, if {start} > 0 then it is like the string starts
6373		{start} bytes later, thus "^" will match at {start}.  Except
6374		when {count} is given, then it's like matches before the
6375		{start} byte are ignored (this is a bit complicated to keep it
6376		backwards compatible).
6377		For a String, if {start} < 0, it will be set to 0.  For a list
6378		the index is counted from the end.
6379		If {start} is out of range ({start} > strlen({expr}) for a
6380		String or {start} > len({expr}) for a |List|) -1 is returned.
6381
6382		When {count} is given use the {count}'th match.  When a match
6383		is found in a String the search for the next one starts one
6384		character further.  Thus this example results in 1: >
6385			echo match("testing", "..", 0, 2)
6386<		In a |List| the search continues in the next item.
6387		Note that when {count} is added the way {start} works changes,
6388		see above.
6389
6390		See |pattern| for the patterns that are accepted.
6391		The 'ignorecase' option is used to set the ignore-caseness of
6392		the pattern.  'smartcase' is NOT used.  The matching is always
6393		done like 'magic' is set and 'cpoptions' is empty.
6394
6395				*matchadd()* *E798* *E799* *E801* *E957*
6396matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
6397		Defines a pattern to be highlighted in the current window (a
6398		"match").  It will be highlighted with {group}.  Returns an
6399		identification number (ID), which can be used to delete the
6400		match using |matchdelete()|.
6401		Matching is case sensitive and magic, unless case sensitivity
6402		or magicness are explicitly overridden in {pattern}.  The
6403		'magic', 'smartcase' and 'ignorecase' options are not used.
6404		The "Conceal" value is special, it causes the match to be
6405		concealed.
6406
6407		The optional {priority} argument assigns a priority to the
6408		match.  A match with a high priority will have its
6409		highlighting overrule that of a match with a lower priority.
6410		A priority is specified as an integer (negative numbers are no
6411		exception).  If the {priority} argument is not specified, the
6412		default priority is 10.  The priority of 'hlsearch' is zero,
6413		hence all matches with a priority greater than zero will
6414		overrule it.  Syntax highlighting (see 'syntax') is a separate
6415		mechanism, and regardless of the chosen priority a match will
6416		always overrule syntax highlighting.
6417
6418		The optional {id} argument allows the request for a specific
6419		match ID.  If a specified ID is already taken, an error
6420		message will appear and the match will not be added.  An ID
6421		is specified as a positive integer (zero excluded).  IDs 1, 2
6422		and 3 are reserved for |:match|, |:2match| and |:3match|,
6423		respectively.  If the {id} argument is not specified or -1,
6424		|matchadd()| automatically chooses a free ID.
6425
6426		The optional {dict} argument allows for further custom
6427		values. Currently this is used to specify a match specific
6428		conceal character that will be shown for |hl-Conceal|
6429		highlighted matches. The dict can have the following members:
6430
6431			conceal	    Special character to show instead of the
6432				    match (only for |hl-Conceal| highlighted
6433				    matches, see |:syn-cchar|)
6434			window	    Instead of the current window use the
6435				    window with this number or window ID.
6436
6437		The number of matches is not limited, as it is the case with
6438		the |:match| commands.
6439
6440		Example: >
6441			:highlight MyGroup ctermbg=green guibg=green
6442			:let m = matchadd("MyGroup", "TODO")
6443<		Deletion of the pattern: >
6444			:call matchdelete(m)
6445
6446<		A list of matches defined by |matchadd()| and |:match| are
6447		available from |getmatches()|.  All matches can be deleted in
6448		one operation by |clearmatches()|.
6449
6450							*matchaddpos()*
6451matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
6452		Same as |matchadd()|, but requires a list of positions {pos}
6453		instead of a pattern. This command is faster than |matchadd()|
6454		because it does not require to handle regular expressions and
6455		sets buffer line boundaries to redraw screen. It is supposed
6456		to be used when fast match additions and deletions are
6457		required, for example to highlight matching parentheses.
6458
6459		The list {pos} can contain one of these items:
6460		- A number.  This whole line will be highlighted.  The first
6461		  line has number 1.
6462		- A list with one number, e.g., [23]. The whole line with this
6463		  number will be highlighted.
6464		- A list with two numbers, e.g., [23, 11]. The first number is
6465		  the line number, the second one is the column number (first
6466		  column is 1, the value must correspond to the byte index as
6467		  |col()| would return).  The character at this position will
6468		  be highlighted.
6469		- A list with three numbers, e.g., [23, 11, 3]. As above, but
6470		  the third number gives the length of the highlight in bytes.
6471
6472		The maximum number of positions is 8.
6473
6474		Example: >
6475			:highlight MyGroup ctermbg=green guibg=green
6476			:let m = matchaddpos("MyGroup", [[23, 24], 34])
6477<		Deletion of the pattern: >
6478			:call matchdelete(m)
6479
6480<		Matches added by |matchaddpos()| are returned by
6481		|getmatches()| with an entry "pos1", "pos2", etc., with the
6482		value a list like the {pos} item.
6483
6484matcharg({nr})							*matcharg()*
6485		Selects the {nr} match item, as set with a |:match|,
6486		|:2match| or |:3match| command.
6487		Return a |List| with two elements:
6488			The name of the highlight group used
6489			The pattern used.
6490		When {nr} is not 1, 2 or 3 returns an empty |List|.
6491		When there is no match item set returns ['', ''].
6492		This is useful to save and restore a |:match|.
6493		Highlighting matches using the |:match| commands are limited
6494		to three matches. |matchadd()| does not have this limitation.
6495
6496matchdelete({id})			       *matchdelete()* *E802* *E803*
6497		Deletes a match with ID {id} previously defined by |matchadd()|
6498		or one of the |:match| commands.  Returns 0 if successful,
6499		otherwise -1.  See example for |matchadd()|.  All matches can
6500		be deleted in one operation by |clearmatches()|.
6501
6502matchend({expr}, {pat} [, {start} [, {count}]])			*matchend()*
6503		Same as |match()|, but return the index of first character
6504		after the match.  Example: >
6505			:echo matchend("testing", "ing")
6506<		results in "7".
6507							*strspn()* *strcspn()*
6508		Vim doesn't have a strspn() or strcspn() function, but you can
6509		do it with matchend(): >
6510			:let span = matchend(line, '[a-zA-Z]')
6511			:let span = matchend(line, '[^a-zA-Z]')
6512<		Except that -1 is returned when there are no matches.
6513
6514		The {start}, if given, has the same meaning as for |match()|. >
6515			:echo matchend("testing", "ing", 2)
6516<		results in "7". >
6517			:echo matchend("testing", "ing", 5)
6518<		result is "-1".
6519		When {expr} is a |List| the result is equal to |match()|.
6520
6521matchlist({expr}, {pat} [, {start} [, {count}]])		*matchlist()*
6522		Same as |match()|, but return a |List|.  The first item in the
6523		list is the matched string, same as what matchstr() would
6524		return.  Following items are submatches, like "\1", "\2", etc.
6525		in |:substitute|.  When an optional submatch didn't match an
6526		empty string is used.  Example: >
6527			echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)')
6528<		Results in: ['acd', 'a', '', 'c', 'd', '', '', '', '', '']
6529		When there is no match an empty list is returned.
6530
6531matchstr({expr}, {pat} [, {start} [, {count}]])			*matchstr()*
6532		Same as |match()|, but return the matched string.  Example: >
6533			:echo matchstr("testing", "ing")
6534<		results in "ing".
6535		When there is no match "" is returned.
6536		The {start}, if given, has the same meaning as for |match()|. >
6537			:echo matchstr("testing", "ing", 2)
6538<		results in "ing". >
6539			:echo matchstr("testing", "ing", 5)
6540<		result is "".
6541		When {expr} is a |List| then the matching item is returned.
6542		The type isn't changed, it's not necessarily a String.
6543
6544matchstrpos({expr}, {pat} [, {start} [, {count}]])		*matchstrpos()*
6545		Same as |matchstr()|, but return the matched string, the start
6546		position and the end position of the match.  Example: >
6547			:echo matchstrpos("testing", "ing")
6548<		results in ["ing", 4, 7].
6549		When there is no match ["", -1, -1] is returned.
6550		The {start}, if given, has the same meaning as for |match()|. >
6551			:echo matchstrpos("testing", "ing", 2)
6552<		results in ["ing", 4, 7]. >
6553			:echo matchstrpos("testing", "ing", 5)
6554<		result is ["", -1, -1].
6555		When {expr} is a |List| then the matching item, the index
6556		of first item where {pat} matches, the start position and the
6557		end position of the match are returned. >
6558			:echo matchstrpos([1, '__x'], '\a')
6559<		result is ["x", 1, 2, 3].
6560		The type isn't changed, it's not necessarily a String.
6561
6562							*max()*
6563max({expr})	Return the maximum value of all items in {expr}.
6564		{expr} can be a list or a dictionary.  For a dictionary,
6565		it returns the maximum of all values in the dictionary.
6566		If {expr} is neither a list nor a dictionary, or one of the
6567		items in {expr} cannot be used as a Number this results in
6568		an error.  An empty |List| or |Dictionary| results in zero.
6569
6570							*min()*
6571min({expr})	Return the minimum value of all items in {expr}.
6572		{expr} can be a list or a dictionary.  For a dictionary,
6573		it returns the minimum of all values in the dictionary.
6574		If {expr} is neither a list nor a dictionary, or one of the
6575		items in {expr} cannot be used as a Number this results in
6576		an error.  An empty |List| or |Dictionary| results in zero.
6577
6578							*mkdir()* *E739*
6579mkdir({name} [, {path} [, {prot}]])
6580		Create directory {name}.
6581
6582		If {path} is "p" then intermediate directories are created as
6583		necessary.  Otherwise it must be "".
6584
6585		If {prot} is given it is used to set the protection bits of
6586		the new directory.  The default is 0755 (rwxr-xr-x: r/w for
6587		the user readable for others).  Use 0700 to make it unreadable
6588		for others.  This is only used for the last part of {name}.
6589		Thus if you create /tmp/foo/bar then /tmp/foo will be created
6590		with 0755.
6591		Example: >
6592			:call mkdir($HOME . "/tmp/foo/bar", "p", 0700)
6593
6594<		This function is not available in the |sandbox|.
6595
6596		There is no error if the directory already exists and the "p"
6597		flag is passed (since patch 8.0.1708).  However, without the
6598		"p" option the call will fail.
6599
6600		The function result is a Number, which is 1 if the call was
6601		successful or 0 if the directory creation failed or partly
6602		failed.
6603
6604		Not available on all systems.  To check use: >
6605			:if exists("*mkdir")
6606<
6607							*mode()*
6608mode([expr])	Return a string that indicates the current mode.
6609		If [expr] is supplied and it evaluates to a non-zero Number or
6610		a non-empty String (|non-zero-arg|), then the full mode is
6611		returned, otherwise only the first letter is returned.
6612
6613		   n	    Normal, Terminal-Normal
6614		   no	    Operator-pending
6615		   nov	    Operator-pending (forced characterwise |o_v|)
6616		   noV	    Operator-pending (forced linewise |o_V|)
6617		   noCTRL-V Operator-pending (forced blockwise |o_CTRL-V|);
6618				CTRL-V is one character
6619		   niI	    Normal using |i_CTRL-O| in |Insert-mode|
6620		   niR	    Normal using |i_CTRL-O| in |Replace-mode|
6621		   niV	    Normal using |i_CTRL-O| in |Virtual-Replace-mode|
6622		   v	    Visual by character
6623		   V	    Visual by line
6624		   CTRL-V   Visual blockwise
6625		   s	    Select by character
6626		   S	    Select by line
6627		   CTRL-S   Select blockwise
6628		   i	    Insert
6629		   ic	    Insert mode completion |compl-generic|
6630		   ix	    Insert mode |i_CTRL-X| completion
6631		   R	    Replace |R|
6632		   Rc	    Replace mode completion |compl-generic|
6633		   Rv	    Virtual Replace |gR|
6634		   Rx	    Replace mode |i_CTRL-X| completion
6635		   c	    Command-line editing
6636		   cv	    Vim Ex mode |gQ|
6637		   ce	    Normal Ex mode |Q|
6638		   r	    Hit-enter prompt
6639		   rm	    The -- more -- prompt
6640		   r?	    A |:confirm| query of some sort
6641		   !	    Shell or external command is executing
6642		   t	    Terminal-Job mode: keys go to the job
6643		This is useful in the 'statusline' option or when used
6644		with |remote_expr()| In most other places it always returns
6645		"c" or "n".
6646		Note that in the future more modes and more specific modes may
6647		be added. It's better not to compare the whole string but only
6648		the leading character(s).
6649		Also see |visualmode()|.
6650
6651mzeval({expr})							*mzeval()*
6652		Evaluate MzScheme expression {expr} and return its result
6653		converted to Vim data structures.
6654		Numbers and strings are returned as they are.
6655		Pairs (including lists and improper lists) and vectors are
6656		returned as Vim |Lists|.
6657		Hash tables are represented as Vim |Dictionary| type with keys
6658		converted to strings.
6659		All other types are converted to string with display function.
6660		Examples: >
6661		    :mz (define l (list 1 2 3))
6662		    :mz (define h (make-hash)) (hash-set! h "list" l)
6663		    :echo mzeval("l")
6664		    :echo mzeval("h")
6665<
6666		{only available when compiled with the |+mzscheme| feature}
6667
6668nextnonblank({lnum})					*nextnonblank()*
6669		Return the line number of the first line at or below {lnum}
6670		that is not blank.  Example: >
6671			if getline(nextnonblank(1)) =~ "Java"
6672<		When {lnum} is invalid or there is no non-blank line at or
6673		below it, zero is returned.
6674		See also |prevnonblank()|.
6675
6676nr2char({expr} [, {utf8}])				*nr2char()*
6677		Return a string with a single character, which has the number
6678		value {expr}.  Examples: >
6679			nr2char(64)		returns "@"
6680			nr2char(32)		returns " "
6681<		When {utf8} is omitted or zero, the current 'encoding' is used.
6682		Example for "utf-8": >
6683			nr2char(300)		returns I with bow character
6684<		With {utf8} set to 1, always return utf-8 characters.
6685		Note that a NUL character in the file is specified with
6686		nr2char(10), because NULs are represented with newline
6687		characters.  nr2char(0) is a real NUL and terminates the
6688		string, thus results in an empty string.
6689
6690or({expr}, {expr})					*or()*
6691		Bitwise OR on the two arguments.  The arguments are converted
6692		to a number.  A List, Dict or Float argument causes an error.
6693		Example: >
6694			:let bits = or(bits, 0x80)
6695
6696
6697pathshorten({expr})					*pathshorten()*
6698		Shorten directory names in the path {expr} and return the
6699		result.  The tail, the file name, is kept as-is.  The other
6700		components in the path are reduced to single letters.  Leading
6701		'~' and '.' characters are kept.  Example: >
6702			:echo pathshorten('~/.vim/autoload/myfile.vim')
6703<			~/.v/a/myfile.vim ~
6704		It doesn't matter if the path exists or not.
6705
6706perleval({expr})					*perleval()*
6707		Evaluate Perl expression {expr} in scalar context and return
6708		its result converted to Vim data structures. If value can't be
6709		converted, it is returned as a string Perl representation.
6710		Note: If you want an array or hash, {expr} must return a
6711		reference to it.
6712		Example: >
6713			:echo perleval('[1 .. 4]')
6714<			[1, 2, 3, 4]
6715		{only available when compiled with the |+perl| feature}
6716
6717pow({x}, {y})						*pow()*
6718		Return the power of {x} to the exponent {y} as a |Float|.
6719		{x} and {y} must evaluate to a |Float| or a |Number|.
6720		Examples: >
6721			:echo pow(3, 3)
6722<			27.0 >
6723			:echo pow(2, 16)
6724<			65536.0 >
6725			:echo pow(32, 0.20)
6726<			2.0
6727		{only available when compiled with the |+float| feature}
6728
6729prevnonblank({lnum})					*prevnonblank()*
6730		Return the line number of the first line at or above {lnum}
6731		that is not blank.  Example: >
6732			let ind = indent(prevnonblank(v:lnum - 1))
6733<		When {lnum} is invalid or there is no non-blank line at or
6734		above it, zero is returned.
6735		Also see |nextnonblank()|.
6736
6737
6738printf({fmt}, {expr1} ...)				*printf()*
6739		Return a String with {fmt}, where "%" items are replaced by
6740		the formatted form of their respective arguments.  Example: >
6741			printf("%4d: E%d %.30s", lnum, errno, msg)
6742<		May result in:
6743			"  99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~
6744
6745		Often used items are:
6746		  %s	string
6747		  %6S	string right-aligned in 6 display cells
6748		  %6s	string right-aligned in 6 bytes
6749		  %.9s	string truncated to 9 bytes
6750		  %c	single byte
6751		  %d	decimal number
6752		  %5d	decimal number padded with spaces to 5 characters
6753		  %x	hex number
6754		  %04x	hex number padded with zeros to at least 4 characters
6755		  %X	hex number using upper case letters
6756		  %o	octal number
6757		  %08b	binary number padded with zeros to at least 8 chars
6758		  %f	floating point number as 12.23, inf, -inf or nan
6759		  %F	floating point number as 12.23, INF, -INF or NAN
6760		  %e	floating point number as 1.23e3, inf, -inf or nan
6761		  %E	floating point number as 1.23E3, INF, -INF or NAN
6762		  %g	floating point number, as %f or %e depending on value
6763		  %G	floating point number, as %F or %E depending on value
6764		  %%	the % character itself
6765
6766		Conversion specifications start with '%' and end with the
6767		conversion type.  All other characters are copied unchanged to
6768		the result.
6769
6770		The "%" starts a conversion specification.  The following
6771		arguments appear in sequence:
6772
6773			%  [flags]  [field-width]  [.precision]  type
6774
6775		flags
6776			Zero or more of the following flags:
6777
6778		    #	      The value should be converted to an "alternate
6779			      form".  For c, d, and s conversions, this option
6780			      has no effect.  For o conversions, the precision
6781			      of the number is increased to force the first
6782			      character of the output string to a zero (except
6783			      if a zero value is printed with an explicit
6784			      precision of zero).
6785			      For b and B conversions, a non-zero result has
6786			      the string "0b" (or "0B" for B conversions)
6787			      prepended to it.
6788			      For x and X conversions, a non-zero result has
6789			      the string "0x" (or "0X" for X conversions)
6790			      prepended to it.
6791
6792		    0 (zero)  Zero padding.  For all conversions the converted
6793			      value is padded on the left with zeros rather
6794			      than blanks.  If a precision is given with a
6795			      numeric conversion (d, b, B, o, x, and X), the 0
6796			      flag is ignored.
6797
6798		    -	      A negative field width flag; the converted value
6799			      is to be left adjusted on the field boundary.
6800			      The converted value is padded on the right with
6801			      blanks, rather than on the left with blanks or
6802			      zeros.  A - overrides a 0 if both are given.
6803
6804		    ' ' (space)  A blank should be left before a positive
6805			      number produced by a signed conversion (d).
6806
6807		    +	      A sign must always be placed before a number
6808			      produced by a signed conversion.  A + overrides
6809			      a space if both are used.
6810
6811		field-width
6812			An optional decimal digit string specifying a minimum
6813			field width.  If the converted value has fewer bytes
6814			than the field width, it will be padded with spaces on
6815			the left (or right, if the left-adjustment flag has
6816			been given) to fill out the field width.
6817
6818		.precision
6819			An optional precision, in the form of a period '.'
6820			followed by an optional digit string.  If the digit
6821			string is omitted, the precision is taken as zero.
6822			This gives the minimum number of digits to appear for
6823			d, o, x, and X conversions, or the maximum number of
6824			bytes to be printed from a string for s conversions.
6825			For floating point it is the number of digits after
6826			the decimal point.
6827
6828		type
6829			A character that specifies the type of conversion to
6830			be applied, see below.
6831
6832		A field width or precision, or both, may be indicated by an
6833		asterisk '*' instead of a digit string.  In this case, a
6834		Number argument supplies the field width or precision.  A
6835		negative field width is treated as a left adjustment flag
6836		followed by a positive field width; a negative precision is
6837		treated as though it were missing.  Example: >
6838			:echo printf("%d: %.*s", nr, width, line)
6839<		This limits the length of the text used from "line" to
6840		"width" bytes.
6841
6842		The conversion specifiers and their meanings are:
6843
6844				*printf-d* *printf-b* *printf-B* *printf-o*
6845				*printf-x* *printf-X*
6846		dbBoxX	The Number argument is converted to signed decimal
6847			(d), unsigned binary (b and B), unsigned octal (o), or
6848			unsigned hexadecimal (x and X) notation.  The letters
6849			"abcdef" are used for x conversions; the letters
6850			"ABCDEF" are used for X conversions.
6851			The precision, if any, gives the minimum number of
6852			digits that must appear; if the converted value
6853			requires fewer digits, it is padded on the left with
6854			zeros.
6855			In no case does a non-existent or small field width
6856			cause truncation of a numeric field; if the result of
6857			a conversion is wider than the field width, the field
6858			is expanded to contain the conversion result.
6859			The 'h' modifier indicates the argument is 16 bits.
6860			The 'l' modifier indicates the argument is 32 bits.
6861			The 'L' modifier indicates the argument is 64 bits.
6862			Generally, these modifiers are not useful. They are
6863			ignored when type is known from the argument.
6864
6865		i	alias for d
6866		D	alias for ld
6867		U	alias for lu
6868		O	alias for lo
6869
6870							*printf-c*
6871		c	The Number argument is converted to a byte, and the
6872			resulting character is written.
6873
6874							*printf-s*
6875		s	The text of the String argument is used.  If a
6876			precision is specified, no more bytes than the number
6877			specified are used.
6878			If the argument is not a String type, it is
6879			automatically converted to text with the same format
6880			as ":echo".
6881							*printf-S*
6882		S	The text of the String argument is used.  If a
6883			precision is specified, no more display cells than the
6884			number specified are used.
6885
6886							*printf-f* *E807*
6887		f F	The Float argument is converted into a string of the
6888			form 123.456.  The precision specifies the number of
6889			digits after the decimal point.  When the precision is
6890			zero the decimal point is omitted.  When the precision
6891			is not specified 6 is used.  A really big number
6892			(out of range or dividing by zero) results in "inf"
6893			or "-inf" with %f (INF or -INF with %F).
6894			"0.0 / 0.0" results in "nan" with %f (NAN with %F).
6895			Example: >
6896				echo printf("%.2f", 12.115)
6897<				12.12
6898			Note that roundoff depends on the system libraries.
6899			Use |round()| when in doubt.
6900
6901							*printf-e* *printf-E*
6902		e E	The Float argument is converted into a string of the
6903			form 1.234e+03 or 1.234E+03 when using 'E'.  The
6904			precision specifies the number of digits after the
6905			decimal point, like with 'f'.
6906
6907							*printf-g* *printf-G*
6908		g G	The Float argument is converted like with 'f' if the
6909			value is between 0.001 (inclusive) and 10000000.0
6910			(exclusive).  Otherwise 'e' is used for 'g' and 'E'
6911			for 'G'.  When no precision is specified superfluous
6912			zeroes and '+' signs are removed, except for the zero
6913			immediately after the decimal point.  Thus 10000000.0
6914			results in 1.0e7.
6915
6916							*printf-%*
6917		%	A '%' is written.  No argument is converted.  The
6918			complete conversion specification is "%%".
6919
6920		When a Number argument is expected a String argument is also
6921		accepted and automatically converted.
6922		When a Float or String argument is expected a Number argument
6923		is also accepted and automatically converted.
6924		Any other argument type results in an error message.
6925
6926							*E766* *E767*
6927		The number of {exprN} arguments must exactly match the number
6928		of "%" items.  If there are not sufficient or too many
6929		arguments an error is given.  Up to 18 arguments can be used.
6930
6931
6932prompt_setcallback({buf}, {expr})			*prompt_setcallback()*
6933		Set prompt callback for buffer {buf} to {expr}.  When {expr}
6934		is an empty string the callback is removed.  This has only
6935		effect if {buf} has 'buftype' set to "prompt".
6936
6937		The callback is invoked when pressing Enter.  The current
6938		buffer will always be the prompt buffer.  A new line for a
6939		prompt is added before invoking the callback, thus the prompt
6940		for which the callback was invoked will be in the last but one
6941		line.
6942		If the callback wants to add text to the buffer, it must
6943		insert it above the last line, since that is where the current
6944		prompt is.  This can also be done asynchronously.
6945		The callback is invoked with one argument, which is the text
6946		that was entered at the prompt.  This can be an empty string
6947		if the user only typed Enter.
6948		Example: >
6949		   call prompt_setcallback(bufnr(''), function('s:TextEntered'))
6950		   func s:TextEntered(text)
6951		     if a:text == 'exit' || a:text == 'quit'
6952		       stopinsert
6953		       close
6954		     else
6955		       call append(line('$') - 1, 'Entered: "' . a:text . '"')
6956		       " Reset 'modified' to allow the buffer to be closed.
6957		       set nomodified
6958		     endif
6959		   endfunc
6960
6961prompt_setinterrupt({buf}, {expr})			*prompt_setinterrupt()*
6962		Set a callback for buffer {buf} to {expr}.  When {expr} is an
6963		empty string the callback is removed.  This has only effect if
6964		{buf} has 'buftype' set to "prompt".
6965
6966		This callback will be invoked when pressing CTRL-C in Insert
6967		mode.  Without setting a callback Vim will exit Insert mode,
6968		as in any buffer.
6969
6970prompt_setprompt({buf}, {text})				*prompt_setprompt()*
6971		Set prompt for buffer {buf} to {text}.  You most likely want
6972		{text} to end in a space.
6973		The result is only visible if {buf} has 'buftype' set to
6974		"prompt".  Example: >
6975			call prompt_setprompt(bufnr(''), 'command: ')
6976<
6977						*prop_add()* *E965*
6978prop_add({lnum}, {col}, {props})
6979		Attach a text property at position {lnum}, {col}.  {col} is
6980		counted in bytes, use one for the first column.
6981		If {lnum} is invalid an error is given. *E966*
6982		If {col} is invalid an error is given. *E964*
6983
6984		{props} is a dictionary with these fields:
6985		   length	length of text in bytes, can only be used
6986				for a property that does not continue in
6987				another line; can be zero
6988		   end_lnum	line number for the end of text
6989		   end_col	column just after the text; not used when
6990				"length" is present; when {col} and "end_col"
6991				are equal, and "end_lnum" is omitted or equal
6992				to {lnum}, this is a zero-width text property
6993		   bufnr	buffer to add the property to; when omitted
6994				the current buffer is used
6995		   id		user defined ID for the property; when omitted
6996				zero is used
6997		   type		name of the text property type
6998		All fields except "type" are optional.
6999
7000		It is an error when both "length" and "end_lnum" or "end_col"
7001		are given.  Either use "length" or "end_col" for a property
7002		within one line, or use "end_lnum" and "end_col" for a
7003		property that spans more than one line.
7004		When neither "length" nor "end_col" are given the property
7005		will be zero-width.  That means it will not be highlighted but
7006		will move with the text, as a kind of mark.
7007		The property can end exactly at the last character of the
7008		text, or just after it.  In the last case, if text is appended
7009		to the line, the text property size will increase, also when
7010		the property type does not have "end_incl" set.
7011
7012		"type" will first be looked up in the buffer the property is
7013		added to. When not found, the global property types are used.
7014		If not found an error is given.
7015
7016		See |text-properties| for information about text properties.
7017
7018
7019prop_clear({lnum} [, {lnum-end} [, {props}]])		*prop_clear()*
7020		Remove all text properties from line {lnum}.
7021		When {lnum-end} is given, remove all text properties from line
7022		{lnum} to {lnum-end} (inclusive).
7023
7024		When {props} contains a "bufnr" item use this buffer,
7025		otherwise use the current buffer.
7026
7027		See |text-properties| for information about text properties.
7028
7029							*prop_find()*
7030prop_find({props} [, {direction}])
7031		NOT IMPLEMENTED YET
7032		Search for a text property as specified with {props}:
7033		   id		property with this ID
7034		   type		property with this type name
7035		   bufnr	buffer to search in; when present a
7036				start position with "lnum" and "col"
7037				must be given; when omitted the
7038				current buffer is used
7039		   lnum		start in this line (when omitted start
7040				at the cursor)
7041		   col		start at this column (when omitted
7042				and "lnum" is given: use column 1,
7043				otherwise start at the cursor)
7044		   skipstart	do not look for a match at the start
7045				position
7046
7047		{direction} can be "f" for forward and "b" for backward.  When
7048		omitted forward search is performed.
7049
7050		If a match is found then a Dict is returned with the entries
7051		as with prop_list(), and additionally an "lnum" entry.
7052		If no match is found then an empty Dict is returned.
7053
7054		See |text-properties| for information about text properties.
7055
7056
7057prop_list({lnum} [, {props}])				*prop_list()*
7058		Return a List with all text properties in line {lnum}.
7059
7060		When {props} contains a "bufnr" item, use this buffer instead
7061		of the current buffer.
7062
7063		The properties are ordered by starting column and priority.
7064		Each property is a Dict with these entries:
7065		   col		starting column
7066		   length	length in bytes, one more if line break is
7067				included
7068		   id		property ID
7069		   type		name of the property type, omitted if
7070				the type was deleted
7071		   start	when TRUE property starts in this line
7072		   end		when TRUE property ends in this line
7073
7074		When "start" is zero the property started in a previous line,
7075		the current one is a continuation.
7076		When "end" is zero the property continues in the next line.
7077		The line break after this line is included.
7078
7079		See |text-properties| for information about text properties.
7080
7081
7082						*prop_remove()* *E968*
7083prop_remove({props} [, {lnum} [, {lnum-end}]])
7084		Remove a matching text property from line {lnum}.  When
7085		{lnum-end} is given, remove matching text properties from line
7086		{lnum} to {lnum-end} (inclusive).
7087		When {lnum} is omitted remove matching text properties from
7088		all lines.
7089
7090		{props} is a dictionary with these fields:
7091		   id		remove text properties with this ID
7092		   type		remove text properties with this type name
7093		   bufnr	use this buffer instead of the current one
7094		   all		when TRUE remove all matching text properties,
7095				not just the first one
7096		A property matches when either "id" or "type" matches.
7097
7098		Returns the number of properties that were removed.
7099
7100		See |text-properties| for information about text properties.
7101
7102
7103prop_type_add({name}, {props})		*prop_type_add()* *E969* *E970*
7104		Add a text property type {name}.  If a property type with this
7105		name already exists an error is given.
7106		{props} is a dictionary with these optional fields:
7107		   bufnr	define the property only for this buffer; this
7108				avoids name collisions and automatically
7109				clears the property types when the buffer is
7110				deleted.
7111		   highlight	name of highlight group to use
7112		   priority	when a character has multiple text
7113				properties the one with the highest priority
7114				will be used; negative values can be used, the
7115				default priority is zero
7116		   start_incl	when TRUE inserts at the start position will
7117				be included in the text property
7118		   end_incl	when TRUE inserts at the end position will be
7119				included in the text property
7120
7121		See |text-properties| for information about text properties.
7122
7123
7124prop_type_change({name}, {props})			*prop_type_change()*
7125		Change properties of an existing text property type.  If a
7126		property with this name does not exist an error is given.
7127		The {props} argument is just like |prop_type_add()|.
7128
7129		See |text-properties| for information about text properties.
7130
7131
7132prop_type_delete({name} [, {props}])			*prop_type_delete()*
7133		Remove the text property type {name}.  When text properties
7134		using the type {name} are still in place, they will not have
7135		an effect and can no longer be removed by name.
7136
7137		{props} can contain a "bufnr" item.  When it is given, delete
7138		a property type from this buffer instead of from the global
7139		property types.
7140
7141		When text property type {name} is not found there is no error.
7142
7143		See |text-properties| for information about text properties.
7144
7145
7146prop_type_get([{name} [, {props}])			*prop_type_get()*
7147		Returns the properties of property type {name}.  This is a
7148		dictionary with the same fields as was given to
7149		prop_type_add().
7150		When the property type {name} does not exist, an empty
7151		dictionary is returned.
7152
7153		{props} can contain a "bufnr" item.  When it is given, use
7154		this buffer instead of the global property types.
7155
7156		See |text-properties| for information about text properties.
7157
7158
7159prop_type_list([{props}])				*prop_type_list()*
7160		Returns a list with all property type names.
7161
7162		{props} can contain a "bufnr" item.  When it is given, use
7163		this buffer instead of the global property types.
7164
7165		See |text-properties| for information about text properties.
7166
7167
7168pumvisible()						*pumvisible()*
7169		Returns non-zero when the popup menu is visible, zero
7170		otherwise.  See |ins-completion-menu|.
7171		This can be used to avoid some things that would remove the
7172		popup menu.
7173
7174py3eval({expr})						*py3eval()*
7175		Evaluate Python expression {expr} and return its result
7176		converted to Vim data structures.
7177		Numbers and strings are returned as they are (strings are
7178		copied though, Unicode strings are additionally converted to
7179		'encoding').
7180		Lists are represented as Vim |List| type.
7181		Dictionaries are represented as Vim |Dictionary| type with
7182		keys converted to strings.
7183		{only available when compiled with the |+python3| feature}
7184
7185							*E858* *E859*
7186pyeval({expr})						*pyeval()*
7187		Evaluate Python expression {expr} and return its result
7188		converted to Vim data structures.
7189		Numbers and strings are returned as they are (strings are
7190		copied though).
7191		Lists are represented as Vim |List| type.
7192		Dictionaries are represented as Vim |Dictionary| type,
7193		non-string keys result in error.
7194		{only available when compiled with the |+python| feature}
7195
7196pyxeval({expr})						*pyxeval()*
7197		Evaluate Python expression {expr} and return its result
7198		converted to Vim data structures.
7199		Uses Python 2 or 3, see |python_x| and 'pyxversion'.
7200		See also: |pyeval()|, |py3eval()|
7201		{only available when compiled with the |+python| or the
7202		|+python3| feature}
7203
7204							*E726* *E727*
7205range({expr} [, {max} [, {stride}]])				*range()*
7206		Returns a |List| with Numbers:
7207		- If only {expr} is specified: [0, 1, ..., {expr} - 1]
7208		- If {max} is specified: [{expr}, {expr} + 1, ..., {max}]
7209		- If {stride} is specified: [{expr}, {expr} + {stride}, ...,
7210		  {max}] (increasing {expr} with {stride} each time, not
7211		  producing a value past {max}).
7212		When the maximum is one before the start the result is an
7213		empty list.  When the maximum is more than one before the
7214		start this is an error.
7215		Examples: >
7216			range(4)		" [0, 1, 2, 3]
7217			range(2, 4)		" [2, 3, 4]
7218			range(2, 9, 3)		" [2, 5, 8]
7219			range(2, -2, -1)	" [2, 1, 0, -1, -2]
7220			range(0)		" []
7221			range(2, 0)		" error!
7222<
7223							*readfile()*
7224readfile({fname} [, {type} [, {max}]])
7225		Read file {fname} and return a |List|, each line of the file
7226		as an item.  Lines are broken at NL characters.  Macintosh
7227		files separated with CR will result in a single long line
7228		(unless a NL appears somewhere).
7229		All NUL characters are replaced with a NL character.
7230		When {type} contains "b" binary mode is used:
7231		- When the last line ends in a NL an extra empty list item is
7232		  added.
7233		- No CR characters are removed.
7234		When {type} contains "B" a |Blob| is returned with the binary
7235		data of the file unmodified.
7236		Otherwise:
7237		- CR characters that appear before a NL are removed.
7238		- Whether the last line ends in a NL or not does not matter.
7239		- When 'encoding' is Unicode any UTF-8 byte order mark is
7240		  removed from the text.
7241		When {max} is given this specifies the maximum number of lines
7242		to be read.  Useful if you only want to check the first ten
7243		lines of a file: >
7244			:for line in readfile(fname, '', 10)
7245			:  if line =~ 'Date' | echo line | endif
7246			:endfor
7247<		When {max} is negative -{max} lines from the end of the file
7248		are returned, or as many as there are.
7249		When {max} is zero the result is an empty list.
7250		Note that without {max} the whole file is read into memory.
7251		Also note that there is no recognition of encoding.  Read a
7252		file into a buffer if you need to.
7253		When the file can't be opened an error message is given and
7254		the result is an empty list.
7255		Also see |writefile()|.
7256
7257reg_executing()						*reg_executing()*
7258		Returns the single letter name of the register being executed.
7259		Returns an empty string when no register is being executed.
7260		See |@|.
7261
7262reg_recording()						*reg_recording()*
7263		Returns the single letter name of the register being recorded.
7264		Returns an empty string string when not recording.  See |q|.
7265
7266reltime([{start} [, {end}]])				*reltime()*
7267		Return an item that represents a time value.  The format of
7268		the item depends on the system.  It can be passed to
7269		|reltimestr()| to convert it to a string  or |reltimefloat()|
7270		to convert to a Float.
7271		Without an argument it returns the current time.
7272		With one argument is returns the time passed since the time
7273		specified in the argument.
7274		With two arguments it returns the time passed between {start}
7275		and {end}.
7276		The {start} and {end} arguments must be values returned by
7277		reltime().
7278		{only available when compiled with the |+reltime| feature}
7279
7280reltimefloat({time})				*reltimefloat()*
7281		Return a Float that represents the time value of {time}.
7282		Example: >
7283			let start = reltime()
7284			call MyFunction()
7285			let seconds = reltimefloat(reltime(start))
7286<		See the note of reltimestr() about overhead.
7287		Also see |profiling|.
7288		{only available when compiled with the |+reltime| feature}
7289
7290reltimestr({time})				*reltimestr()*
7291		Return a String that represents the time value of {time}.
7292		This is the number of seconds, a dot and the number of
7293		microseconds.  Example: >
7294			let start = reltime()
7295			call MyFunction()
7296			echo reltimestr(reltime(start))
7297<		Note that overhead for the commands will be added to the time.
7298		The accuracy depends on the system.
7299		Leading spaces are used to make the string align nicely.  You
7300		can use split() to remove it. >
7301			echo split(reltimestr(reltime(start)))[0]
7302<		Also see |profiling|.
7303		{only available when compiled with the |+reltime| feature}
7304
7305							*remote_expr()* *E449*
7306remote_expr({server}, {string} [, {idvar} [, {timeout}]])
7307		Send the {string} to {server}.  The string is sent as an
7308		expression and the result is returned after evaluation.
7309		The result must be a String or a |List|.  A |List| is turned
7310		into a String by joining the items with a line break in
7311		between (not at the end), like with join(expr, "\n").
7312		If {idvar} is present and not empty, it is taken as the name
7313		of a variable and a {serverid} for later use with
7314		|remote_read()| is stored there.
7315		If {timeout} is given the read times out after this many
7316		seconds.  Otherwise a timeout of 600 seconds is used.
7317		See also |clientserver| |RemoteReply|.
7318		This function is not available in the |sandbox|.
7319		{only available when compiled with the |+clientserver| feature}
7320		Note: Any errors will cause a local error message to be issued
7321		and the result will be the empty string.
7322
7323		Variables will be evaluated in the global namespace,
7324		independent of a function currently being active.  Except
7325		when in debug mode, then local function variables and
7326		arguments can be evaluated.
7327
7328		Examples: >
7329			:echo remote_expr("gvim", "2+2")
7330			:echo remote_expr("gvim1", "b:current_syntax")
7331<
7332
7333remote_foreground({server})				*remote_foreground()*
7334		Move the Vim server with the name {server} to the foreground.
7335		This works like: >
7336			remote_expr({server}, "foreground()")
7337<		Except that on Win32 systems the client does the work, to work
7338		around the problem that the OS doesn't always allow the server
7339		to bring itself to the foreground.
7340		Note: This does not restore the window if it was minimized,
7341		like foreground() does.
7342		This function is not available in the |sandbox|.
7343		{only in the Win32, Athena, Motif and GTK GUI versions and the
7344		Win32 console version}
7345
7346
7347remote_peek({serverid} [, {retvar}])		*remote_peek()*
7348		Returns a positive number if there are available strings
7349		from {serverid}.  Copies any reply string into the variable
7350		{retvar} if specified.  {retvar} must be a string with the
7351		name of a variable.
7352		Returns zero if none are available.
7353		Returns -1 if something is wrong.
7354		See also |clientserver|.
7355		This function is not available in the |sandbox|.
7356		{only available when compiled with the |+clientserver| feature}
7357		Examples: >
7358			:let repl = ""
7359			:echo "PEEK: ".remote_peek(id, "repl").": ".repl
7360
7361remote_read({serverid}, [{timeout}])			*remote_read()*
7362		Return the oldest available reply from {serverid} and consume
7363		it.  Unless a {timeout} in seconds is given, it blocks until a
7364		reply is available.
7365		See also |clientserver|.
7366		This function is not available in the |sandbox|.
7367		{only available when compiled with the |+clientserver| feature}
7368		Example: >
7369			:echo remote_read(id)
7370<
7371							*remote_send()* *E241*
7372remote_send({server}, {string} [, {idvar}])
7373		Send the {string} to {server}.  The string is sent as input
7374		keys and the function returns immediately.  At the Vim server
7375		the keys are not mapped |:map|.
7376		If {idvar} is present, it is taken as the name of a variable
7377		and a {serverid} for later use with remote_read() is stored
7378		there.
7379		See also |clientserver| |RemoteReply|.
7380		This function is not available in the |sandbox|.
7381		{only available when compiled with the |+clientserver| feature}
7382
7383		Note: Any errors will be reported in the server and may mess
7384		up the display.
7385		Examples: >
7386		:echo remote_send("gvim", ":DropAndReply ".file, "serverid").
7387		 \ remote_read(serverid)
7388
7389		:autocmd NONE RemoteReply *
7390		 \ echo remote_read(expand("<amatch>"))
7391		:echo remote_send("gvim", ":sleep 10 | echo ".
7392		 \ 'server2client(expand("<client>"), "HELLO")<CR>')
7393<
7394					*remote_startserver()* *E941* *E942*
7395remote_startserver({name})
7396		Become the server {name}.  This fails if already running as a
7397		server, when |v:servername| is not empty.
7398		{only available when compiled with the |+clientserver| feature}
7399
7400remove({list}, {idx} [, {end}])				*remove()*
7401		Without {end}: Remove the item at {idx} from |List| {list} and
7402		return the item.
7403		With {end}: Remove items from {idx} to {end} (inclusive) and
7404		return a List with these items.  When {idx} points to the same
7405		item as {end} a list with one item is returned.  When {end}
7406		points to an item before {idx} this is an error.
7407		See |list-index| for possible values of {idx} and {end}.
7408		Example: >
7409			:echo "last item: " . remove(mylist, -1)
7410			:call remove(mylist, 0, 9)
7411<
7412		Use |delete()| to remove a file.
7413
7414remove({blob}, {idx} [, {end}])
7415		Without {end}: Remove the byte at {idx} from |Blob| {blob} and
7416		return the byte.
7417		With {end}: Remove bytes from {idx} to {end} (inclusive) and
7418		return a |Blob| with these bytes.  When {idx} points to the same
7419		byte as {end} a |Blob| with one byte is returned.  When {end}
7420		points to a byte before {idx} this is an error.
7421		Example: >
7422			:echo "last byte: " . remove(myblob, -1)
7423			:call remove(mylist, 0, 9)
7424
7425remove({dict}, {key})
7426		Remove the entry from {dict} with key {key}.  Example: >
7427			:echo "removed " . remove(dict, "one")
7428<		If there is no {key} in {dict} this is an error.
7429
7430rename({from}, {to})					*rename()*
7431		Rename the file by the name {from} to the name {to}.  This
7432		should also work to move files across file systems.  The
7433		result is a Number, which is 0 if the file was renamed
7434		successfully, and non-zero when the renaming failed.
7435		NOTE: If {to} exists it is overwritten without warning.
7436		This function is not available in the |sandbox|.
7437
7438repeat({expr}, {count})					*repeat()*
7439		Repeat {expr} {count} times and return the concatenated
7440		result.  Example: >
7441			:let separator = repeat('-', 80)
7442<		When {count} is zero or negative the result is empty.
7443		When {expr} is a |List| the result is {expr} concatenated
7444		{count} times.  Example: >
7445			:let longlist = repeat(['a', 'b'], 3)
7446<		Results in ['a', 'b', 'a', 'b', 'a', 'b'].
7447
7448
7449resolve({filename})					*resolve()* *E655*
7450		On MS-Windows, when {filename} is a shortcut (a .lnk file),
7451		returns the path the shortcut points to in a simplified form.
7452		When {filename} is a symbolic link or junction point, return
7453		the full path to the target. If the target of junction is
7454		removed, return {filename}.
7455		On Unix, repeat resolving symbolic links in all path
7456		components of {filename} and return the simplified result.
7457		To cope with link cycles, resolving of symbolic links is
7458		stopped after 100 iterations.
7459		On other systems, return the simplified {filename}.
7460		The simplification step is done as by |simplify()|.
7461		resolve() keeps a leading path component specifying the
7462		current directory (provided the result is still a relative
7463		path name) and also keeps a trailing path separator.
7464
7465							*reverse()*
7466reverse({object})
7467		Reverse the order of items in {object} in-place.
7468		{object} can be a |List| or a |Blob|.
7469		Returns {object}.
7470		If you want an object to remain unmodified make a copy first: >
7471			:let revlist = reverse(copy(mylist))
7472
7473round({expr})							*round()*
7474		Round off {expr} to the nearest integral value and return it
7475		as a |Float|.  If {expr} lies halfway between two integral
7476		values, then use the larger one (away from zero).
7477		{expr} must evaluate to a |Float| or a |Number|.
7478		Examples: >
7479			echo round(0.456)
7480<			0.0  >
7481			echo round(4.5)
7482<			5.0 >
7483			echo round(-4.5)
7484<			-5.0
7485		{only available when compiled with the |+float| feature}
7486
7487rubyeval({expr})					*rubyeval()*
7488		Evaluate Ruby expression {expr} and return its result
7489		converted to Vim data structures.
7490		Numbers, floats and strings are returned as they are (strings
7491		are copied though).
7492		Arrays are represented as Vim |List| type.
7493		Hashes are represented as Vim |Dictionary| type.
7494		Other objects are represented as strings resulted from their
7495		"Object#to_s" method.
7496		{only available when compiled with the |+ruby| feature}
7497
7498screenattr({row}, {col})					*screenattr()*
7499		Like |screenchar()|, but return the attribute.  This is a rather
7500		arbitrary number that can only be used to compare to the
7501		attribute at other positions.
7502
7503screenchar({row}, {col})					*screenchar()*
7504		The result is a Number, which is the character at position
7505		[row, col] on the screen.  This works for every possible
7506		screen position, also status lines, window separators and the
7507		command line.  The top left position is row one, column one
7508		The character excludes composing characters.  For double-byte
7509		encodings it may only be the first byte.
7510		This is mainly to be used for testing.
7511		Returns -1 when row or col is out of range.
7512
7513screencol()							*screencol()*
7514		The result is a Number, which is the current screen column of
7515		the cursor. The leftmost column has number 1.
7516		This function is mainly used for testing.
7517
7518		Note: Always returns the current screen column, thus if used
7519		in a command (e.g. ":echo screencol()") it will return the
7520		column inside the command line, which is 1 when the command is
7521		executed. To get the cursor position in the file use one of
7522		the following mappings: >
7523			nnoremap <expr> GG ":echom ".screencol()."\n"
7524			nnoremap <silent> GG :echom screencol()<CR>
7525<
7526screenrow()							*screenrow()*
7527		The result is a Number, which is the current screen row of the
7528		cursor.  The top line has number one.
7529		This function is mainly used for testing.
7530		Alternatively you can use |winline()|.
7531
7532		Note: Same restrictions as with |screencol()|.
7533
7534search({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*search()*
7535		Search for regexp pattern {pattern}.  The search starts at the
7536		cursor position (you can use |cursor()| to set it).
7537
7538		When a match has been found its line number is returned.
7539		If there is no match a 0 is returned and the cursor doesn't
7540		move.  No error message is given.
7541
7542		{flags} is a String, which can contain these character flags:
7543		'b'	search Backward instead of forward
7544		'c'	accept a match at the Cursor position
7545		'e'	move to the End of the match
7546		'n'	do Not move the cursor
7547		'p'	return number of matching sub-Pattern (see below)
7548		's'	Set the ' mark at the previous location of the cursor
7549		'w'	Wrap around the end of the file
7550		'W'	don't Wrap around the end of the file
7551		'z'	start searching at the cursor column instead of zero
7552		If neither 'w' or 'W' is given, the 'wrapscan' option applies.
7553
7554		If the 's' flag is supplied, the ' mark is set, only if the
7555		cursor is moved. The 's' flag cannot be combined with the 'n'
7556		flag.
7557
7558		'ignorecase', 'smartcase' and 'magic' are used.
7559
7560		When the 'z' flag is not given, searching always starts in
7561		column zero and then matches before the cursor are skipped.
7562		When the 'c' flag is present in 'cpo' the next search starts
7563		after the match.  Without the 'c' flag the next search starts
7564		one column further.
7565
7566		When the {stopline} argument is given then the search stops
7567		after searching this line.  This is useful to restrict the
7568		search to a range of lines.  Examples: >
7569			let match = search('(', 'b', line("w0"))
7570			let end = search('END', '', line("w$"))
7571<		When {stopline} is used and it is not zero this also implies
7572		that the search does not wrap around the end of the file.
7573		A zero value is equal to not giving the argument.
7574
7575		When the {timeout} argument is given the search stops when
7576		more than this many milliseconds have passed.  Thus when
7577		{timeout} is 500 the search stops after half a second.
7578		The value must not be negative.  A zero value is like not
7579		giving the argument.
7580		{only available when compiled with the |+reltime| feature}
7581
7582							*search()-sub-match*
7583		With the 'p' flag the returned value is one more than the
7584		first sub-match in \(\).  One if none of them matched but the
7585		whole pattern did match.
7586		To get the column number too use |searchpos()|.
7587
7588		The cursor will be positioned at the match, unless the 'n'
7589		flag is used.
7590
7591		Example (goes over all files in the argument list): >
7592		    :let n = 1
7593		    :while n <= argc()	    " loop over all files in arglist
7594		    :  exe "argument " . n
7595		    :  " start at the last char in the file and wrap for the
7596		    :  " first search to find match at start of file
7597		    :  normal G$
7598		    :  let flags = "w"
7599		    :  while search("foo", flags) > 0
7600		    :	 s/foo/bar/g
7601		    :	 let flags = "W"
7602		    :  endwhile
7603		    :  update		    " write the file if modified
7604		    :  let n = n + 1
7605		    :endwhile
7606<
7607		Example for using some flags: >
7608		    :echo search('\<if\|\(else\)\|\(endif\)', 'ncpe')
7609<		This will search for the keywords "if", "else", and "endif"
7610		under or after the cursor.  Because of the 'p' flag, it
7611		returns 1, 2, or 3 depending on which keyword is found, or 0
7612		if the search fails.  With the cursor on the first word of the
7613		line:
7614		    if (foo == 0) | let foo = foo + 1 | endif ~
7615		the function returns 1.  Without the 'c' flag, the function
7616		finds the "endif" and returns 3.  The same thing happens
7617		without the 'e' flag if the cursor is on the "f" of "if".
7618		The 'n' flag tells the function not to move the cursor.
7619
7620
7621searchdecl({name} [, {global} [, {thisblock}]])			*searchdecl()*
7622		Search for the declaration of {name}.
7623
7624		With a non-zero {global} argument it works like |gD|, find
7625		first match in the file.  Otherwise it works like |gd|, find
7626		first match in the function.
7627
7628		With a non-zero {thisblock} argument matches in a {} block
7629		that ends before the cursor position are ignored.  Avoids
7630		finding variable declarations only valid in another scope.
7631
7632		Moves the cursor to the found match.
7633		Returns zero for success, non-zero for failure.
7634		Example: >
7635			if searchdecl('myvar') == 0
7636			   echo getline('.')
7637			endif
7638<
7639							*searchpair()*
7640searchpair({start}, {middle}, {end} [, {flags} [, {skip}
7641				[, {stopline} [, {timeout}]]]])
7642		Search for the match of a nested start-end pair.  This can be
7643		used to find the "endif" that matches an "if", while other
7644		if/endif pairs in between are ignored.
7645		The search starts at the cursor.  The default is to search
7646		forward, include 'b' in {flags} to search backward.
7647		If a match is found, the cursor is positioned at it and the
7648		line number is returned.  If no match is found 0 or -1 is
7649		returned and the cursor doesn't move.  No error message is
7650		given.
7651
7652		{start}, {middle} and {end} are patterns, see |pattern|.  They
7653		must not contain \( \) pairs.  Use of \%( \) is allowed.  When
7654		{middle} is not empty, it is found when searching from either
7655		direction, but only when not in a nested start-end pair.  A
7656		typical use is: >
7657			searchpair('\<if\>', '\<else\>', '\<endif\>')
7658<		By leaving {middle} empty the "else" is skipped.
7659
7660		{flags} 'b', 'c', 'n', 's', 'w' and 'W' are used like with
7661		|search()|.  Additionally:
7662		'r'	Repeat until no more matches found; will find the
7663			outer pair.  Implies the 'W' flag.
7664		'm'	Return number of matches instead of line number with
7665			the match; will be > 1 when 'r' is used.
7666		Note: it's nearly always a good idea to use the 'W' flag, to
7667		avoid wrapping around the end of the file.
7668
7669		When a match for {start}, {middle} or {end} is found, the
7670		{skip} expression is evaluated with the cursor positioned on
7671		the start of the match.  It should return non-zero if this
7672		match is to be skipped.  E.g., because it is inside a comment
7673		or a string.
7674		When {skip} is omitted or empty, every match is accepted.
7675		When evaluating {skip} causes an error the search is aborted
7676		and -1 returned.
7677		{skip} can be a string, a lambda, a funcref or a partial.
7678		Anything else makes the function fail.
7679
7680		For {stopline} and {timeout} see |search()|.
7681
7682		The value of 'ignorecase' is used.  'magic' is ignored, the
7683		patterns are used like it's on.
7684
7685		The search starts exactly at the cursor.  A match with
7686		{start}, {middle} or {end} at the next character, in the
7687		direction of searching, is the first one found.  Example: >
7688			if 1
7689			  if 2
7690			  endif 2
7691			endif 1
7692<		When starting at the "if 2", with the cursor on the "i", and
7693		searching forwards, the "endif 2" is found.  When starting on
7694		the character just before the "if 2", the "endif 1" will be
7695		found.  That's because the "if 2" will be found first, and
7696		then this is considered to be a nested if/endif from "if 2" to
7697		"endif 2".
7698		When searching backwards and {end} is more than one character,
7699		it may be useful to put "\zs" at the end of the pattern, so
7700		that when the cursor is inside a match with the end it finds
7701		the matching start.
7702
7703		Example, to find the "endif" command in a Vim script: >
7704
7705	:echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W',
7706			\ 'getline(".") =~ "^\\s*\""')
7707
7708<		The cursor must be at or after the "if" for which a match is
7709		to be found.  Note that single-quote strings are used to avoid
7710		having to double the backslashes.  The skip expression only
7711		catches comments at the start of a line, not after a command.
7712		Also, a word "en" or "if" halfway a line is considered a
7713		match.
7714		Another example, to search for the matching "{" of a "}": >
7715
7716	:echo searchpair('{', '', '}', 'bW')
7717
7718<		This works when the cursor is at or before the "}" for which a
7719		match is to be found.  To reject matches that syntax
7720		highlighting recognized as strings: >
7721
7722	:echo searchpair('{', '', '}', 'bW',
7723	     \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
7724<
7725							*searchpairpos()*
7726searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
7727				[, {stopline} [, {timeout}]]]])
7728		Same as |searchpair()|, but returns a |List| with the line and
7729		column position of the match. The first element of the |List|
7730		is the line number and the second element is the byte index of
7731		the column position of the match.  If no match is found,
7732		returns [0, 0]. >
7733
7734			:let [lnum,col] = searchpairpos('{', '', '}', 'n')
7735<
7736		See |match-parens| for a bigger and more useful example.
7737
7738searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*searchpos()*
7739		Same as |search()|, but returns a |List| with the line and
7740		column position of the match. The first element of the |List|
7741		is the line number and the second element is the byte index of
7742		the column position of the match. If no match is found,
7743		returns [0, 0].
7744		Example: >
7745	:let [lnum, col] = searchpos('mypattern', 'n')
7746
7747<		When the 'p' flag is given then there is an extra item with
7748		the sub-pattern match number |search()-sub-match|.  Example: >
7749	:let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np')
7750<		In this example "submatch" is 2 when a lowercase letter is
7751		found |/\l|, 3 when an uppercase letter is found |/\u|.
7752
7753server2client({clientid}, {string})			*server2client()*
7754		Send a reply string to {clientid}.  The most recent {clientid}
7755		that sent a string can be retrieved with expand("<client>").
7756		{only available when compiled with the |+clientserver| feature}
7757		Note:
7758		This id has to be stored before the next command can be
7759		received.  I.e. before returning from the received command and
7760		before calling any commands that waits for input.
7761		See also |clientserver|.
7762		Example: >
7763			:echo server2client(expand("<client>"), "HELLO")
7764<
7765serverlist()					*serverlist()*
7766		Return a list of available server names, one per line.
7767		When there are no servers or the information is not available
7768		an empty string is returned.  See also |clientserver|.
7769		{only available when compiled with the |+clientserver| feature}
7770		Example: >
7771			:echo serverlist()
7772<
7773setbufline({expr}, {lnum}, {text})			*setbufline()*
7774		Set line {lnum} to {text} in buffer {expr}.  To insert
7775		lines use |append()|.  Any text properties in {lnum} are
7776		cleared.
7777
7778		For the use of {expr}, see |bufname()| above.
7779
7780		{lnum} is used like with |setline()|.
7781		This works like |setline()| for the specified buffer.
7782		On success 0 is returned, on failure 1 is returned.
7783
7784		If {expr} is not a valid buffer or {lnum} is not valid, an
7785		error message is given.
7786
7787setbufvar({expr}, {varname}, {val})			*setbufvar()*
7788		Set option or local variable {varname} in buffer {expr} to
7789		{val}.
7790		This also works for a global or local window option, but it
7791		doesn't work for a global or local window variable.
7792		For a local window option the global value is unchanged.
7793		For the use of {expr}, see |bufname()| above.
7794		Note that the variable name without "b:" must be used.
7795		Examples: >
7796			:call setbufvar(1, "&mod", 1)
7797			:call setbufvar("todo", "myvar", "foobar")
7798<		This function is not available in the |sandbox|.
7799
7800setcharsearch({dict})					*setcharsearch()*
7801		Set the current character search information to {dict},
7802		which contains one or more of the following entries:
7803
7804		    char	character which will be used for a subsequent
7805				|,| or |;| command; an empty string clears the
7806				character search
7807		    forward	direction of character search; 1 for forward,
7808				0 for backward
7809		    until	type of character search; 1 for a |t| or |T|
7810				character search, 0 for an |f| or |F|
7811				character search
7812
7813		This can be useful to save/restore a user's character search
7814		from a script: >
7815			:let prevsearch = getcharsearch()
7816			:" Perform a command which clobbers user's search
7817			:call setcharsearch(prevsearch)
7818<		Also see |getcharsearch()|.
7819
7820setcmdpos({pos})					*setcmdpos()*
7821		Set the cursor position in the command line to byte position
7822		{pos}.  The first position is 1.
7823		Use |getcmdpos()| to obtain the current position.
7824		Only works while editing the command line, thus you must use
7825		|c_CTRL-\_e|, |c_CTRL-R_=| or |c_CTRL-R_CTRL-R| with '='.  For
7826		|c_CTRL-\_e| and |c_CTRL-R_CTRL-R| with '=' the position is
7827		set after the command line is set to the expression.  For
7828		|c_CTRL-R_=| it is set after evaluating the expression but
7829		before inserting the resulting text.
7830		When the number is too big the cursor is put at the end of the
7831		line.  A number smaller than one has undefined results.
7832		Returns 0 when successful, 1 when not editing the command
7833		line.
7834
7835setfperm({fname}, {mode})				*setfperm()* *chmod*
7836		Set the file permissions for {fname} to {mode}.
7837		{mode} must be a string with 9 characters.  It is of the form
7838		"rwxrwxrwx", where each group of "rwx" flags represent, in
7839		turn, the permissions of the owner of the file, the group the
7840		file belongs to, and other users.  A '-' character means the
7841		permission is off, any other character means on.  Multi-byte
7842		characters are not supported.
7843
7844		For example "rw-r-----" means read-write for the user,
7845		readable by the group, not accessible by others.  "xx-x-----"
7846		would do the same thing.
7847
7848		Returns non-zero for success, zero for failure.
7849
7850		To read permissions see |getfperm()|.
7851
7852
7853setline({lnum}, {text})					*setline()*
7854		Set line {lnum} of the current buffer to {text}.  To insert
7855		lines use |append()|. To set lines in another buffer use
7856		|setbufline()|.  Any text properties in {lnum} are cleared.
7857
7858		{lnum} is used like with |getline()|.
7859		When {lnum} is just below the last line the {text} will be
7860		added as a new line.
7861
7862		If this succeeds, 0 is returned.  If this fails (most likely
7863		because {lnum} is invalid) 1 is returned.
7864
7865		Example: >
7866			:call setline(5, strftime("%c"))
7867
7868<		When {text} is a |List| then line {lnum} and following lines
7869		will be set to the items in the list.  Example: >
7870			:call setline(5, ['aaa', 'bbb', 'ccc'])
7871<		This is equivalent to: >
7872			:for [n, l] in [[5, 'aaa'], [6, 'bbb'], [7, 'ccc']]
7873			:  call setline(n, l)
7874			:endfor
7875
7876<		Note: The '[ and '] marks are not set.
7877
7878setloclist({nr}, {list} [, {action} [, {what}]])		*setloclist()*
7879		Create or replace or add to the location list for window {nr}.
7880		{nr} can be the window number or the |window-ID|.
7881		When {nr} is zero the current window is used.
7882
7883		For a location list window, the displayed location list is
7884		modified.  For an invalid window number {nr}, -1 is returned.
7885		Otherwise, same as |setqflist()|.
7886		Also see |location-list|.
7887
7888		If the optional {what} dictionary argument is supplied, then
7889		only the items listed in {what} are set. Refer to |setqflist()|
7890		for the list of supported keys in {what}.
7891
7892setmatches({list})					*setmatches()*
7893		Restores a list of matches saved by |getmatches() for the
7894		current window|.  Returns 0 if successful, otherwise -1.  All
7895		current matches are cleared before the list is restored.  See
7896		example for |getmatches()|.
7897
7898							*setpos()*
7899setpos({expr}, {list})
7900		Set the position for {expr}.  Possible values:
7901			.	the cursor
7902			'x	mark x
7903
7904		{list} must be a |List| with four or five numbers:
7905		    [bufnum, lnum, col, off]
7906		    [bufnum, lnum, col, off, curswant]
7907
7908		"bufnum" is the buffer number.  Zero can be used for the
7909		current buffer.  When setting an uppercase mark "bufnum" is
7910		used for the mark position.  For other marks it specifies the
7911		buffer to set the mark in.  You can use the |bufnr()| function
7912		to turn a file name into a buffer number.
7913		For setting the cursor and the ' mark "bufnum" is ignored,
7914		since these are associated with a window, not a buffer.
7915		Does not change the jumplist.
7916
7917		"lnum" and "col" are the position in the buffer.  The first
7918		column is 1.  Use a zero "lnum" to delete a mark.  If "col" is
7919		smaller than 1 then 1 is used.
7920
7921		The "off" number is only used when 'virtualedit' is set. Then
7922		it is the offset in screen columns from the start of the
7923		character.  E.g., a position within a <Tab> or after the last
7924		character.
7925
7926		The "curswant" number is only used when setting the cursor
7927		position.  It sets the preferred column for when moving the
7928		cursor vertically.  When the "curswant" number is missing the
7929		preferred column is not set.  When it is present and setting a
7930		mark position it is not used.
7931
7932		Note that for '< and '> changing the line number may result in
7933		the marks to be effectively be swapped, so that '< is always
7934		before '>.
7935
7936		Returns 0 when the position could be set, -1 otherwise.
7937		An error message is given if {expr} is invalid.
7938
7939		Also see |getpos()| and |getcurpos()|.
7940
7941		This does not restore the preferred column for moving
7942		vertically; if you set the cursor position with this, |j| and
7943		|k| motions will jump to previous columns!  Use |cursor()| to
7944		also set the preferred column.  Also see the "curswant" key in
7945		|winrestview()|.
7946
7947setqflist({list} [, {action} [, {what}]])		*setqflist()*
7948		Create or replace or add to the quickfix list.
7949
7950		When {what} is not present, use the items in {list}.  Each
7951		item must be a dictionary.  Non-dictionary items in {list} are
7952		ignored.  Each dictionary item can contain the following
7953		entries:
7954
7955		    bufnr	buffer number; must be the number of a valid
7956				buffer
7957		    filename	name of a file; only used when "bufnr" is not
7958				present or it is invalid.
7959		    module	name of a module; if given it will be used in
7960				quickfix error window instead of the filename.
7961		    lnum	line number in the file
7962		    pattern	search pattern used to locate the error
7963		    col		column number
7964		    vcol	when non-zero: "col" is visual column
7965				when zero: "col" is byte index
7966		    nr		error number
7967		    text	description of the error
7968		    type	single-character error type, 'E', 'W', etc.
7969		    valid	recognized error message
7970
7971		The "col", "vcol", "nr", "type" and "text" entries are
7972		optional.  Either "lnum" or "pattern" entry can be used to
7973		locate a matching error line.
7974		If the "filename" and "bufnr" entries are not present or
7975		neither the "lnum" or "pattern" entries are present, then the
7976		item will not be handled as an error line.
7977		If both "pattern" and "lnum" are present then "pattern" will
7978		be used.
7979		If the "valid" entry is not supplied, then the valid flag is
7980		set when "bufnr" is a valid buffer or "filename" exists.
7981		If you supply an empty {list}, the quickfix list will be
7982		cleared.
7983		Note that the list is not exactly the same as what
7984		|getqflist()| returns.
7985
7986		{action} values:				*E927*
7987		'a'	The items from {list} are added to the existing
7988			quickfix list. If there is no existing list, then a
7989			new list is created.
7990
7991		'r'	The items from the current quickfix list are replaced
7992			with the items from {list}.  This can also be used to
7993			clear the list: >
7994				:call setqflist([], 'r')
7995<
7996		'f'	All the quickfix lists in the quickfix stack are
7997			freed.
7998
7999		If {action} is not present or is set to ' ', then a new list
8000		is created. The new quickfix list is added after the current
8001		quickfix list in the stack and all the following lists are
8002		freed. To add a new quickfix list at the end of the stack,
8003		set "nr" in {what} to "$".
8004
8005		If the optional {what} dictionary argument is supplied, then
8006		only the items listed in {what} are set. The first {list}
8007		argument is ignored.  The following items can be specified in
8008		{what}:
8009		    context	quickfix list context. See |quickfix-context|
8010		    efm		errorformat to use when parsing text from
8011				"lines". If this is not present, then the
8012				'errorformat' option value is used.
8013				See |quickfix-parse|
8014		    id		quickfix list identifier |quickfix-ID|
8015		    idx		index of the current entry in the quickfix
8016				list specified by 'id' or 'nr'. If set to '$',
8017				then the last entry in the list is set as the
8018				current entry.  See |quickfix-index|
8019		    items	list of quickfix entries. Same as the {list}
8020				argument.
8021		    lines	use 'errorformat' to parse a list of lines and
8022				add the resulting entries to the quickfix list
8023				{nr} or {id}.  Only a |List| value is supported.
8024				See |quickfix-parse|
8025		    nr		list number in the quickfix stack; zero
8026				means the current quickfix list and "$" means
8027				the last quickfix list.
8028		    title	quickfix list title text. See |quickfix-title|
8029		Unsupported keys in {what} are ignored.
8030		If the "nr" item is not present, then the current quickfix list
8031		is modified. When creating a new quickfix list, "nr" can be
8032		set to a value one greater than the quickfix stack size.
8033		When modifying a quickfix list, to guarantee that the correct
8034		list is modified, "id" should be used instead of "nr" to
8035		specify the list.
8036
8037		Examples (See also |setqflist-examples|): >
8038		   :call setqflist([], 'r', {'title': 'My search'})
8039		   :call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
8040		   :call setqflist([], 'a', {'id':qfid, 'lines':["F1:10:L10"]})
8041<
8042		Returns zero for success, -1 for failure.
8043
8044		This function can be used to create a quickfix list
8045		independent of the 'errorformat' setting.  Use a command like
8046		`:cc 1` to jump to the first position.
8047
8048
8049							*setreg()*
8050setreg({regname}, {value} [, {options}])
8051		Set the register {regname} to {value}.
8052		{value} may be any value returned by |getreg()|, including
8053		a |List|.
8054		If {options} contains "a" or {regname} is upper case,
8055		then the value is appended.
8056		{options} can also contain a register type specification:
8057		    "c" or "v"	      |characterwise| mode
8058		    "l" or "V"	      |linewise| mode
8059		    "b" or "<CTRL-V>" |blockwise-visual| mode
8060		If a number immediately follows "b" or "<CTRL-V>" then this is
8061		used as the width of the selection - if it is not specified
8062		then the width of the block is set to the number of characters
8063		in the longest line (counting a <Tab> as 1 character).
8064
8065		If {options} contains no register settings, then the default
8066		is to use character mode unless {value} ends in a <NL> for
8067		string {value} and linewise mode for list {value}. Blockwise
8068		mode is never selected automatically.
8069		Returns zero for success, non-zero for failure.
8070
8071							*E883*
8072		Note: you may not use |List| containing more than one item to
8073		      set search and expression registers. Lists containing no
8074		      items act like empty strings.
8075
8076		Examples: >
8077			:call setreg(v:register, @*)
8078			:call setreg('*', @%, 'ac')
8079			:call setreg('a', "1\n2\n3", 'b5')
8080
8081<		This example shows using the functions to save and restore a
8082		register: >
8083			:let var_a = getreg('a', 1, 1)
8084			:let var_amode = getregtype('a')
8085			    ....
8086			:call setreg('a', var_a, var_amode)
8087<		Note: you may not reliably restore register value
8088		without using the third argument to |getreg()| as without it
8089		newlines are represented as newlines AND Nul bytes are
8090		represented as newlines as well, see |NL-used-for-Nul|.
8091
8092		You can also change the type of a register by appending
8093		nothing: >
8094			:call setreg('a', '', 'al')
8095
8096settabvar({tabnr}, {varname}, {val})			*settabvar()*
8097		Set tab-local variable {varname} to {val} in tab page {tabnr}.
8098		|t:var|
8099		Note that the variable name without "t:" must be used.
8100		Tabs are numbered starting with one.
8101		This function is not available in the |sandbox|.
8102
8103settabwinvar({tabnr}, {winnr}, {varname}, {val})	*settabwinvar()*
8104		Set option or local variable {varname} in window {winnr} to
8105		{val}.
8106		Tabs are numbered starting with one.  For the current tabpage
8107		use |setwinvar()|.
8108		{winnr} can be the window number or the |window-ID|.
8109		When {winnr} is zero the current window is used.
8110		This also works for a global or local buffer option, but it
8111		doesn't work for a global or local buffer variable.
8112		For a local buffer option the global value is unchanged.
8113		Note that the variable name without "w:" must be used.
8114		Examples: >
8115			:call settabwinvar(1, 1, "&list", 0)
8116			:call settabwinvar(3, 2, "myvar", "foobar")
8117<		This function is not available in the |sandbox|.
8118
8119settagstack({nr}, {dict} [, {action}])			*settagstack()*
8120		Modify the tag stack of the window {nr} using {dict}.
8121		{nr} can be the window number or the |window-ID|.
8122
8123		For a list of supported items in {dict}, refer to
8124		|gettagstack()|
8125							*E962*
8126		If {action} is not present or is set to 'r', then the tag
8127		stack is replaced. If {action} is set to 'a', then new entries
8128		from {dict} are pushed onto the tag stack.
8129
8130		Returns zero for success, -1 for failure.
8131
8132		Examples:
8133		    Set current index of the tag stack to 4: >
8134			call settagstack(1005, {'curidx' : 4})
8135
8136<		    Empty the tag stack of window 3: >
8137			call settagstack(3, {'items' : []})
8138
8139<		    Push a new item onto the tag stack: >
8140			let pos = [bufnr('myfile.txt'), 10, 1, 0]
8141			let newtag = [{'tagname' : 'mytag', 'from' : pos}]
8142			call settagstack(2, {'items' : newtag}, 'a')
8143
8144<		    Save and restore the tag stack: >
8145			let stack = gettagstack(1003)
8146			" do something else
8147			call settagstack(1003, stack)
8148			unlet stack
8149<
8150setwinvar({nr}, {varname}, {val})			*setwinvar()*
8151		Like |settabwinvar()| for the current tab page.
8152		Examples: >
8153			:call setwinvar(1, "&list", 0)
8154			:call setwinvar(2, "myvar", "foobar")
8155
8156sha256({string})						*sha256()*
8157		Returns a String with 64 hex characters, which is the SHA256
8158		checksum of {string}.
8159		{only available when compiled with the |+cryptv| feature}
8160
8161shellescape({string} [, {special}])			*shellescape()*
8162		Escape {string} for use as a shell command argument.
8163		On MS-Windows and MS-DOS, when 'shellslash' is not set, it
8164		will enclose {string} in double quotes and double all double
8165		quotes within {string}.
8166		Otherwise it will enclose {string} in single quotes and
8167		replace all "'" with "'\''".
8168
8169		When the {special} argument is present and it's a non-zero
8170		Number or a non-empty String (|non-zero-arg|), then special
8171		items such as "!", "%", "#" and "<cword>" will be preceded by
8172		a backslash.  This backslash will be removed again by the |:!|
8173		command.
8174
8175		The "!" character will be escaped (again with a |non-zero-arg|
8176		{special}) when 'shell' contains "csh" in the tail.  That is
8177		because for csh and tcsh "!" is used for history replacement
8178		even when inside single quotes.
8179
8180		With a |non-zero-arg| {special} the <NL> character is also
8181		escaped.  When 'shell' containing "csh" in the tail it's
8182		escaped a second time.
8183
8184		Example of use with a |:!| command: >
8185		    :exe '!dir ' . shellescape(expand('<cfile>'), 1)
8186<		This results in a directory listing for the file under the
8187		cursor.  Example of use with |system()|: >
8188		    :call system("chmod +w -- " . shellescape(expand("%")))
8189<		See also |::S|.
8190
8191
8192shiftwidth([{col}])						*shiftwidth()*
8193		Returns the effective value of 'shiftwidth'. This is the
8194		'shiftwidth' value unless it is zero, in which case it is the
8195		'tabstop' value.  This function was introduced with patch
8196		7.3.694 in 2012, everybody should have it by now (however it
8197		did not allow for the optional {col} argument until 8.1.542).
8198
8199		When there is one argument {col} this is used as column number
8200		for which to return the 'shiftwidth' value. This matters for the
8201		'vartabstop' feature. If the 'vartabstop' setting is enabled and
8202		no {col} argument is given, column 1 will be assumed.
8203
8204sign_define({name} [, {dict}])				*sign_define()*
8205		Define a new sign named {name} or modify the attributes of an
8206		existing sign.  This is similar to the |:sign-define| command.
8207
8208		Prefix {name} with a unique text to avoid name collisions.
8209		There is no {group} like with placing signs.
8210
8211		The {name} can be a String or a Number.  The optional {dict}
8212		argument specifies the sign attributes.  The following values
8213		are supported:
8214		   icon		full path to the bitmap file for the sign.
8215		   linehl	highlight group used for the whole line the
8216				sign is placed in.
8217		   text		text that is displayed when there is no icon
8218				or the GUI is not being used.
8219		   texthl	highlight group used for the text item
8220
8221		If the sign named {name} already exists, then the attributes
8222		of the sign are updated.
8223
8224		Returns 0 on success and -1 on failure.
8225
8226		Examples: >
8227			call sign_define("mySign", {"text" : "=>", "texthl" :
8228					\ "Error", "linehl" : "Search"})
8229<
8230sign_getdefined([{name}])				*sign_getdefined()*
8231		Get a list of defined signs and their attributes.
8232		This is similar to the |:sign-list| command.
8233
8234		If the {name} is not supplied, then a list of all the defined
8235		signs is returned. Otherwise the attribute of the specified
8236		sign is returned.
8237
8238		Each list item in the returned value is a dictionary with the
8239		following entries:
8240		   icon		full path to the bitmap file of the sign
8241		   linehl	highlight group used for the whole line the
8242				sign is placed in.
8243		   name		name of the sign
8244		   text		text that is displayed when there is no icon
8245				or the GUI is not being used.
8246		   texthl	highlight group used for the text item
8247
8248		Returns an empty List if there are no signs and when {name} is
8249		not found.
8250
8251		Examples: >
8252			" Get a list of all the defined signs
8253			echo sign_getdefined()
8254
8255			" Get the attribute of the sign named mySign
8256			echo sign_getdefined("mySign")
8257<
8258sign_getplaced([{expr} [, {dict}]])			*sign_getplaced()*
8259		Return a list of signs placed in a buffer or all the buffers.
8260		This is similar to the |:sign-place-list| command.
8261
8262		If the optional buffer name {expr} is specified, then only the
8263		list of signs placed in that buffer is returned.  For the use
8264		of {expr}, see |bufname()|. The optional {dict} can contain
8265		the following entries:
8266		   group	select only signs in this group
8267		   id		select sign with this identifier
8268		   lnum		select signs placed in this line. For the use
8269				of {lnum}, see |line()|.
8270		If {group} is '*', then signs in all the groups including the
8271		global group are returned. If {group} is not supplied or is an
8272		empty string, then only signs in the global group are
8273		returned.  If no arguments are supplied, then signs in the
8274		global group placed in all the buffers are returned.
8275		See |sign-group|.
8276
8277		Each list item in the returned value is a dictionary with the
8278		following entries:
8279			bufnr	number of the buffer with the sign
8280			signs	list of signs placed in {bufnr}. Each list
8281				item is a dictionary with the below listed
8282				entries
8283
8284		The dictionary for each sign contains the following entries:
8285			group	sign group. Set to '' for the global group.
8286			id	identifier of the sign
8287			lnum	line number where the sign is placed
8288			name	name of the defined sign
8289			priority	sign priority
8290
8291		The returned signs in a buffer are ordered by their line
8292		number.
8293
8294		Returns an empty list on failure or if there are no placed
8295		signs.
8296
8297		Examples: >
8298			" Get a List of signs placed in eval.c in the
8299			" global group
8300			echo sign_getplaced("eval.c")
8301
8302			" Get a List of signs in group 'g1' placed in eval.c
8303			echo sign_getplaced("eval.c", {'group' : 'g1'})
8304
8305			" Get a List of signs placed at line 10 in eval.c
8306			echo sign_getplaced("eval.c", {'lnum' : 10})
8307
8308			" Get sign with identifier 10 placed in a.py
8309			echo sign_getplaced("a.py", {'id' : 10})
8310
8311			" Get sign with id 20 in group 'g1' placed in a.py
8312			echo sign_getplaced("a.py", {'group' : 'g1',
8313							\  'id' : 20})
8314
8315			" Get a List of all the placed signs
8316			echo sign_getplaced()
8317<
8318							*sign_jump()*
8319sign_jump({id}, {group}, {expr})
8320		Open the buffer {expr} or jump to the window that contains
8321		{expr} and position the cursor at sign {id} in group {group}.
8322		This is similar to the |:sign-jump| command.
8323
8324		For the use of {expr}, see |bufname()|.
8325
8326		Returns the line number of the sign. Returns -1 if the
8327		arguments are invalid.
8328
8329		Example: >
8330			" Jump to sign 10 in the current buffer
8331			call sign_jump(10, '', '')
8332<
8333							*sign_place()*
8334sign_place({id}, {group}, {name}, {expr} [, {dict}])
8335		Place the sign defined as {name} at line {lnum} in file {expr}
8336		and assign {id} and {group} to sign.  This is similar to the
8337		|:sign-place| command.
8338
8339		If the sign identifier {id} is zero, then a new identifier is
8340		allocated.  Otherwise the specified number is used. {group} is
8341		the sign group name. To use the global sign group, use an
8342		empty string.  {group} functions as a namespace for {id}, thus
8343		two groups can use the same IDs. Refer to |sign-identifier|
8344		and |sign-group| for more information.
8345
8346		{name} refers to a defined sign.
8347		{expr} refers to a buffer name or number. For the accepted
8348		values, see |bufname()|.
8349
8350		The optional {dict} argument supports the following entries:
8351			lnum		line number in the buffer {expr} where
8352					the sign is to be placed. For the
8353					accepted values, see |line()|.
8354			priority	priority of the sign. See
8355					|sign-priority| for more information.
8356
8357		If the optional {dict} is not specified, then it modifies the
8358		placed sign {id} in group {group} to use the defined sign
8359		{name}.
8360
8361		Returns the sign identifier on success and -1 on failure.
8362
8363		Examples: >
8364			" Place a sign named sign1 with id 5 at line 20 in
8365			" buffer json.c
8366			call sign_place(5, '', 'sign1', 'json.c',
8367							\ {'lnum' : 20})
8368
8369			" Updates sign 5 in buffer json.c to use sign2
8370			call sign_place(5, '', 'sign2', 'json.c')
8371
8372			" Place a sign named sign3 at line 30 in
8373			" buffer json.c with a new identifier
8374			let id = sign_place(0, '', 'sign3', 'json.c',
8375							\ {'lnum' : 30})
8376
8377			" Place a sign named sign4 with id 10 in group 'g3'
8378			" at line 40 in buffer json.c with priority 90
8379			call sign_place(10, 'g3', 'sign4', 'json.c',
8380					\ {'lnum' : 40, 'priority' : 90})
8381<
8382sign_undefine([{name}])					*sign_undefine()*
8383		Deletes a previously defined sign {name}. This is similar to
8384		the |:sign-undefine| command. If {name} is not supplied, then
8385		deletes all the defined signs.
8386
8387		Returns 0 on success and -1 on failure.
8388
8389		Examples: >
8390			" Delete a sign named mySign
8391			call sign_undefine("mySign")
8392
8393			" Delete all the signs
8394			call sign_undefine()
8395<
8396sign_unplace({group} [, {dict}])			*sign_unplace()*
8397		Remove a previously placed sign in one or more buffers.  This
8398		is similar to the |:sign-unplace| command.
8399
8400		{group} is the sign group name. To use the global sign group,
8401		use an empty string.  If {group} is set to '*', then all the
8402		groups including the global group are used.
8403		The signs in {group} are selected based on the entries in
8404		{dict}.  The following optional entries in {dict} are
8405		supported:
8406			buffer	buffer name or number. See |bufname()|.
8407			id	sign identifier
8408		If {dict} is not supplied, then all the signs in {group} are
8409		removed.
8410
8411		Returns 0 on success and -1 on failure.
8412
8413		Examples: >
8414			" Remove sign 10 from buffer a.vim
8415			call sign_unplace('', {'buffer' : "a.vim", 'id' : 10})
8416
8417			" Remove sign 20 in group 'g1' from buffer 3
8418			call sign_unplace('g1', {'buffer' : 3, 'id' : 20})
8419
8420			" Remove all the signs in group 'g2' from buffer 10
8421			call sign_unplace('g2', {'buffer' : 10})
8422
8423			" Remove sign 30 in group 'g3' from all the buffers
8424			call sign_unplace('g3', {'id' : 30})
8425
8426			" Remove all the signs placed in buffer 5
8427			call sign_unplace('*', {'buffer' : 5})
8428
8429			" Remove the signs in group 'g4' from all the buffers
8430			call sign_unplace('g4')
8431
8432			" Remove sign 40 from all the buffers
8433			call sign_unplace('*', {'id' : 40})
8434
8435			" Remove all the placed signs from all the buffers
8436			call sign_unplace('*')
8437<
8438simplify({filename})					*simplify()*
8439		Simplify the file name as much as possible without changing
8440		the meaning.  Shortcuts (on MS-Windows) or symbolic links (on
8441		Unix) are not resolved.  If the first path component in
8442		{filename} designates the current directory, this will be
8443		valid for the result as well.  A trailing path separator is
8444		not removed either.
8445		Example: >
8446			simplify("./dir/.././/file/") == "./file/"
8447<		Note: The combination "dir/.." is only removed if "dir" is
8448		a searchable directory or does not exist.  On Unix, it is also
8449		removed when "dir" is a symbolic link within the same
8450		directory.  In order to resolve all the involved symbolic
8451		links before simplifying the path name, use |resolve()|.
8452
8453
8454sin({expr})						*sin()*
8455		Return the sine of {expr}, measured in radians, as a |Float|.
8456		{expr} must evaluate to a |Float| or a |Number|.
8457		Examples: >
8458			:echo sin(100)
8459<			-0.506366 >
8460			:echo sin(-4.01)
8461<			0.763301
8462		{only available when compiled with the |+float| feature}
8463
8464
8465sinh({expr})						*sinh()*
8466		Return the hyperbolic sine of {expr} as a |Float| in the range
8467		[-inf, inf].
8468		{expr} must evaluate to a |Float| or a |Number|.
8469		Examples: >
8470			:echo sinh(0.5)
8471<			0.521095 >
8472			:echo sinh(-0.9)
8473<			-1.026517
8474		{only available when compiled with the |+float| feature}
8475
8476
8477sort({list} [, {func} [, {dict}]])			*sort()* *E702*
8478		Sort the items in {list} in-place.  Returns {list}.
8479
8480		If you want a list to remain unmodified make a copy first: >
8481			:let sortedlist = sort(copy(mylist))
8482
8483<		When {func} is omitted, is empty or zero, then sort() uses the
8484		string representation of each item to sort on.  Numbers sort
8485		after Strings, |Lists| after Numbers.  For sorting text in the
8486		current buffer use |:sort|.
8487
8488		When {func} is given and it is '1' or 'i' then case is
8489		ignored.
8490
8491		When {func} is given and it is 'n' then all items will be
8492		sorted numerical (Implementation detail: This uses the
8493		strtod() function to parse numbers, Strings, Lists, Dicts and
8494		Funcrefs will be considered as being 0).
8495
8496		When {func} is given and it is 'N' then all items will be
8497		sorted numerical. This is like 'n' but a string containing
8498		digits will be used as the number they represent.
8499
8500		When {func} is given and it is 'f' then all items will be
8501		sorted numerical. All values must be a Number or a Float.
8502
8503		When {func} is a |Funcref| or a function name, this function
8504		is called to compare items.  The function is invoked with two
8505		items as argument and must return zero if they are equal, 1 or
8506		bigger if the first one sorts after the second one, -1 or
8507		smaller if the first one sorts before the second one.
8508
8509		{dict} is for functions with the "dict" attribute.  It will be
8510		used to set the local variable "self". |Dictionary-function|
8511
8512		The sort is stable, items which compare equal (as number or as
8513		string) will keep their relative position. E.g., when sorting
8514		on numbers, text strings will sort next to each other, in the
8515		same order as they were originally.
8516
8517		Also see |uniq()|.
8518
8519		Example: >
8520			func MyCompare(i1, i2)
8521			   return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
8522			endfunc
8523			let sortedlist = sort(mylist, "MyCompare")
8524<		A shorter compare version for this specific simple case, which
8525		ignores overflow: >
8526			func MyCompare(i1, i2)
8527			   return a:i1 - a:i2
8528			endfunc
8529<
8530							*soundfold()*
8531soundfold({word})
8532		Return the sound-folded equivalent of {word}.  Uses the first
8533		language in 'spelllang' for the current window that supports
8534		soundfolding.  'spell' must be set.  When no sound folding is
8535		possible the {word} is returned unmodified.
8536		This can be used for making spelling suggestions.  Note that
8537		the method can be quite slow.
8538
8539							*spellbadword()*
8540spellbadword([{sentence}])
8541		Without argument: The result is the badly spelled word under
8542		or after the cursor.  The cursor is moved to the start of the
8543		bad word.  When no bad word is found in the cursor line the
8544		result is an empty string and the cursor doesn't move.
8545
8546		With argument: The result is the first word in {sentence} that
8547		is badly spelled.  If there are no spelling mistakes the
8548		result is an empty string.
8549
8550		The return value is a list with two items:
8551		- The badly spelled word or an empty string.
8552		- The type of the spelling error:
8553			"bad"		spelling mistake
8554			"rare"		rare word
8555			"local"		word only valid in another region
8556			"caps"		word should start with Capital
8557		Example: >
8558			echo spellbadword("the quik brown fox")
8559<			['quik', 'bad'] ~
8560
8561		The spelling information for the current window is used.  The
8562		'spell' option must be set and the value of 'spelllang' is
8563		used.
8564
8565							*spellsuggest()*
8566spellsuggest({word} [, {max} [, {capital}]])
8567		Return a |List| with spelling suggestions to replace {word}.
8568		When {max} is given up to this number of suggestions are
8569		returned.  Otherwise up to 25 suggestions are returned.
8570
8571		When the {capital} argument is given and it's non-zero only
8572		suggestions with a leading capital will be given.  Use this
8573		after a match with 'spellcapcheck'.
8574
8575		{word} can be a badly spelled word followed by other text.
8576		This allows for joining two words that were split.  The
8577		suggestions also include the following text, thus you can
8578		replace a line.
8579
8580		{word} may also be a good word.  Similar words will then be
8581		returned.  {word} itself is not included in the suggestions,
8582		although it may appear capitalized.
8583
8584		The spelling information for the current window is used.  The
8585		'spell' option must be set and the values of 'spelllang' and
8586		'spellsuggest' are used.
8587
8588
8589split({expr} [, {pattern} [, {keepempty}]])			*split()*
8590		Make a |List| out of {expr}.  When {pattern} is omitted or
8591		empty each white-separated sequence of characters becomes an
8592		item.
8593		Otherwise the string is split where {pattern} matches,
8594		removing the matched characters. 'ignorecase' is not used
8595		here, add \c to ignore case. |/\c|
8596		When the first or last item is empty it is omitted, unless the
8597		{keepempty} argument is given and it's non-zero.
8598		Other empty items are kept when {pattern} matches at least one
8599		character or when {keepempty} is non-zero.
8600		Example: >
8601			:let words = split(getline('.'), '\W\+')
8602<		To split a string in individual characters: >
8603			:for c in split(mystring, '\zs')
8604<		If you want to keep the separator you can also use '\zs' at
8605		the end of the pattern: >
8606			:echo split('abc:def:ghi', ':\zs')
8607<			['abc:', 'def:', 'ghi'] ~
8608		Splitting a table where the first element can be empty: >
8609			:let items = split(line, ':', 1)
8610<		The opposite function is |join()|.
8611
8612
8613sqrt({expr})						*sqrt()*
8614		Return the non-negative square root of Float {expr} as a
8615		|Float|.
8616		{expr} must evaluate to a |Float| or a |Number|.  When {expr}
8617		is negative the result is NaN (Not a Number).
8618		Examples: >
8619			:echo sqrt(100)
8620<			10.0 >
8621			:echo sqrt(-4.01)
8622<			nan
8623		"nan" may be different, it depends on system libraries.
8624		{only available when compiled with the |+float| feature}
8625
8626
8627str2float({expr})					*str2float()*
8628		Convert String {expr} to a Float.  This mostly works the same
8629		as when using a floating point number in an expression, see
8630		|floating-point-format|.  But it's a bit more permissive.
8631		E.g., "1e40" is accepted, while in an expression you need to
8632		write "1.0e40".  The hexadecimal form "0x123" is also
8633		accepted, but not others, like binary or octal.
8634		Text after the number is silently ignored.
8635		The decimal point is always '.', no matter what the locale is
8636		set to.  A comma ends the number: "12,345.67" is converted to
8637		12.0.  You can strip out thousands separators with
8638		|substitute()|: >
8639			let f = str2float(substitute(text, ',', '', 'g'))
8640<		{only available when compiled with the |+float| feature}
8641
8642
8643str2nr({expr} [, {base}])				*str2nr()*
8644		Convert string {expr} to a number.
8645		{base} is the conversion base, it can be 2, 8, 10 or 16.
8646		When {base} is omitted base 10 is used.  This also means that
8647		a leading zero doesn't cause octal conversion to be used, as
8648		with the default String to Number conversion.
8649		When {base} is 16 a leading "0x" or "0X" is ignored.  With a
8650		different base the result will be zero.  Similarly, when
8651		{base} is 8 a leading "0" is ignored, and when {base} is 2 a
8652		leading "0b" or "0B" is ignored.
8653		Text after the number is silently ignored.
8654
8655
8656strchars({expr} [, {skipcc}])					*strchars()*
8657		The result is a Number, which is the number of characters
8658		in String {expr}.
8659		When {skipcc} is omitted or zero, composing characters are
8660		counted separately.
8661		When {skipcc} set to 1, Composing characters are ignored.
8662		Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
8663
8664		{skipcc} is only available after 7.4.755.  For backward
8665		compatibility, you can define a wrapper function: >
8666		    if has("patch-7.4.755")
8667		      function s:strchars(str, skipcc)
8668			return strchars(a:str, a:skipcc)
8669		      endfunction
8670		    else
8671		      function s:strchars(str, skipcc)
8672			if a:skipcc
8673			  return strlen(substitute(a:str, ".", "x", "g"))
8674			else
8675			  return strchars(a:str)
8676			endif
8677		      endfunction
8678		    endif
8679<
8680strcharpart({src}, {start} [, {len}])			*strcharpart()*
8681		Like |strpart()| but using character index and length instead
8682		of byte index and length.
8683		When a character index is used where a character does not
8684		exist it is assumed to be one character.  For example: >
8685			strcharpart('abc', -1, 2)
8686<		results in 'a'.
8687
8688strdisplaywidth({expr} [, {col}])			*strdisplaywidth()*
8689		The result is a Number, which is the number of display cells
8690		String {expr} occupies on the screen when it starts at {col}
8691		(first column is zero).  When {col} is omitted zero is used.
8692		Otherwise it is the screen column where to start.  This
8693		matters for Tab characters.
8694		The option settings of the current window are used.  This
8695		matters for anything that's displayed differently, such as
8696		'tabstop' and 'display'.
8697		When {expr} contains characters with East Asian Width Class
8698		Ambiguous, this function's return value depends on 'ambiwidth'.
8699		Also see |strlen()|, |strwidth()| and |strchars()|.
8700
8701strftime({format} [, {time}])				*strftime()*
8702		The result is a String, which is a formatted date and time, as
8703		specified by the {format} string.  The given {time} is used,
8704		or the current time if no time is given.  The accepted
8705		{format} depends on your system, thus this is not portable!
8706		See the manual page of the C function strftime() for the
8707		format.  The maximum length of the result is 80 characters.
8708		See also |localtime()| and |getftime()|.
8709		The language can be changed with the |:language| command.
8710		Examples: >
8711		  :echo strftime("%c")		   Sun Apr 27 11:49:23 1997
8712		  :echo strftime("%Y %b %d %X")	   1997 Apr 27 11:53:25
8713		  :echo strftime("%y%m%d %T")	   970427 11:53:55
8714		  :echo strftime("%H:%M")	   11:55
8715		  :echo strftime("%c", getftime("file.c"))
8716						   Show mod time of file.c.
8717<		Not available on all systems.  To check use: >
8718			:if exists("*strftime")
8719
8720strgetchar({str}, {index})				*strgetchar()*
8721		Get character {index} from {str}.  This uses a character
8722		index, not a byte index.  Composing characters are considered
8723		separate characters here.
8724		Also see |strcharpart()| and |strchars()|.
8725
8726stridx({haystack}, {needle} [, {start}])		*stridx()*
8727		The result is a Number, which gives the byte index in
8728		{haystack} of the first occurrence of the String {needle}.
8729		If {start} is specified, the search starts at index {start}.
8730		This can be used to find a second match: >
8731			:let colon1 = stridx(line, ":")
8732			:let colon2 = stridx(line, ":", colon1 + 1)
8733<		The search is done case-sensitive.
8734		For pattern searches use |match()|.
8735		-1 is returned if the {needle} does not occur in {haystack}.
8736		See also |strridx()|.
8737		Examples: >
8738		  :echo stridx("An Example", "Example")	     3
8739		  :echo stridx("Starting point", "Start")    0
8740		  :echo stridx("Starting point", "start")   -1
8741<						*strstr()* *strchr()*
8742		stridx() works similar to the C function strstr().  When used
8743		with a single character it works similar to strchr().
8744
8745							*string()*
8746string({expr})	Return {expr} converted to a String.  If {expr} is a Number,
8747		Float, String, Blob or a composition of them, then the result
8748		can be parsed back with |eval()|.
8749			{expr} type	result ~
8750			String		'string' (single quotes are doubled)
8751			Number		123
8752			Float		123.123456 or 1.123456e8
8753			Funcref		function('name')
8754			Blob		0z00112233.44556677.8899
8755			List		[item, item]
8756			Dictionary	{key: value, key: value}
8757
8758		When a List or Dictionary has a recursive reference it is
8759		replaced by "[...]" or "{...}".  Using eval() on the result
8760		will then fail.
8761
8762		Also see |strtrans()|.
8763
8764							*strlen()*
8765strlen({expr})	The result is a Number, which is the length of the String
8766		{expr} in bytes.
8767		If the argument is a Number it is first converted to a String.
8768		For other types an error is given.
8769		If you want to count the number of multi-byte characters use
8770		|strchars()|.
8771		Also see |len()|, |strdisplaywidth()| and |strwidth()|.
8772
8773strpart({src}, {start} [, {len}])			*strpart()*
8774		The result is a String, which is part of {src}, starting from
8775		byte {start}, with the byte length {len}.
8776		To count characters instead of bytes use |strcharpart()|.
8777
8778		When bytes are selected which do not exist, this doesn't
8779		result in an error, the bytes are simply omitted.
8780		If {len} is missing, the copy continues from {start} till the
8781		end of the {src}. >
8782			strpart("abcdefg", 3, 2)    == "de"
8783			strpart("abcdefg", -2, 4)   == "ab"
8784			strpart("abcdefg", 5, 4)    == "fg"
8785			strpart("abcdefg", 3)	    == "defg"
8786
8787<		Note: To get the first character, {start} must be 0.  For
8788		example, to get three bytes under and after the cursor: >
8789			strpart(getline("."), col(".") - 1, 3)
8790<
8791strridx({haystack}, {needle} [, {start}])			*strridx()*
8792		The result is a Number, which gives the byte index in
8793		{haystack} of the last occurrence of the String {needle}.
8794		When {start} is specified, matches beyond this index are
8795		ignored.  This can be used to find a match before a previous
8796		match: >
8797			:let lastcomma = strridx(line, ",")
8798			:let comma2 = strridx(line, ",", lastcomma - 1)
8799<		The search is done case-sensitive.
8800		For pattern searches use |match()|.
8801		-1 is returned if the {needle} does not occur in {haystack}.
8802		If the {needle} is empty the length of {haystack} is returned.
8803		See also |stridx()|.  Examples: >
8804		  :echo strridx("an angry armadillo", "an")	     3
8805<							*strrchr()*
8806		When used with a single character it works similar to the C
8807		function strrchr().
8808
8809strtrans({expr})					*strtrans()*
8810		The result is a String, which is {expr} with all unprintable
8811		characters translated into printable characters |'isprint'|.
8812		Like they are shown in a window.  Example: >
8813			echo strtrans(@a)
8814<		This displays a newline in register a as "^@" instead of
8815		starting a new line.
8816
8817strwidth({expr})					*strwidth()*
8818		The result is a Number, which is the number of display cells
8819		String {expr} occupies.  A Tab character is counted as one
8820		cell, alternatively use |strdisplaywidth()|.
8821		When {expr} contains characters with East Asian Width Class
8822		Ambiguous, this function's return value depends on 'ambiwidth'.
8823		Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
8824
8825submatch({nr} [, {list}])			*submatch()* *E935*
8826		Only for an expression in a |:substitute| command or
8827		substitute() function.
8828		Returns the {nr}'th submatch of the matched text.  When {nr}
8829		is 0 the whole matched text is returned.
8830		Note that a NL in the string can stand for a line break of a
8831		multi-line match or a NUL character in the text.
8832		Also see |sub-replace-expression|.
8833
8834		If {list} is present and non-zero then submatch() returns
8835		a list of strings, similar to |getline()| with two arguments.
8836		NL characters in the text represent NUL characters in the
8837		text.
8838		Only returns more than one item for |:substitute|, inside
8839		|substitute()| this list will always contain one or zero
8840		items, since there are no real line breaks.
8841
8842		When substitute() is used recursively only the submatches in
8843		the current (deepest) call can be obtained.
8844
8845		Examples: >
8846			:s/\d\+/\=submatch(0) + 1/
8847			:echo substitute(text, '\d\+', '\=submatch(0) + 1', '')
8848<		This finds the first number in the line and adds one to it.
8849		A line break is included as a newline character.
8850
8851substitute({expr}, {pat}, {sub}, {flags})		*substitute()*
8852		The result is a String, which is a copy of {expr}, in which
8853		the first match of {pat} is replaced with {sub}.
8854		When {flags} is "g", all matches of {pat} in {expr} are
8855		replaced.  Otherwise {flags} should be "".
8856
8857		This works like the ":substitute" command (without any flags).
8858		But the matching with {pat} is always done like the 'magic'
8859		option is set and 'cpoptions' is empty (to make scripts
8860		portable).  'ignorecase' is still relevant, use |/\c| or |/\C|
8861		if you want to ignore or match case and ignore 'ignorecase'.
8862		'smartcase' is not used.  See |string-match| for how {pat} is
8863		used.
8864
8865		A "~" in {sub} is not replaced with the previous {sub}.
8866		Note that some codes in {sub} have a special meaning
8867		|sub-replace-special|.  For example, to replace something with
8868		"\n" (two characters), use "\\\\n" or '\\n'.
8869
8870		When {pat} does not match in {expr}, {expr} is returned
8871		unmodified.
8872
8873		Example: >
8874		   :let &path = substitute(&path, ",\\=[^,]*$", "", "")
8875<		This removes the last component of the 'path' option. >
8876		   :echo substitute("testing", ".*", "\\U\\0", "")
8877<		results in "TESTING".
8878
8879		When {sub} starts with "\=", the remainder is interpreted as
8880		an expression. See |sub-replace-expression|.  Example: >
8881		   :echo substitute(s, '%\(\x\x\)',
8882			   \ '\=nr2char("0x" . submatch(1))', 'g')
8883
8884<		When {sub} is a Funcref that function is called, with one
8885		optional argument.  Example: >
8886		   :echo substitute(s, '%\(\x\x\)', SubNr, 'g')
8887<		The optional argument is a list which contains the whole
8888		matched string and up to nine submatches, like what
8889		|submatch()| returns.  Example: >
8890		   :echo substitute(s, '%\(\x\x\)', {m -> '0x' . m[1]}, 'g')
8891
8892swapinfo({fname})					*swapinfo()*
8893		The result is a dictionary, which holds information about the
8894		swapfile {fname}. The available fields are:
8895			version Vim version
8896			user	user name
8897			host	host name
8898			fname	original file name
8899			pid	PID of the Vim process that created the swap
8900				file
8901			mtime	last modification time in seconds
8902			inode	Optional: INODE number of the file
8903			dirty	1 if file was modified, 0 if not
8904		Note that "user" and "host" are truncated to at most 39 bytes.
8905		In case of failure an "error" item is added with the reason:
8906			Cannot open file: file not found or in accessible
8907			Cannot read file: cannot read first block
8908			Not a swap file: does not contain correct block ID
8909			Magic number mismatch: Info in first block is invalid
8910
8911swapname({expr})					*swapname()*
8912		The result is the swap file path of the buffer {expr}.
8913		For the use of {expr}, see |bufname()| above.
8914		If buffer {expr} is the current buffer, the result is equal to
8915		|:swapname| (unless no swap file).
8916		If buffer {expr} has no swap file, returns an empty string.
8917
8918synID({lnum}, {col}, {trans})				*synID()*
8919		The result is a Number, which is the syntax ID at the position
8920		{lnum} and {col} in the current window.
8921		The syntax ID can be used with |synIDattr()| and
8922		|synIDtrans()| to obtain syntax information about text.
8923
8924		{col} is 1 for the leftmost column, {lnum} is 1 for the first
8925		line.  'synmaxcol' applies, in a longer line zero is returned.
8926		Note that when the position is after the last character,
8927		that's where the cursor can be in Insert mode, synID() returns
8928		zero.
8929
8930		When {trans} is |TRUE|, transparent items are reduced to the
8931		item that they reveal.  This is useful when wanting to know
8932		the effective color.  When {trans} is |FALSE|, the transparent
8933		item is returned.  This is useful when wanting to know which
8934		syntax item is effective (e.g. inside parens).
8935		Warning: This function can be very slow.  Best speed is
8936		obtained by going through the file in forward direction.
8937
8938		Example (echoes the name of the syntax item under the cursor): >
8939			:echo synIDattr(synID(line("."), col("."), 1), "name")
8940<
8941
8942synIDattr({synID}, {what} [, {mode}])			*synIDattr()*
8943		The result is a String, which is the {what} attribute of
8944		syntax ID {synID}.  This can be used to obtain information
8945		about a syntax item.
8946		{mode} can be "gui", "cterm" or "term", to get the attributes
8947		for that mode.  When {mode} is omitted, or an invalid value is
8948		used, the attributes for the currently active highlighting are
8949		used (GUI, cterm or term).
8950		Use synIDtrans() to follow linked highlight groups.
8951		{what}		result
8952		"name"		the name of the syntax item
8953		"fg"		foreground color (GUI: color name used to set
8954				the color, cterm: color number as a string,
8955				term: empty string)
8956		"bg"		background color (as with "fg")
8957		"font"		font name (only available in the GUI)
8958				|highlight-font|
8959		"sp"		special color (as with "fg") |highlight-guisp|
8960		"fg#"		like "fg", but for the GUI and the GUI is
8961				running the name in "#RRGGBB" form
8962		"bg#"		like "fg#" for "bg"
8963		"sp#"		like "fg#" for "sp"
8964		"bold"		"1" if bold
8965		"italic"	"1" if italic
8966		"reverse"	"1" if reverse
8967		"inverse"	"1" if inverse (= reverse)
8968		"standout"	"1" if standout
8969		"underline"	"1" if underlined
8970		"undercurl"	"1" if undercurled
8971		"strike"	"1" if strikethrough
8972
8973		Example (echoes the color of the syntax item under the
8974		cursor): >
8975	:echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg")
8976<
8977synIDtrans({synID})					*synIDtrans()*
8978		The result is a Number, which is the translated syntax ID of
8979		{synID}.  This is the syntax group ID of what is being used to
8980		highlight the character.  Highlight links given with
8981		":highlight link" are followed.
8982
8983synconcealed({lnum}, {col})				*synconcealed()*
8984		The result is a List with currently three items:
8985		1. The first item in the list is 0 if the character at the
8986		   position {lnum} and {col} is not part of a concealable
8987		   region, 1 if it is.
8988		2. The second item in the list is a string. If the first item
8989		   is 1, the second item contains the text which will be
8990		   displayed in place of the concealed text, depending on the
8991		   current setting of 'conceallevel' and 'listchars'.
8992		3. The third and final item in the list is a number
8993		   representing the specific syntax region matched in the
8994		   line. When the character is not concealed the value is
8995		   zero. This allows detection of the beginning of a new
8996		   concealable region if there are two consecutive regions
8997		   with the same replacement character.  For an example, if
8998		   the text is "123456" and both "23" and "45" are concealed
8999		   and replaced by the character "X", then:
9000			call			returns ~
9001			synconcealed(lnum, 1)   [0, '', 0]
9002			synconcealed(lnum, 2)   [1, 'X', 1]
9003			synconcealed(lnum, 3)   [1, 'X', 1]
9004			synconcealed(lnum, 4)   [1, 'X', 2]
9005			synconcealed(lnum, 5)   [1, 'X', 2]
9006			synconcealed(lnum, 6)   [0, '', 0]
9007
9008
9009synstack({lnum}, {col})					*synstack()*
9010		Return a |List|, which is the stack of syntax items at the
9011		position {lnum} and {col} in the current window.  Each item in
9012		the List is an ID like what |synID()| returns.
9013		The first item in the List is the outer region, following are
9014		items contained in that one.  The last one is what |synID()|
9015		returns, unless not the whole item is highlighted or it is a
9016		transparent item.
9017		This function is useful for debugging a syntax file.
9018		Example that shows the syntax stack under the cursor: >
9019			for id in synstack(line("."), col("."))
9020			   echo synIDattr(id, "name")
9021			endfor
9022<		When the position specified with {lnum} and {col} is invalid
9023		nothing is returned.  The position just after the last
9024		character in a line and the first column in an empty line are
9025		valid positions.
9026
9027system({expr} [, {input}])				*system()* *E677*
9028		Get the output of the shell command {expr} as a string.  See
9029		|systemlist()| to get the output as a List.
9030
9031		When {input} is given and is a string this string is written
9032		to a file and passed as stdin to the command.  The string is
9033		written as-is, you need to take care of using the correct line
9034		separators yourself.
9035		If {input} is given and is a |List| it is written to the file
9036		in a way |writefile()| does with {binary} set to "b" (i.e.
9037		with a newline between each list item with newlines inside
9038		list items converted to NULs).
9039		When {input} is given and is a number that is a valid id for
9040		an existing buffer then the content of the buffer is written
9041		to the file line by line, each line terminated by a NL and
9042		NULs characters where the text has a NL.
9043
9044		Pipes are not used, the 'shelltemp' option is not used.
9045
9046		When prepended by |:silent| the terminal will not be set to
9047		cooked mode.  This is meant to be used for commands that do
9048		not need the user to type.  It avoids stray characters showing
9049		up on the screen which require |CTRL-L| to remove. >
9050			:silent let f = system('ls *.vim')
9051<
9052		Note: Use |shellescape()| or |::S| with |expand()| or
9053		|fnamemodify()| to escape special characters in a command
9054		argument.  Newlines in {expr} may cause the command to fail.
9055		The characters in 'shellquote' and 'shellxquote' may also
9056		cause trouble.
9057		This is not to be used for interactive commands.
9058
9059		The result is a String.  Example: >
9060		    :let files = system("ls " .  shellescape(expand('%:h')))
9061		    :let files = system('ls ' . expand('%:h:S'))
9062
9063<		To make the result more system-independent, the shell output
9064		is filtered to replace <CR> with <NL> for Macintosh, and
9065		<CR><NL> with <NL> for DOS-like systems.
9066		To avoid the string being truncated at a NUL, all NUL
9067		characters are replaced with SOH (0x01).
9068
9069		The command executed is constructed using several options:
9070	'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote'
9071		({tmp} is an automatically generated file name).
9072		For Unix and OS/2 braces are put around {expr} to allow for
9073		concatenated commands.
9074
9075		The command will be executed in "cooked" mode, so that a
9076		CTRL-C will interrupt the command (on Unix at least).
9077
9078		The resulting error code can be found in |v:shell_error|.
9079		This function will fail in |restricted-mode|.
9080
9081		Note that any wrong value in the options mentioned above may
9082		make the function fail.  It has also been reported to fail
9083		when using a security agent application.
9084		Unlike ":!cmd" there is no automatic check for changed files.
9085		Use |:checktime| to force a check.
9086
9087
9088systemlist({expr} [, {input}])				*systemlist()*
9089		Same as |system()|, but returns a |List| with lines (parts of
9090		output separated by NL) with NULs transformed into NLs. Output
9091		is the same as |readfile()| will output with {binary} argument
9092		set to "b".  Note that on MS-Windows you may get trailing CR
9093		characters.
9094
9095		Returns an empty string on error.
9096
9097
9098tabpagebuflist([{arg}])					*tabpagebuflist()*
9099		The result is a |List|, where each item is the number of the
9100		buffer associated with each window in the current tab page.
9101		{arg} specifies the number of the tab page to be used. When
9102		omitted the current tab page is used.
9103		When {arg} is invalid the number zero is returned.
9104		To get a list of all buffers in all tabs use this: >
9105			let buflist = []
9106			for i in range(tabpagenr('$'))
9107			   call extend(buflist, tabpagebuflist(i + 1))
9108			endfor
9109<		Note that a buffer may appear in more than one window.
9110
9111
9112tabpagenr([{arg}])					*tabpagenr()*
9113		The result is a Number, which is the number of the current
9114		tab page.  The first tab page has number 1.
9115		When the optional argument is "$", the number of the last tab
9116		page is returned (the tab page count).
9117		The number can be used with the |:tab| command.
9118
9119
9120tabpagewinnr({tabarg} [, {arg}])			*tabpagewinnr()*
9121		Like |winnr()| but for tab page {tabarg}.
9122		{tabarg} specifies the number of tab page to be used.
9123		{arg} is used like with |winnr()|:
9124		- When omitted the current window number is returned.  This is
9125		  the window which will be used when going to this tab page.
9126		- When "$" the number of windows is returned.
9127		- When "#" the previous window nr is returned.
9128		Useful examples: >
9129		    tabpagewinnr(1)	    " current window of tab page 1
9130		    tabpagewinnr(4, '$')    " number of windows in tab page 4
9131<		When {tabarg} is invalid zero is returned.
9132
9133							*tagfiles()*
9134tagfiles()	Returns a |List| with the file names used to search for tags
9135		for the current buffer.  This is the 'tags' option expanded.
9136
9137
9138taglist({expr} [, {filename}])				*taglist()*
9139		Returns a list of tags matching the regular expression {expr}.
9140
9141		If {filename} is passed it is used to prioritize the results
9142		in the same way that |:tselect| does. See |tag-priority|.
9143		{filename} should be the full path of the file.
9144
9145		Each list item is a dictionary with at least the following
9146		entries:
9147			name		Name of the tag.
9148			filename	Name of the file where the tag is
9149					defined.  It is either relative to the
9150					current directory or a full path.
9151			cmd		Ex command used to locate the tag in
9152					the file.
9153			kind		Type of the tag.  The value for this
9154					entry depends on the language specific
9155					kind values.  Only available when
9156					using a tags file generated by
9157					Exuberant ctags or hdrtag.
9158			static		A file specific tag.  Refer to
9159					|static-tag| for more information.
9160		More entries may be present, depending on the content of the
9161		tags file: access, implementation, inherits and signature.
9162		Refer to the ctags documentation for information about these
9163		fields.  For C code the fields "struct", "class" and "enum"
9164		may appear, they give the name of the entity the tag is
9165		contained in.
9166
9167		The ex-command "cmd" can be either an ex search pattern, a
9168		line number or a line number followed by a byte number.
9169
9170		If there are no matching tags, then an empty list is returned.
9171
9172		To get an exact tag match, the anchors '^' and '$' should be
9173		used in {expr}.  This also make the function work faster.
9174		Refer to |tag-regexp| for more information about the tag
9175		search regular expression pattern.
9176
9177		Refer to |'tags'| for information about how the tags file is
9178		located by Vim. Refer to |tags-file-format| for the format of
9179		the tags file generated by the different ctags tools.
9180
9181tan({expr})						*tan()*
9182		Return the tangent of {expr}, measured in radians, as a |Float|
9183		in the range [-inf, inf].
9184		{expr} must evaluate to a |Float| or a |Number|.
9185		Examples: >
9186			:echo tan(10)
9187<			0.648361 >
9188			:echo tan(-4.01)
9189<			-1.181502
9190		{only available when compiled with the |+float| feature}
9191
9192
9193tanh({expr})						*tanh()*
9194		Return the hyperbolic tangent of {expr} as a |Float| in the
9195		range [-1, 1].
9196		{expr} must evaluate to a |Float| or a |Number|.
9197		Examples: >
9198			:echo tanh(0.5)
9199<			0.462117 >
9200			:echo tanh(-1)
9201<			-0.761594
9202		{only available when compiled with the |+float| feature}
9203
9204
9205tempname()					*tempname()* *temp-file-name*
9206		The result is a String, which is the name of a file that
9207		doesn't exist.  It can be used for a temporary file.  The name
9208		is different for at least 26 consecutive calls.  Example: >
9209			:let tmpfile = tempname()
9210			:exe "redir > " . tmpfile
9211<		For Unix, the file will be in a private directory |tempfile|.
9212		For MS-Windows forward slashes are used when the 'shellslash'
9213		option is set or when 'shellcmdflag' starts with '-'.
9214
9215							*term_dumpdiff()*
9216term_dumpdiff({filename}, {filename} [, {options}])
9217		Open a new window displaying the difference between the two
9218		files.  The files must have been created with
9219		|term_dumpwrite()|.
9220		Returns the buffer number or zero when the diff fails.
9221		Also see |terminal-diff|.
9222		NOTE: this does not work with double-width characters yet.
9223
9224		The top part of the buffer contains the contents of the first
9225		file, the bottom part of the buffer contains the contents of
9226		the second file.  The middle part shows the differences.
9227		The parts are separated by a line of equals.
9228
9229		If the {options} argument is present, it must be a Dict with
9230		these possible members:
9231		   "term_name"	     name to use for the buffer name, instead
9232				     of the first file name.
9233		   "term_rows"	     vertical size to use for the terminal,
9234				     instead of using 'termwinsize'
9235		   "term_cols"	     horizontal size to use for the terminal,
9236				     instead of using 'termwinsize'
9237		   "vertical"	     split the window vertically
9238		   "curwin"	     use the current window, do not split the
9239				     window; fails if the current buffer
9240				     cannot be |abandon|ed
9241		   "norestore"	     do not add the terminal window to a
9242				     session file
9243
9244		Each character in the middle part indicates a difference. If
9245		there are multiple differences only the first in this list is
9246		used:
9247			X	different character
9248			w	different width
9249			f	different foreground color
9250			b	different background color
9251			a	different attribute
9252			+	missing position in first file
9253			-	missing position in second file
9254
9255		Using the "s" key the top and bottom parts are swapped.  This
9256		makes it easy to spot a difference.
9257
9258							*term_dumpload()*
9259term_dumpload({filename} [, {options}])
9260		Open a new window displaying the contents of {filename}
9261		The file must have been created with |term_dumpwrite()|.
9262		Returns the buffer number or zero when it fails.
9263		Also see |terminal-diff|.
9264
9265		For {options} see |term_dumpdiff()|.
9266
9267							*term_dumpwrite()*
9268term_dumpwrite({buf}, {filename} [, {options}])
9269		Dump the contents of the terminal screen of {buf} in the file
9270		{filename}.  This uses a format that can be used with
9271		|term_dumpload()| and |term_dumpdiff()|.
9272		If the job in the terminal already finished an error is given:
9273		*E958*
9274		If {filename} already exists an error is given:	*E953*
9275		Also see |terminal-diff|.
9276
9277		{options} is a dictionary with these optional entries:
9278			"rows"		maximum number of rows to dump
9279			"columns"	maximum number of columns to dump
9280
9281term_getaltscreen({buf})				*term_getaltscreen()*
9282		Returns 1 if the terminal of {buf} is using the alternate
9283		screen.
9284		{buf} is used as with |term_getsize()|.
9285		{only available when compiled with the |+terminal| feature}
9286
9287term_getansicolors({buf})				*term_getansicolors()*
9288		Get the ANSI color palette in use by terminal {buf}.
9289		Returns a List of length 16 where each element is a String
9290		representing a color in hexadecimal "#rrggbb" format.
9291		Also see |term_setansicolors()| and |g:terminal_ansi_colors|.
9292		If neither was used returns the default colors.
9293
9294		{buf} is used as with |term_getsize()|.  If the buffer does not
9295		exist or is not a terminal window, an empty list is returned.
9296		{only available when compiled with the |+terminal| feature and
9297		with GUI enabled and/or the |+termguicolors| feature}
9298
9299term_getattr({attr}, {what})				*term_getattr()*
9300		Given {attr}, a value returned by term_scrape() in the "attr"
9301		item, return whether {what} is on.  {what} can be one of:
9302			bold
9303			italic
9304			underline
9305			strike
9306			reverse
9307		{only available when compiled with the |+terminal| feature}
9308
9309term_getcursor({buf})					*term_getcursor()*
9310		Get the cursor position of terminal {buf}. Returns a list with
9311		two numbers and a dictionary: [row, col, dict].
9312
9313		"row" and "col" are one based, the first screen cell is row
9314		1, column 1.  This is the cursor position of the terminal
9315		itself, not of the Vim window.
9316
9317		"dict" can have these members:
9318		   "visible"	one when the cursor is visible, zero when it
9319				is hidden.
9320		   "blink"	one when the cursor is blinking, zero when it
9321				is not blinking.
9322		   "shape"	1 for a block cursor, 2 for underline and 3
9323				for a vertical bar.
9324
9325		{buf} must be the buffer number of a terminal window. If the
9326		buffer does not exist or is not a terminal window, an empty
9327		list is returned.
9328		{only available when compiled with the |+terminal| feature}
9329
9330term_getjob({buf})					*term_getjob()*
9331		Get the Job associated with terminal window {buf}.
9332		{buf} is used as with |term_getsize()|.
9333		Returns |v:null| when there is no job.
9334		{only available when compiled with the |+terminal| feature}
9335
9336term_getline({buf}, {row})				*term_getline()*
9337		Get a line of text from the terminal window of {buf}.
9338		{buf} is used as with |term_getsize()|.
9339
9340		The first line has {row} one.  When {row} is "." the cursor
9341		line is used.  When {row} is invalid an empty string is
9342		returned.
9343
9344		To get attributes of each character use |term_scrape()|.
9345		{only available when compiled with the |+terminal| feature}
9346
9347term_getscrolled({buf})					*term_getscrolled()*
9348		Return the number of lines that scrolled to above the top of
9349		terminal {buf}.  This is the offset between the row number
9350		used for |term_getline()| and |getline()|, so that: >
9351			term_getline(buf, N)
9352<		is equal to: >
9353			getline(N + term_getscrolled(buf))
9354<		(if that line exists).
9355
9356		{buf} is used as with |term_getsize()|.
9357		{only available when compiled with the |+terminal| feature}
9358
9359term_getsize({buf})					*term_getsize()*
9360		Get the size of terminal {buf}. Returns a list with two
9361		numbers: [rows, cols].  This is the size of the terminal, not
9362		the window containing the terminal.
9363
9364		{buf} must be the buffer number of a terminal window.  Use an
9365		empty string for the current buffer.  If the buffer does not
9366		exist or is not a terminal window, an empty list is returned.
9367		{only available when compiled with the |+terminal| feature}
9368
9369term_getstatus({buf})					*term_getstatus()*
9370		Get the status of terminal {buf}. This returns a comma
9371		separated list of these items:
9372			running		job is running
9373			finished	job has finished
9374			normal		in Terminal-Normal mode
9375		One of "running" or "finished" is always present.
9376
9377		{buf} must be the buffer number of a terminal window. If the
9378		buffer does not exist or is not a terminal window, an empty
9379		string is returned.
9380		{only available when compiled with the |+terminal| feature}
9381
9382term_gettitle({buf})					*term_gettitle()*
9383		Get the title of terminal {buf}. This is the title that the
9384		job in the terminal has set.
9385
9386		{buf} must be the buffer number of a terminal window. If the
9387		buffer does not exist or is not a terminal window, an empty
9388		string is returned.
9389		{only available when compiled with the |+terminal| feature}
9390
9391term_gettty({buf} [, {input}])				*term_gettty()*
9392		Get the name of the controlling terminal associated with
9393		terminal window {buf}.  {buf} is used as with |term_getsize()|.
9394
9395		When {input} is omitted or 0, return the name for writing
9396		(stdout). When {input} is 1 return the name for reading
9397		(stdin). On UNIX, both return same name.
9398		{only available when compiled with the |+terminal| feature}
9399
9400term_list()						*term_list()*
9401		Return a list with the buffer numbers of all buffers for
9402		terminal windows.
9403		{only available when compiled with the |+terminal| feature}
9404
9405term_scrape({buf}, {row})				*term_scrape()*
9406		Get the contents of {row} of terminal screen of {buf}.
9407		For {buf} see |term_getsize()|.
9408
9409		The first line has {row} one.  When {row} is "." the cursor
9410		line is used.  When {row} is invalid an empty string is
9411		returned.
9412
9413		Return a List containing a Dict for each screen cell:
9414		    "chars"	character(s) at the cell
9415		    "fg"	foreground color as #rrggbb
9416		    "bg"	background color as #rrggbb
9417		    "attr"	attributes of the cell, use |term_getattr()|
9418				to get the individual flags
9419		    "width"	cell width: 1 or 2
9420		{only available when compiled with the |+terminal| feature}
9421
9422term_sendkeys({buf}, {keys})				*term_sendkeys()*
9423		Send keystrokes {keys} to terminal {buf}.
9424		{buf} is used as with |term_getsize()|.
9425
9426		{keys} are translated as key sequences. For example, "\<c-x>"
9427		means the character CTRL-X.
9428		{only available when compiled with the |+terminal| feature}
9429
9430term_setansicolors({buf}, {colors})			*term_setansicolors()*
9431		Set the ANSI color palette used by terminal {buf}.
9432		{colors} must be a List of 16 valid color names or hexadecimal
9433		color codes, like those accepted by |highlight-guifg|.
9434		Also see |term_getansicolors()| and |g:terminal_ansi_colors|.
9435
9436		The colors normally are:
9437			0    black
9438			1    dark red
9439			2    dark green
9440			3    brown
9441			4    dark blue
9442			5    dark magenta
9443			6    dark cyan
9444			7    light grey
9445			8    dark grey
9446			9    red
9447			10   green
9448			11   yellow
9449			12   blue
9450			13   magenta
9451			14   cyan
9452			15   white
9453
9454		These colors are used in the GUI and in the terminal when
9455		'termguicolors' is set.  When not using GUI colors (GUI mode
9456		or 'termguicolors'), the terminal window always uses the 16
9457		ANSI colors of the underlying terminal.
9458		{only available when compiled with the |+terminal| feature and
9459		with GUI enabled and/or the |+termguicolors| feature}
9460
9461term_setkill({buf}, {how})				*term_setkill()*
9462		When exiting Vim or trying to close the terminal window in
9463		another way, {how} defines whether the job in the terminal can
9464		be stopped.
9465		When {how} is empty (the default), the job will not be
9466		stopped, trying to exit will result in |E947|.
9467		Otherwise, {how} specifies what signal to send to the job.
9468		See |job_stop()| for the values.
9469
9470		After sending the signal Vim will wait for up to a second to
9471		check that the job actually stopped.
9472
9473term_setrestore({buf}, {command})			*term_setrestore()*
9474		Set the command to write in a session file to restore the job
9475		in this terminal.  The line written in the session file is: >
9476			terminal ++curwin ++cols=%d ++rows=%d {command}
9477<		Make sure to escape the command properly.
9478
9479		Use an empty {command} to run 'shell'.
9480		Use "NONE" to not restore this window.
9481		{only available when compiled with the |+terminal| feature}
9482
9483term_setsize({buf}, {rows}, {cols})		*term_setsize()* *E955*
9484		Set the size of terminal {buf}. The size of the window
9485		containing the terminal will also be adjusted, if possible.
9486		If {rows} or {cols} is zero or negative, that dimension is not
9487		changed.
9488
9489		{buf} must be the buffer number of a terminal window.  Use an
9490		empty string for the current buffer.  If the buffer does not
9491		exist or is not a terminal window, an error is given.
9492		{only available when compiled with the |+terminal| feature}
9493
9494term_start({cmd}, {options})				*term_start()*
9495		Open a terminal window and run {cmd} in it.
9496
9497		{cmd} can be a string or a List, like with |job_start()|. The
9498		string "NONE" can be used to open a terminal window without
9499		starting a job, the pty of the terminal can be used by a
9500		command like gdb.
9501
9502		Returns the buffer number of the terminal window.  If {cmd}
9503		cannot be executed the window does open and shows an error
9504		message.
9505		If opening the window fails zero is returned.
9506
9507		{options} are similar to what is used for |job_start()|, see
9508		|job-options|.  However, not all options can be used.  These
9509		are supported:
9510		   all timeout options
9511		   "stoponexit", "cwd", "env"
9512		   "callback", "out_cb", "err_cb", "exit_cb", "close_cb"
9513		   "in_io", "in_top", "in_bot", "in_name", "in_buf"
9514		   "out_io", "out_name", "out_buf", "out_modifiable", "out_msg"
9515		   "err_io", "err_name", "err_buf", "err_modifiable", "err_msg"
9516		However, at least one of stdin, stdout or stderr must be
9517		connected to the terminal.  When I/O is connected to the
9518		terminal then the callback function for that part is not used.
9519
9520		There are extra options:
9521		   "term_name"	     name to use for the buffer name, instead
9522				     of the command name.
9523		   "term_rows"	     vertical size to use for the terminal,
9524				     instead of using 'termwinsize'
9525		   "term_cols"	     horizontal size to use for the terminal,
9526				     instead of using 'termwinsize'
9527		   "vertical"	     split the window vertically; note that
9528				     other window position can be defined with
9529				     command modifiers, such as |:belowright|.
9530		   "curwin"	     use the current window, do not split the
9531				     window; fails if the current buffer
9532				     cannot be |abandon|ed
9533		   "hidden"	     do not open a window
9534		   "norestore"	     do not add the terminal window to a
9535				     session file
9536		   "term_kill"	     what to do when trying to close the
9537				     terminal window, see |term_setkill()|
9538		   "term_finish"     What to do when the job is finished:
9539					"close": close any windows
9540					"open": open window if needed
9541				     Note that "open" can be interruptive.
9542				     See |term++close| and |term++open|.
9543		   "term_opencmd"    command to use for opening the window when
9544				     "open" is used for "term_finish"; must
9545				     have "%d" where the buffer number goes,
9546				     e.g. "10split|buffer %d"; when not
9547				     specified "botright sbuf %d" is used
9548		   "eof_chars"	     Text to send after all buffer lines were
9549				     written to the terminal.  When not set
9550				     CTRL-D is used on MS-Windows. For Python
9551				     use CTRL-Z or "exit()". For a shell use
9552				     "exit".  A CR is always added.
9553		   "ansi_colors"     A list of 16 color names or hex codes
9554				     defining the ANSI palette used in GUI
9555				     color modes.  See |g:terminal_ansi_colors|.
9556		   "tty_type"	     (MS-Windows only): Specify which pty to
9557				     use.  See 'termwintype' for the values.
9558
9559		{only available when compiled with the |+terminal| feature}
9560
9561term_wait({buf} [, {time}])					*term_wait()*
9562		Wait for pending updates of {buf} to be handled.
9563		{buf} is used as with |term_getsize()|.
9564		{time} is how long to wait for updates to arrive in msec.  If
9565		not set then 10 msec will be used.
9566		{only available when compiled with the |+terminal| feature}
9567
9568test_alloc_fail({id}, {countdown}, {repeat})		*test_alloc_fail()*
9569		This is for testing: If the memory allocation with {id} is
9570		called, then decrement {countdown}, and when it reaches zero
9571		let memory allocation fail {repeat} times.  When {repeat} is
9572		smaller than one it fails one time.
9573
9574test_autochdir()					*test_autochdir()*
9575		Set a flag to enable the effect of 'autochdir' before Vim
9576		startup has finished.
9577
9578test_feedinput({string})				*test_feedinput()*
9579		Characters in {string} are queued for processing as if they
9580		were typed by the user. This uses a low level input buffer.
9581		This function works only when with |+unix| or GUI is running.
9582
9583test_garbagecollect_now()			 *test_garbagecollect_now()*
9584		Like garbagecollect(), but executed right away.  This must
9585		only be called directly to avoid any structure to exist
9586		internally, and |v:testing| must have been set before calling
9587		any function.
9588
9589test_ignore_error({expr})			 *test_ignore_error()*
9590		Ignore any error containing {expr}.  A normal message is given
9591		instead.
9592		This is only meant to be used in tests, where catching the
9593		error with try/catch cannot be used (because it skips over
9594		following code).
9595		{expr} is used literally, not as a pattern.
9596		When the {expr} is the string "RESET" then the list of ignored
9597		errors is made empty.
9598
9599test_null_blob()					*test_null_blob()*
9600		Return a |Blob| that is null. Only useful for testing.
9601
9602test_null_channel()					*test_null_channel()*
9603		Return a |Channel| that is null. Only useful for testing.
9604		{only available when compiled with the +channel feature}
9605
9606test_null_dict()					*test_null_dict()*
9607		Return a |Dict| that is null. Only useful for testing.
9608
9609test_null_job()						*test_null_job()*
9610		Return a |Job| that is null. Only useful for testing.
9611		{only available when compiled with the +job feature}
9612
9613test_null_list()					*test_null_list()*
9614		Return a |List| that is null. Only useful for testing.
9615
9616test_null_partial()					*test_null_partial()*
9617		Return a |Partial| that is null. Only useful for testing.
9618
9619test_null_string()					*test_null_string()*
9620		Return a |String| that is null. Only useful for testing.
9621
9622test_option_not_set({name})				*test_option_not_set()*
9623		Reset the flag that indicates option {name} was set.  Thus it
9624		looks like it still has the default value. Use like this: >
9625			set ambiwidth=double
9626			call test_option_not_set('ambiwidth')
9627<		Now the 'ambiwidth' option behaves like it was never changed,
9628		even though the value is "double".
9629		Only to be used for testing!
9630
9631test_override({name}, {val})				*test_override()*
9632		Overrides certain parts of Vim's internal processing to be able
9633		to run tests. Only to be used for testing Vim!
9634		The override is enabled when {val} is non-zero and removed
9635		when {val} is zero.
9636		Current supported values for name are:
9637
9638		name	     effect when {val} is non-zero ~
9639		redraw       disable the redrawing() function
9640		redraw_flag  ignore the RedrawingDisabled flag
9641		char_avail   disable the char_avail() function
9642		starting     reset the "starting" variable, see below
9643		nfa_fail     makes the NFA regexp engine fail to force a
9644			     fallback to the old engine
9645		ALL	     clear all overrides ({val} is not used)
9646
9647		"starting" is to be used when a test should behave like
9648		startup was done.  Since the tests are run by sourcing a
9649		script the "starting" variable is non-zero. This is usually a
9650		good thing (tests run faster), but sometimes changes behavior
9651		in a way that the test doesn't work properly.
9652		When using: >
9653			call test_override('starting', 1)
9654<		The value of "starting" is saved.  It is restored by: >
9655			call test_override('starting', 0)
9656
9657test_refcount({expr})					*test_refcount()*
9658		Return the reference count of {expr}.  When {expr} is of a
9659		type that does not have a reference count, returns -1.  Only
9660		to be used for testing.
9661
9662test_scrollbar({which}, {value}, {dragging})		*test_scrollbar()*
9663		Pretend using scrollbar {which} to move it to position
9664		{value}.  {which} can be:
9665			left	Left scrollbar of the current window
9666			right	Right scrollbar of the current window
9667			hor	Horizontal scrollbar
9668
9669		For the vertical scrollbars {value} can be 1 to the
9670		line-count of the buffer.  For the horizontal scrollbar the
9671		{value} can be between 1 and the maximum line length, assuming
9672		'wrap' is not set.
9673
9674		When {dragging} is non-zero it's like dragging the scrollbar,
9675		otherwise it's like clicking in the scrollbar.
9676		Only works when the {which} scrollbar actually exists,
9677		obviously only when using the GUI.
9678
9679test_settime({expr})					*test_settime()*
9680		Set the time Vim uses internally.  Currently only used for
9681		timestamps in the history, as they are used in viminfo, and
9682		for undo.
9683		Using a value of 1 makes Vim not sleep after a warning or
9684		error message.
9685		{expr} must evaluate to a number.  When the value is zero the
9686		normal behavior is restored.
9687
9688							*timer_info()*
9689timer_info([{id}])
9690		Return a list with information about timers.
9691		When {id} is given only information about this timer is
9692		returned.  When timer {id} does not exist an empty list is
9693		returned.
9694		When {id} is omitted information about all timers is returned.
9695
9696		For each timer the information is stored in a Dictionary with
9697		these items:
9698		    "id"	    the timer ID
9699		    "time"	    time the timer was started with
9700		    "remaining"	    time until the timer fires
9701		    "repeat"	    number of times the timer will still fire;
9702				    -1 means forever
9703		    "callback"	    the callback
9704		    "paused"	    1 if the timer is paused, 0 otherwise
9705
9706		{only available when compiled with the |+timers| feature}
9707
9708timer_pause({timer}, {paused})				*timer_pause()*
9709		Pause or unpause a timer.  A paused timer does not invoke its
9710		callback when its time expires.  Unpausing a timer may cause
9711		the callback to be invoked almost immediately if enough time
9712		has passed.
9713
9714		Pausing a timer is useful to avoid the callback to be called
9715		for a short time.
9716
9717		If {paused} evaluates to a non-zero Number or a non-empty
9718		String, then the timer is paused, otherwise it is unpaused.
9719		See |non-zero-arg|.
9720
9721		{only available when compiled with the |+timers| feature}
9722
9723						*timer_start()* *timer* *timers*
9724timer_start({time}, {callback} [, {options}])
9725		Create a timer and return the timer ID.
9726
9727		{time} is the waiting time in milliseconds. This is the
9728		minimum time before invoking the callback.  When the system is
9729		busy or Vim is not waiting for input the time will be longer.
9730
9731		{callback} is the function to call.  It can be the name of a
9732		function or a |Funcref|.  It is called with one argument, which
9733		is the timer ID.  The callback is only invoked when Vim is
9734		waiting for input.
9735
9736		{options} is a dictionary.  Supported entries:
9737		   "repeat"	Number of times to repeat calling the
9738				callback.  -1 means forever.  When not present
9739				the callback will be called once.
9740				If the timer causes an error three times in a
9741				row the repeat is cancelled.  This avoids that
9742				Vim becomes unusable because of all the error
9743				messages.
9744
9745		Example: >
9746			func MyHandler(timer)
9747			  echo 'Handler called'
9748			endfunc
9749			let timer = timer_start(500, 'MyHandler',
9750				\ {'repeat': 3})
9751<		This will invoke MyHandler() three times at 500 msec
9752		intervals.
9753
9754		{only available when compiled with the |+timers| feature}
9755
9756timer_stop({timer})					*timer_stop()*
9757		Stop a timer.  The timer callback will no longer be invoked.
9758		{timer} is an ID returned by timer_start(), thus it must be a
9759		Number.  If {timer} does not exist there is no error.
9760
9761		{only available when compiled with the |+timers| feature}
9762
9763timer_stopall()						*timer_stopall()*
9764		Stop all timers.  The timer callbacks will no longer be
9765		invoked.  Useful if some timers is misbehaving.  If there are
9766		no timers there is no error.
9767
9768		{only available when compiled with the |+timers| feature}
9769
9770tolower({expr})						*tolower()*
9771		The result is a copy of the String given, with all uppercase
9772		characters turned into lowercase (just like applying |gu| to
9773		the string).
9774
9775toupper({expr})						*toupper()*
9776		The result is a copy of the String given, with all lowercase
9777		characters turned into uppercase (just like applying |gU| to
9778		the string).
9779
9780tr({src}, {fromstr}, {tostr})				*tr()*
9781		The result is a copy of the {src} string with all characters
9782		which appear in {fromstr} replaced by the character in that
9783		position in the {tostr} string.  Thus the first character in
9784		{fromstr} is translated into the first character in {tostr}
9785		and so on.  Exactly like the unix "tr" command.
9786		This code also deals with multibyte characters properly.
9787
9788		Examples: >
9789			echo tr("hello there", "ht", "HT")
9790<		returns "Hello THere" >
9791			echo tr("<blob>", "<>", "{}")
9792<		returns "{blob}"
9793
9794trim({text} [, {mask}])						*trim()*
9795		Return {text} as a String where any character in {mask} is
9796		removed from the beginning and  end of {text}.
9797		If {mask} is not given, {mask} is all characters up to 0x20,
9798		which includes Tab, space, NL and CR, plus the non-breaking
9799		space character 0xa0.
9800		This code deals with multibyte characters properly.
9801
9802		Examples: >
9803			echo trim("   some text ")
9804<		returns "some text" >
9805			echo trim("  \r\t\t\r RESERVE \t\n\x0B\xA0") . "_TAIL"
9806<		returns "RESERVE_TAIL" >
9807			echo trim("rm<Xrm<>X>rrm", "rm<>")
9808<		returns "Xrm<>X" (characters in the middle are not removed)
9809
9810trunc({expr})							*trunc()*
9811		Return the largest integral value with magnitude less than or
9812		equal to {expr} as a |Float| (truncate towards zero).
9813		{expr} must evaluate to a |Float| or a |Number|.
9814		Examples: >
9815			echo trunc(1.456)
9816<			1.0  >
9817			echo trunc(-5.456)
9818<			-5.0  >
9819			echo trunc(4.0)
9820<			4.0
9821		{only available when compiled with the |+float| feature}
9822
9823							*type()*
9824type({expr})	The result is a Number representing the type of {expr}.
9825		Instead of using the number directly, it is better to use the
9826		v:t_ variable that has the value:
9827			Number:	    0  |v:t_number|
9828			String:	    1  |v:t_string|
9829			Funcref:    2  |v:t_func|
9830			List:	    3  |v:t_list|
9831			Dictionary: 4  |v:t_dict|
9832			Float:	    5  |v:t_float|
9833			Boolean:    6  |v:t_bool| (v:false and v:true)
9834			None:	    7  |v:t_none| (v:null and v:none)
9835			Job:	    8  |v:t_job|
9836			Channel:    9  |v:t_channel|
9837			Blob:	   10  |v:t_blob|
9838		For backward compatibility, this method can be used: >
9839			:if type(myvar) == type(0)
9840			:if type(myvar) == type("")
9841			:if type(myvar) == type(function("tr"))
9842			:if type(myvar) == type([])
9843			:if type(myvar) == type({})
9844			:if type(myvar) == type(0.0)
9845			:if type(myvar) == type(v:false)
9846			:if type(myvar) == type(v:none)
9847<		To check if the v:t_ variables exist use this: >
9848			:if exists('v:t_number')
9849
9850undofile({name})					*undofile()*
9851		Return the name of the undo file that would be used for a file
9852		with name {name} when writing.  This uses the 'undodir'
9853		option, finding directories that exist.  It does not check if
9854		the undo file exists.
9855		{name} is always expanded to the full path, since that is what
9856		is used internally.
9857		If {name} is empty undofile() returns an empty string, since a
9858		buffer without a file name will not write an undo file.
9859		Useful in combination with |:wundo| and |:rundo|.
9860		When compiled without the |+persistent_undo| option this always
9861		returns an empty string.
9862
9863undotree()						*undotree()*
9864		Return the current state of the undo tree in a dictionary with
9865		the following items:
9866		  "seq_last"	The highest undo sequence number used.
9867		  "seq_cur"	The sequence number of the current position in
9868				the undo tree.  This differs from "seq_last"
9869				when some changes were undone.
9870		  "time_cur"	Time last used for |:earlier| and related
9871				commands.  Use |strftime()| to convert to
9872				something readable.
9873		  "save_last"	Number of the last file write.  Zero when no
9874				write yet.
9875		  "save_cur"	Number of the current position in the undo
9876				tree.
9877		  "synced"	Non-zero when the last undo block was synced.
9878				This happens when waiting from input from the
9879				user.  See |undo-blocks|.
9880		  "entries"	A list of dictionaries with information about
9881				undo blocks.
9882
9883		The first item in the "entries" list is the oldest undo item.
9884		Each List item is a Dictionary with these items:
9885		  "seq"		Undo sequence number.  Same as what appears in
9886				|:undolist|.
9887		  "time"	Timestamp when the change happened.  Use
9888				|strftime()| to convert to something readable.
9889		  "newhead"	Only appears in the item that is the last one
9890				that was added.  This marks the last change
9891				and where further changes will be added.
9892		  "curhead"	Only appears in the item that is the last one
9893				that was undone.  This marks the current
9894				position in the undo tree, the block that will
9895				be used by a redo command.  When nothing was
9896				undone after the last change this item will
9897				not appear anywhere.
9898		  "save"	Only appears on the last block before a file
9899				write.  The number is the write count.  The
9900				first write has number 1, the last one the
9901				"save_last" mentioned above.
9902		  "alt"		Alternate entry.  This is again a List of undo
9903				blocks.  Each item may again have an "alt"
9904				item.
9905
9906uniq({list} [, {func} [, {dict}]])			*uniq()* *E882*
9907		Remove second and succeeding copies of repeated adjacent
9908		{list} items in-place.  Returns {list}.  If you want a list
9909		to remain unmodified make a copy first: >
9910			:let newlist = uniq(copy(mylist))
9911<		The default compare function uses the string representation of
9912		each item.  For the use of {func} and {dict} see |sort()|.
9913
9914values({dict})						*values()*
9915		Return a |List| with all the values of {dict}.  The |List| is
9916		in arbitrary order.  Also see |items()| and |keys()|.
9917
9918
9919virtcol({expr})						*virtcol()*
9920		The result is a Number, which is the screen column of the file
9921		position given with {expr}.  That is, the last screen position
9922		occupied by the character at that position, when the screen
9923		would be of unlimited width.  When there is a <Tab> at the
9924		position, the returned Number will be the column at the end of
9925		the <Tab>.  For example, for a <Tab> in column 1, with 'ts'
9926		set to 8, it returns 8. |conceal| is ignored.
9927		For the byte position use |col()|.
9928		For the use of {expr} see |col()|.
9929		When 'virtualedit' is used {expr} can be [lnum, col, off], where
9930		"off" is the offset in screen columns from the start of the
9931		character.  E.g., a position within a <Tab> or after the last
9932		character.  When "off" is omitted zero is used.
9933		When Virtual editing is active in the current mode, a position
9934		beyond the end of the line can be returned. |'virtualedit'|
9935		The accepted positions are:
9936		    .	    the cursor position
9937		    $	    the end of the cursor line (the result is the
9938			    number of displayed characters in the cursor line
9939			    plus one)
9940		    'x	    position of mark x (if the mark is not set, 0 is
9941			    returned)
9942		    v       In Visual mode: the start of the Visual area (the
9943			    cursor is the end).  When not in Visual mode
9944			    returns the cursor position.  Differs from |'<| in
9945			    that it's updated right away.
9946		Note that only marks in the current file can be used.
9947		Examples: >
9948  virtcol(".")	   with text "foo^Lbar", with cursor on the "^L", returns 5
9949  virtcol("$")	   with text "foo^Lbar", returns 9
9950  virtcol("'t")    with text "	  there", with 't at 'h', returns 6
9951<		The first column is 1.  0 is returned for an error.
9952		A more advanced example that echoes the maximum length of
9953		all lines: >
9954		    echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
9955
9956
9957visualmode([expr])						*visualmode()*
9958		The result is a String, which describes the last Visual mode
9959		used in the current buffer.  Initially it returns an empty
9960		string, but once Visual mode has been used, it returns "v",
9961		"V", or "<CTRL-V>" (a single CTRL-V character) for
9962		character-wise, line-wise, or block-wise Visual mode
9963		respectively.
9964		Example: >
9965			:exe "normal " . visualmode()
9966<		This enters the same Visual mode as before.  It is also useful
9967		in scripts if you wish to act differently depending on the
9968		Visual mode that was used.
9969		If Visual mode is active, use |mode()| to get the Visual mode
9970		(e.g., in a |:vmap|).
9971		If [expr] is supplied and it evaluates to a non-zero Number or
9972		a non-empty String, then the Visual mode will be cleared and
9973		the old value is returned.  See |non-zero-arg|.
9974
9975wildmenumode()					*wildmenumode()*
9976		Returns |TRUE| when the wildmenu is active and |FALSE|
9977		otherwise.  See 'wildmenu' and 'wildmode'.
9978		This can be used in mappings to handle the 'wildcharm' option
9979		gracefully. (Makes only sense with |mapmode-c| mappings).
9980
9981		For example to make <c-j> work like <down> in wildmode, use: >
9982    :cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"
9983<
9984		(Note, this needs the 'wildcharm' option set appropriately).
9985
9986
9987win_findbuf({bufnr})					*win_findbuf()*
9988		Returns a list with |window-ID|s for windows that contain
9989		buffer {bufnr}.  When there is none the list is empty.
9990
9991win_getid([{win} [, {tab}]])				*win_getid()*
9992		Get the |window-ID| for the specified window.
9993		When {win} is missing use the current window.
9994		With {win} this is the window number.  The top window has
9995		number 1.
9996		Without {tab} use the current tab, otherwise the tab with
9997		number {tab}.  The first tab has number one.
9998		Return zero if the window cannot be found.
9999
10000win_gotoid({expr})					*win_gotoid()*
10001		Go to window with ID {expr}.  This may also change the current
10002		tabpage.
10003		Return 1 if successful, 0 if the window cannot be found.
10004
10005win_id2tabwin({expr})					*win_id2tabwin()*
10006		Return a list with the tab number and window number of window
10007		with ID {expr}: [tabnr, winnr].
10008		Return [0, 0] if the window cannot be found.
10009
10010win_id2win({expr})					*win_id2win()*
10011		Return the window number of window with ID {expr}.
10012		Return 0 if the window cannot be found in the current tabpage.
10013
10014win_screenpos({nr})					*win_screenpos()*
10015		Return the screen position of window {nr} as a list with two
10016		numbers: [row, col].  The first window always has position
10017		[1, 1], unless there is a tabline, then it is [2, 1].
10018		{nr} can be the window number or the |window-ID|.
10019		Return [0, 0] if the window cannot be found in the current
10020		tabpage.
10021
10022							*winbufnr()*
10023winbufnr({nr})	The result is a Number, which is the number of the buffer
10024		associated with window {nr}.  {nr} can be the window number or
10025		the |window-ID|.
10026		When {nr} is zero, the number of the buffer in the current
10027		window is returned.
10028		When window {nr} doesn't exist, -1 is returned.
10029		Example: >
10030  :echo "The file in the current window is " . bufname(winbufnr(0))
10031<
10032							*wincol()*
10033wincol()	The result is a Number, which is the virtual column of the
10034		cursor in the window.  This is counting screen cells from the
10035		left side of the window.  The leftmost column is one.
10036
10037winheight({nr})						*winheight()*
10038		The result is a Number, which is the height of window {nr}.
10039		{nr} can be the window number or the |window-ID|.
10040		When {nr} is zero, the height of the current window is
10041		returned.  When window {nr} doesn't exist, -1 is returned.
10042		An existing window always has a height of zero or more.
10043		This excludes any window toolbar line.
10044		Examples: >
10045  :echo "The current window has " . winheight(0) . " lines."
10046<
10047winlayout([{tabnr}])					*winlayout()*
10048		The result is a nested List containing the layout of windows
10049		in a tabpage.
10050
10051		Without {tabnr} use the current tabpage, otherwise the tabpage
10052		with number {tabnr}. If the tabpage {tabnr} is not found,
10053		returns an empty list.
10054
10055		For a leaf window, it returns:
10056			['leaf', {winid}]
10057		For horizontally split windows, which form a column, it
10058		returns:
10059			['col', [{nested list of windows}]]
10060		For vertically split windows, which form a row, it returns:
10061			['row', [{nested list of windows}]]
10062
10063		Example: >
10064			" Only one window in the tab page
10065			:echo winlayout()
10066			['leaf', 1000]
10067			" Two horizontally split windows
10068			:echo winlayout()
10069			['col', [['leaf', 1000], ['leaf', 1001]]]
10070			" Three horizontally split windows, with two
10071			" vertically split windows in the middle window
10072			:echo winlayout(2)
10073			['col', [['leaf', 1002], ['row', ['leaf', 1003],
10074					     ['leaf', 1001]]], ['leaf', 1000]]
10075<
10076							*winline()*
10077winline()	The result is a Number, which is the screen line of the cursor
10078		in the window.  This is counting screen lines from the top of
10079		the window.  The first line is one.
10080		If the cursor was moved the view on the file will be updated
10081		first, this may cause a scroll.
10082
10083							*winnr()*
10084winnr([{arg}])	The result is a Number, which is the number of the current
10085		window.  The top window has number 1.
10086		When the optional argument is "$", the number of the
10087		last window is returned (the window count). >
10088			let window_count = winnr('$')
10089<		When the optional argument is "#", the number of the last
10090		accessed window is returned (where |CTRL-W_p| goes to).
10091		If there is no previous window or it is in another tab page 0
10092		is returned.
10093		The number can be used with |CTRL-W_w| and ":wincmd w"
10094		|:wincmd|.
10095		Also see |tabpagewinnr()| and |win_getid()|.
10096
10097							*winrestcmd()*
10098winrestcmd()	Returns a sequence of |:resize| commands that should restore
10099		the current window sizes.  Only works properly when no windows
10100		are opened or closed and the current window and tab page is
10101		unchanged.
10102		Example: >
10103			:let cmd = winrestcmd()
10104			:call MessWithWindowSizes()
10105			:exe cmd
10106<
10107							*winrestview()*
10108winrestview({dict})
10109		Uses the |Dictionary| returned by |winsaveview()| to restore
10110		the view of the current window.
10111		Note: The {dict} does not have to contain all values, that are
10112		returned by |winsaveview()|. If values are missing, those
10113		settings won't be restored. So you can use: >
10114		    :call winrestview({'curswant': 4})
10115<
10116		This will only set the curswant value (the column the cursor
10117		wants to move on vertical movements) of the cursor to column 5
10118		(yes, that is 5), while all other settings will remain the
10119		same. This is useful, if you set the cursor position manually.
10120
10121		If you have changed the values the result is unpredictable.
10122		If the window size changed the result won't be the same.
10123
10124							*winsaveview()*
10125winsaveview()	Returns a |Dictionary| that contains information to restore
10126		the view of the current window.  Use |winrestview()| to
10127		restore the view.
10128		This is useful if you have a mapping that jumps around in the
10129		buffer and you want to go back to the original view.
10130		This does not save fold information.  Use the 'foldenable'
10131		option to temporarily switch off folding, so that folds are
10132		not opened when moving around. This may have side effects.
10133		The return value includes:
10134			lnum		cursor line number
10135			col		cursor column (Note: the first column
10136					zero, as opposed to what getpos()
10137					returns)
10138			coladd		cursor column offset for 'virtualedit'
10139			curswant	column for vertical movement
10140			topline		first line in the window
10141			topfill		filler lines, only in diff mode
10142			leftcol		first column displayed
10143			skipcol		columns skipped
10144		Note that no option values are saved.
10145
10146
10147winwidth({nr})						*winwidth()*
10148		The result is a Number, which is the width of window {nr}.
10149		{nr} can be the window number or the |window-ID|.
10150		When {nr} is zero, the width of the current window is
10151		returned.  When window {nr} doesn't exist, -1 is returned.
10152		An existing window always has a width of zero or more.
10153		Examples: >
10154  :echo "The current window has " . winwidth(0) . " columns."
10155  :if winwidth(0) <= 50
10156  :  50 wincmd |
10157  :endif
10158<		For getting the terminal or screen size, see the 'columns'
10159		option.
10160
10161
10162wordcount()						*wordcount()*
10163		The result is a dictionary of byte/chars/word statistics for
10164		the current buffer.  This is the same info as provided by
10165		|g_CTRL-G|
10166		The return value includes:
10167			bytes		Number of bytes in the buffer
10168			chars		Number of chars in the buffer
10169			words		Number of words in the buffer
10170			cursor_bytes    Number of bytes before cursor position
10171					(not in Visual mode)
10172			cursor_chars    Number of chars before cursor position
10173					(not in Visual mode)
10174			cursor_words    Number of words before cursor position
10175					(not in Visual mode)
10176			visual_bytes    Number of bytes visually selected
10177					(only in Visual mode)
10178			visual_chars    Number of chars visually selected
10179					(only in Visual mode)
10180			visual_words    Number of words visually selected
10181					(only in Visual mode)
10182
10183
10184							*writefile()*
10185writefile({object}, {fname} [, {flags}])
10186		When {object} is a |List| write it to file {fname}.  Each list
10187		item is separated with a NL.  Each list item must be a String
10188		or Number.
10189		When {flags} contains "b" then binary mode is used: There will
10190		not be a NL after the last list item.  An empty item at the
10191		end does cause the last line in the file to end in a NL.
10192
10193		When {object} is a |Blob| write the bytes to file {fname}
10194		unmodified.
10195
10196		When {flags} contains "a" then append mode is used, lines are
10197		appended to the file: >
10198			:call writefile(["foo"], "event.log", "a")
10199			:call writefile(["bar"], "event.log", "a")
10200<
10201		When {flags} contains "s" then fsync() is called after writing
10202		the file.  This flushes the file to disk, if possible.  This
10203		takes more time but avoids losing the file if the system
10204		crashes.
10205		When {flags} does not contain "S" or "s" then fsync() is
10206		called if the 'fsync' option is set.
10207		When {flags} contains "S" then fsync() is not called, even
10208		when 'fsync' is set.
10209
10210		All NL characters are replaced with a NUL character.
10211		Inserting CR characters needs to be done before passing {list}
10212		to writefile().
10213		An existing file is overwritten, if possible.
10214		When the write fails -1 is returned, otherwise 0.  There is an
10215		error message if the file can't be created or when writing
10216		fails.
10217		Also see |readfile()|.
10218		To copy a file byte for byte: >
10219			:let fl = readfile("foo", "b")
10220			:call writefile(fl, "foocopy", "b")
10221
10222
10223xor({expr}, {expr})					*xor()*
10224		Bitwise XOR on the two arguments.  The arguments are converted
10225		to a number.  A List, Dict or Float argument causes an error.
10226		Example: >
10227			:let bits = xor(bits, 0x80)
10228<
10229
10230
10231							*feature-list*
10232There are four types of features:
102331.  Features that are only supported when they have been enabled when Vim
10234    was compiled |+feature-list|.  Example: >
10235	:if has("cindent")
102362.  Features that are only supported when certain conditions have been met.
10237    Example: >
10238	:if has("gui_running")
10239<							*has-patch*
102403.  Beyond a certain version or at a certain version and including a specific
10241    patch.  The "patch-7.4.248" feature means that the Vim version is 7.5 or
10242    later, or it is version 7.4 and patch 248 was included.  Example: >
10243	:if has("patch-7.4.248")
10244<    Note that it's possible for patch 248 to be omitted even though 249 is
10245    included.  Only happens when cherry-picking patches.
10246    Note that this form only works for patch 7.4.237 and later, before that
10247    you need to check for the patch and the  v:version.  Example (checking
10248    version 6.2.148 or later): >
10249	:if v:version > 602 || (v:version == 602 && has("patch148"))
10250
10251Hint: To find out if Vim supports backslashes in a file name (MS-Windows),
10252use: `if exists('+shellslash')`
10253
10254
10255acl			Compiled with |ACL| support.
10256all_builtin_terms	Compiled with all builtin terminals enabled.
10257amiga			Amiga version of Vim.
10258arabic			Compiled with Arabic support |Arabic|.
10259arp			Compiled with ARP support (Amiga).
10260autocmd			Compiled with autocommand support. (always true)
10261autochdir		Compiled with support for 'autochdir'
10262autoservername		Automatically enable |clientserver|
10263balloon_eval		Compiled with |balloon-eval| support.
10264balloon_multiline	GUI supports multiline balloons.
10265beos			BeOS version of Vim.
10266browse			Compiled with |:browse| support, and browse() will
10267			work.
10268browsefilter		Compiled with support for |browsefilter|.
10269bsd			Compiled on an OS in the BSD family (excluding macOS).
10270builtin_terms		Compiled with some builtin terminals.
10271byte_offset		Compiled with support for 'o' in 'statusline'
10272cindent			Compiled with 'cindent' support.
10273clientserver		Compiled with remote invocation support |clientserver|.
10274clipboard		Compiled with 'clipboard' support.
10275cmdline_compl		Compiled with |cmdline-completion| support.
10276cmdline_hist		Compiled with |cmdline-history| support.
10277cmdline_info		Compiled with 'showcmd' and 'ruler' support.
10278comments		Compiled with |'comments'| support.
10279compatible		Compiled to be very Vi compatible.
10280conpty			Platform where |ConPTY| can be used.
10281cryptv			Compiled with encryption support |encryption|.
10282cscope			Compiled with |cscope| support.
10283cursorbind		Compiled with |'cursorbind'| (always true)
10284debug			Compiled with "DEBUG" defined.
10285dialog_con		Compiled with console dialog support.
10286dialog_gui		Compiled with GUI dialog support.
10287diff			Compiled with |vimdiff| and 'diff' support.
10288digraphs		Compiled with support for digraphs.
10289directx			Compiled with support for DirectX and 'renderoptions'.
10290dnd			Compiled with support for the "~ register |quote_~|.
10291ebcdic			Compiled on a machine with ebcdic character set.
10292emacs_tags		Compiled with support for Emacs tags.
10293eval			Compiled with expression evaluation support.  Always
10294			true, of course!
10295ex_extra		|+ex_extra| (always true)
10296extra_search		Compiled with support for |'incsearch'| and
10297			|'hlsearch'|
10298farsi			Compiled with Farsi support |farsi|.
10299file_in_path		Compiled with support for |gf| and |<cfile>|
10300filterpipe		When 'shelltemp' is off pipes are used for shell
10301			read/write/filter commands
10302find_in_path		Compiled with support for include file searches
10303			|+find_in_path|.
10304float			Compiled with support for |Float|.
10305fname_case		Case in file names matters (for Amiga, MS-DOS, and
10306			Windows this is not present).
10307folding			Compiled with |folding| support.
10308footer			Compiled with GUI footer support. |gui-footer|
10309fork			Compiled to use fork()/exec() instead of system().
10310gettext			Compiled with message translation |multi-lang|
10311gui			Compiled with GUI enabled.
10312gui_athena		Compiled with Athena GUI.
10313gui_gnome		Compiled with Gnome support (gui_gtk is also defined).
10314gui_gtk			Compiled with GTK+ GUI (any version).
10315gui_gtk2		Compiled with GTK+ 2 GUI (gui_gtk is also defined).
10316gui_gtk3		Compiled with GTK+ 3 GUI (gui_gtk is also defined).
10317gui_mac			Compiled with Macintosh GUI.
10318gui_motif		Compiled with Motif GUI.
10319gui_photon		Compiled with Photon GUI.
10320gui_running		Vim is running in the GUI, or it will start soon.
10321gui_win32		Compiled with MS Windows Win32 GUI.
10322gui_win32s		idem, and Win32s system being used (Windows 3.1)
10323hangul_input		Compiled with Hangul input support. |hangul|
10324hpux			HP-UX version of Vim.
10325iconv			Can use iconv() for conversion.
10326insert_expand		Compiled with support for CTRL-X expansion commands in
10327			Insert mode.
10328jumplist		Compiled with |jumplist| support.
10329keymap			Compiled with 'keymap' support.
10330lambda			Compiled with |lambda| support.
10331langmap			Compiled with 'langmap' support.
10332libcall			Compiled with |libcall()| support.
10333linebreak		Compiled with 'linebreak', 'breakat', 'showbreak' and
10334			'breakindent' support.
10335linux			Linux version of Vim.
10336lispindent		Compiled with support for lisp indenting.
10337listcmds		Compiled with commands for the buffer list |:files|
10338			and the argument list |arglist|.
10339localmap		Compiled with local mappings and abbr. |:map-local|
10340lua			Compiled with Lua interface |Lua|.
10341mac			Any Macintosh version of Vim  cf. osx
10342macunix			Synonym for osxdarwin
10343menu			Compiled with support for |:menu|.
10344mksession		Compiled with support for |:mksession|.
10345modify_fname		Compiled with file name modifiers. |filename-modifiers|
10346mouse			Compiled with support mouse.
10347mouse_dec		Compiled with support for Dec terminal mouse.
10348mouse_gpm		Compiled with support for gpm (Linux console mouse)
10349mouse_netterm		Compiled with support for netterm mouse.
10350mouse_pterm		Compiled with support for qnx pterm mouse.
10351mouse_sysmouse		Compiled with support for sysmouse (*BSD console mouse)
10352mouse_sgr		Compiled with support for sgr mouse.
10353mouse_urxvt		Compiled with support for urxvt mouse.
10354mouse_xterm		Compiled with support for xterm mouse.
10355mouseshape		Compiled with support for 'mouseshape'.
10356multi_byte		Compiled with support for 'encoding' (always true)
10357multi_byte_encoding	'encoding' is set to a multi-byte encoding.
10358multi_byte_ime		Compiled with support for IME input method.
10359multi_lang		Compiled with support for multiple languages.
10360mzscheme		Compiled with MzScheme interface |mzscheme|.
10361netbeans_enabled	Compiled with support for |netbeans| and connected.
10362netbeans_intg		Compiled with support for |netbeans|.
10363num64			Compiled with 64-bit |Number| support.
10364ole			Compiled with OLE automation support for Win32.
10365osx			Compiled for macOS  cf. mac
10366osxdarwin		Compiled for macOS, with |mac-darwin-feature|
10367packages		Compiled with |packages| support.
10368path_extra		Compiled with up/downwards search in 'path' and 'tags'
10369perl			Compiled with Perl interface.
10370persistent_undo		Compiled with support for persistent undo history.
10371postscript		Compiled with PostScript file printing.
10372printer			Compiled with |:hardcopy| support.
10373profile			Compiled with |:profile| support.
10374python			Python 2.x interface available. |has-python|
10375python_compiled		Compiled with Python 2.x interface. |has-python|
10376python_dynamic		Python 2.x interface is dynamically loaded. |has-python|
10377python3			Python 3.x interface available. |has-python|
10378python3_compiled	Compiled with Python 3.x interface. |has-python|
10379python3_dynamic		Python 3.x interface is dynamically loaded. |has-python|
10380pythonx			Compiled with |python_x| interface. |has-pythonx|
10381qnx			QNX version of Vim.
10382quickfix		Compiled with |quickfix| support.
10383reltime			Compiled with |reltime()| support.
10384rightleft		Compiled with 'rightleft' support.
10385ruby			Compiled with Ruby interface |ruby|.
10386scrollbind		Compiled with 'scrollbind' support. (always true)
10387showcmd			Compiled with 'showcmd' support.
10388signs			Compiled with |:sign| support.
10389smartindent		Compiled with 'smartindent' support.
10390spell			Compiled with spell checking support |spell|.
10391startuptime		Compiled with |--startuptime| support.
10392statusline		Compiled with support for 'statusline', 'rulerformat'
10393			and special formats of 'titlestring' and 'iconstring'.
10394sun			SunOS version of Vim.
10395sun_workshop		Support for Sun |workshop| has been removed.
10396syntax			Compiled with syntax highlighting support |syntax|.
10397syntax_items		There are active syntax highlighting items for the
10398			current buffer.
10399system			Compiled to use system() instead of fork()/exec().
10400tag_binary		Compiled with binary searching in tags files
10401			|tag-binary-search|.
10402tag_old_static		Compiled with support for old static tags
10403			|tag-old-static|.
10404tcl			Compiled with Tcl interface.
10405termguicolors		Compiled with true color in terminal support.
10406terminal		Compiled with |terminal| support.
10407terminfo		Compiled with terminfo instead of termcap.
10408termresponse		Compiled with support for |t_RV| and |v:termresponse|.
10409textobjects		Compiled with support for |text-objects|.
10410textprop		Compiled with support for |text-properties|.
10411tgetent			Compiled with tgetent support, able to use a termcap
10412			or terminfo file.
10413timers			Compiled with |timer_start()| support.
10414title			Compiled with window title support |'title'|.
10415toolbar			Compiled with support for |gui-toolbar|.
10416ttyin			input is a terminal (tty)
10417ttyout			output is a terminal (tty)
10418unix			Unix version of Vim. *+unix*
10419unnamedplus		Compiled with support for "unnamedplus" in 'clipboard'
10420user_commands		User-defined commands.
10421vcon			Win32: Virtual console support is working, can use
10422			'termguicolors'. Also see |+vtp|.
10423vertsplit		Compiled with vertically split windows |:vsplit|.
10424			(always true)
10425vim_starting		True while initial source'ing takes place. |startup|
10426			*vim_starting*
10427viminfo			Compiled with viminfo support.
10428virtualedit		Compiled with 'virtualedit' option. (always true)
10429visual			Compiled with Visual mode. (always true)
10430visualextra		Compiled with extra Visual mode commands. (always
10431			true) |blockwise-operators|.
10432vms			VMS version of Vim.
10433vreplace		Compiled with |gR| and |gr| commands. (always true)
10434vtp			Compiled for vcon support |+vtp| (check vcon to find
10435			out if it works in the current console).
10436wildignore		Compiled with 'wildignore' option.
10437wildmenu		Compiled with 'wildmenu' option.
10438win16			old version for MS-Windows 3.1 (always false)
10439win32			Win32 version of Vim (MS-Windows 95 and later, 32 or
10440			64 bits)
10441win32unix		Win32 version of Vim, using Unix files (Cygwin)
10442win64			Win64 version of Vim (MS-Windows 64 bit).
10443win95			Win32 version for MS-Windows 95/98/ME (always false)
10444winaltkeys		Compiled with 'winaltkeys' option.
10445windows			Compiled with support for more than one window.
10446			(always true)
10447writebackup		Compiled with 'writebackup' default on.
10448xfontset		Compiled with X fontset support |xfontset|.
10449xim			Compiled with X input method support |xim|.
10450xpm			Compiled with pixmap support.
10451xpm_w32			Compiled with pixmap support for Win32. (Only for
10452			backward compatibility. Use "xpm" instead.)
10453xsmp			Compiled with X session management support.
10454xsmp_interact		Compiled with interactive X session management support.
10455xterm_clipboard		Compiled with support for xterm clipboard.
10456xterm_save		Compiled with support for saving and restoring the
10457			xterm screen.
10458x11			Compiled with X11 support.
10459
10460							*string-match*
10461Matching a pattern in a String
10462
10463A regexp pattern as explained at |pattern| is normally used to find a match in
10464the buffer lines.  When a pattern is used to find a match in a String, almost
10465everything works in the same way.  The difference is that a String is handled
10466like it is one line.  When it contains a "\n" character, this is not seen as a
10467line break for the pattern.  It can be matched with a "\n" in the pattern, or
10468with ".".  Example: >
10469	:let a = "aaaa\nxxxx"
10470	:echo matchstr(a, "..\n..")
10471	aa
10472	xx
10473	:echo matchstr(a, "a.x")
10474	a
10475	x
10476
10477Don't forget that "^" will only match at the first character of the String and
10478"$" at the last character of the string.  They don't match after or before a
10479"\n".
10480
10481==============================================================================
104825. Defining functions					*user-functions*
10483
10484New functions can be defined.  These can be called just like builtin
10485functions.  The function executes a sequence of Ex commands.  Normal mode
10486commands can be executed with the |:normal| command.
10487
10488The function name must start with an uppercase letter, to avoid confusion with
10489builtin functions.  To prevent from using the same name in different scripts
10490avoid obvious, short names.  A good habit is to start the function name with
10491the name of the script, e.g., "HTMLcolor()".
10492
10493It's also possible to use curly braces, see |curly-braces-names|.  And the
10494|autoload| facility is useful to define a function only when it's called.
10495
10496							*local-function*
10497A function local to a script must start with "s:".  A local script function
10498can only be called from within the script and from functions, user commands
10499and autocommands defined in the script.  It is also possible to call the
10500function from a mapping defined in the script, but then |<SID>| must be used
10501instead of "s:" when the mapping is expanded outside of the script.
10502There are only script-local functions, no buffer-local or window-local
10503functions.
10504
10505					*:fu* *:function* *E128* *E129* *E123*
10506:fu[nction]		List all functions and their arguments.
10507
10508:fu[nction] {name}	List function {name}.
10509			{name} can also be a |Dictionary| entry that is a
10510			|Funcref|: >
10511				:function dict.init
10512
10513:fu[nction] /{pattern}	List functions with a name matching {pattern}.
10514			Example that lists all functions ending with "File": >
10515				:function /File$
10516<
10517							*:function-verbose*
10518When 'verbose' is non-zero, listing a function will also display where it was
10519last defined. Example: >
10520
10521    :verbose function SetFileTypeSH
10522	function SetFileTypeSH(name)
10523	    Last set from /usr/share/vim/vim-7.0/filetype.vim
10524<
10525See |:verbose-cmd| for more information.
10526
10527						*E124* *E125* *E853* *E884*
10528:fu[nction][!] {name}([arguments]) [range] [abort] [dict] [closure]
10529			Define a new function by the name {name}.  The body of
10530			the function follows in the next lines, until the
10531			matching |:endfunction|.
10532
10533			The name must be made of alphanumeric characters and
10534			'_', and must start with a capital or "s:" (see
10535			above).  Note that using "b:" or "g:" is not allowed.
10536			(since patch 7.4.260 E884 is given if the function
10537			name has a colon in the name, e.g. for "foo:bar()".
10538			Before that patch no error was given).
10539
10540			{name} can also be a |Dictionary| entry that is a
10541			|Funcref|: >
10542				:function dict.init(arg)
10543<			"dict" must be an existing dictionary.  The entry
10544			"init" is added if it didn't exist yet.  Otherwise [!]
10545			is required to overwrite an existing function.  The
10546			result is a |Funcref| to a numbered function.  The
10547			function can only be used with a |Funcref| and will be
10548			deleted if there are no more references to it.
10549								*E127* *E122*
10550			When a function by this name already exists and [!] is
10551			not used an error message is given.  There is one
10552			exception: When sourcing a script again, a function
10553			that was previously defined in that script will be
10554			silently replaced.
10555			When [!] is used, an existing function is silently
10556			replaced.  Unless it is currently being executed, that
10557			is an error.
10558			NOTE: Use ! wisely.  If used without care it can cause
10559			an existing function to be replaced unexpectedly,
10560			which is hard to debug.
10561
10562			For the {arguments} see |function-argument|.
10563
10564					*:func-range* *a:firstline* *a:lastline*
10565			When the [range] argument is added, the function is
10566			expected to take care of a range itself.  The range is
10567			passed as "a:firstline" and "a:lastline".  If [range]
10568			is excluded, ":{range}call" will call the function for
10569			each line in the range, with the cursor on the start
10570			of each line.  See |function-range-example|.
10571			The cursor is still moved to the first line of the
10572			range, as is the case with all Ex commands.
10573								*:func-abort*
10574			When the [abort] argument is added, the function will
10575			abort as soon as an error is detected.
10576								*:func-dict*
10577			When the [dict] argument is added, the function must
10578			be invoked through an entry in a |Dictionary|.  The
10579			local variable "self" will then be set to the
10580			dictionary.  See |Dictionary-function|.
10581						*:func-closure* *E932*
10582			When the [closure] argument is added, the function
10583			can access variables and arguments from the outer
10584			scope.  This is usually called a closure.  In this
10585			example Bar() uses "x" from the scope of Foo().  It
10586			remains referenced even after Foo() returns: >
10587				:function! Foo()
10588				:  let x = 0
10589				:  function! Bar() closure
10590				:    let x += 1
10591				:    return x
10592				:  endfunction
10593				:  return funcref('Bar')
10594				:endfunction
10595
10596				:let F = Foo()
10597				:echo F()
10598<				1 >
10599				:echo F()
10600<				2 >
10601				:echo F()
10602<				3
10603
10604						*function-search-undo*
10605			The last used search pattern and the redo command "."
10606			will not be changed by the function.  This also
10607			implies that the effect of |:nohlsearch| is undone
10608			when the function returns.
10609
10610				*:endf* *:endfunction* *E126* *E193* *W22*
10611:endf[unction] [argument]
10612			The end of a function definition.  Best is to put it
10613			on a line by its own, without [argument].
10614
10615			[argument] can be:
10616				| command	command to execute next
10617				\n command	command to execute next
10618				" comment	always ignored
10619				anything else	ignored, warning given when
10620						'verbose' is non-zero
10621			The support for a following command was added in Vim
10622			8.0.0654, before that any argument was silently
10623			ignored.
10624
10625			To be able to define a function inside an `:execute`
10626			command, use line breaks instead of |:bar|: >
10627				:exe "func Foo()\necho 'foo'\nendfunc"
10628<
10629				*:delf* *:delfunction* *E130* *E131* *E933*
10630:delf[unction][!] {name}
10631			Delete function {name}.
10632			{name} can also be a |Dictionary| entry that is a
10633			|Funcref|: >
10634				:delfunc dict.init
10635<			This will remove the "init" entry from "dict".  The
10636			function is deleted if there are no more references to
10637			it.
10638			With the ! there is no error if the function does not
10639			exist.
10640							*:retu* *:return* *E133*
10641:retu[rn] [expr]	Return from a function.  When "[expr]" is given, it is
10642			evaluated and returned as the result of the function.
10643			If "[expr]" is not given, the number 0 is returned.
10644			When a function ends without an explicit ":return",
10645			the number 0 is returned.
10646			Note that there is no check for unreachable lines,
10647			thus there is no warning if commands follow ":return".
10648
10649			If the ":return" is used after a |:try| but before the
10650			matching |:finally| (if present), the commands
10651			following the ":finally" up to the matching |:endtry|
10652			are executed first.  This process applies to all
10653			nested ":try"s inside the function.  The function
10654			returns at the outermost ":endtry".
10655
10656						*function-argument* *a:var*
10657An argument can be defined by giving its name.  In the function this can then
10658be used as "a:name" ("a:" for argument).
10659					*a:0* *a:1* *a:000* *E740* *...*
10660Up to 20 arguments can be given, separated by commas.  After the named
10661arguments an argument "..." can be specified, which means that more arguments
10662may optionally be following.  In the function the extra arguments can be used
10663as "a:1", "a:2", etc.  "a:0" is set to the number of extra arguments (which
10664can be 0).  "a:000" is set to a |List| that contains these arguments.  Note
10665that "a:1" is the same as "a:000[0]".
10666								*E742*
10667The a: scope and the variables in it cannot be changed, they are fixed.
10668However, if a composite type is used, such as |List| or |Dictionary| , you can
10669change their contents.  Thus you can pass a |List| to a function and have the
10670function add an item to it.  If you want to make sure the function cannot
10671change a |List| or |Dictionary| use |:lockvar|.
10672
10673When not using "...", the number of arguments in a function call must be equal
10674to the number of named arguments.  When using "...", the number of arguments
10675may be larger.
10676
10677It is also possible to define a function without any arguments.  You must
10678still supply the () then.
10679
10680It is allowed to define another function inside a function body.
10681
10682							*local-variables*
10683Inside a function local variables can be used.  These will disappear when the
10684function returns.  Global variables need to be accessed with "g:".
10685
10686Example: >
10687  :function Table(title, ...)
10688  :  echohl Title
10689  :  echo a:title
10690  :  echohl None
10691  :  echo a:0 . " items:"
10692  :  for s in a:000
10693  :    echon ' ' . s
10694  :  endfor
10695  :endfunction
10696
10697This function can then be called with: >
10698  call Table("Table", "line1", "line2")
10699  call Table("Empty Table")
10700
10701To return more than one value, return a |List|: >
10702  :function Compute(n1, n2)
10703  :  if a:n2 == 0
10704  :    return ["fail", 0]
10705  :  endif
10706  :  return ["ok", a:n1 / a:n2]
10707  :endfunction
10708
10709This function can then be called with: >
10710  :let [success, div] = Compute(102, 6)
10711  :if success == "ok"
10712  :  echo div
10713  :endif
10714<
10715						*:cal* *:call* *E107* *E117*
10716:[range]cal[l] {name}([arguments])
10717		Call a function.  The name of the function and its arguments
10718		are as specified with |:function|.  Up to 20 arguments can be
10719		used.  The returned value is discarded.
10720		Without a range and for functions that accept a range, the
10721		function is called once.  When a range is given the cursor is
10722		positioned at the start of the first line before executing the
10723		function.
10724		When a range is given and the function doesn't handle it
10725		itself, the function is executed for each line in the range,
10726		with the cursor in the first column of that line.  The cursor
10727		is left at the last line (possibly moved by the last function
10728		call).  The arguments are re-evaluated for each line.  Thus
10729		this works:
10730						*function-range-example*  >
10731	:function Mynumber(arg)
10732	:  echo line(".") . " " . a:arg
10733	:endfunction
10734	:1,5call Mynumber(getline("."))
10735<
10736		The "a:firstline" and "a:lastline" are defined anyway, they
10737		can be used to do something different at the start or end of
10738		the range.
10739
10740		Example of a function that handles the range itself: >
10741
10742	:function Cont() range
10743	:  execute (a:firstline + 1) . "," . a:lastline . 's/^/\t\\ '
10744	:endfunction
10745	:4,8call Cont()
10746<
10747		This function inserts the continuation character "\" in front
10748		of all the lines in the range, except the first one.
10749
10750		When the function returns a composite value it can be further
10751		dereferenced, but the range will not be used then.  Example: >
10752	:4,8call GetDict().method()
10753<		Here GetDict() gets the range but method() does not.
10754
10755								*E132*
10756The recursiveness of user functions is restricted with the |'maxfuncdepth'|
10757option.
10758
10759
10760AUTOMATICALLY LOADING FUNCTIONS ~
10761							*autoload-functions*
10762When using many or large functions, it's possible to automatically define them
10763only when they are used.  There are two methods: with an autocommand and with
10764the "autoload" directory in 'runtimepath'.
10765
10766
10767Using an autocommand ~
10768
10769This is introduced in the user manual, section |41.14|.
10770
10771The autocommand is useful if you have a plugin that is a long Vim script file.
10772You can define the autocommand and quickly quit the script with |:finish|.
10773That makes Vim startup faster.  The autocommand should then load the same file
10774again, setting a variable to skip the |:finish| command.
10775
10776Use the FuncUndefined autocommand event with a pattern that matches the
10777function(s) to be defined.  Example: >
10778
10779	:au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim
10780
10781The file "~/vim/bufnetfuncs.vim" should then define functions that start with
10782"BufNet".  Also see |FuncUndefined|.
10783
10784
10785Using an autoload script ~
10786							*autoload* *E746*
10787This is introduced in the user manual, section |41.15|.
10788
10789Using a script in the "autoload" directory is simpler, but requires using
10790exactly the right file name.  A function that can be autoloaded has a name
10791like this: >
10792
10793	:call filename#funcname()
10794
10795When such a function is called, and it is not defined yet, Vim will search the
10796"autoload" directories in 'runtimepath' for a script file called
10797"filename.vim".  For example "~/.vim/autoload/filename.vim".  That file should
10798then define the function like this: >
10799
10800	function filename#funcname()
10801	   echo "Done!"
10802	endfunction
10803
10804The file name and the name used before the # in the function must match
10805exactly, and the defined function must have the name exactly as it will be
10806called.
10807
10808It is possible to use subdirectories.  Every # in the function name works like
10809a path separator.  Thus when calling a function: >
10810
10811	:call foo#bar#func()
10812
10813Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'.
10814
10815This also works when reading a variable that has not been set yet: >
10816
10817	:let l = foo#bar#lvar
10818
10819However, when the autoload script was already loaded it won't be loaded again
10820for an unknown variable.
10821
10822When assigning a value to such a variable nothing special happens.  This can
10823be used to pass settings to the autoload script before it's loaded: >
10824
10825	:let foo#bar#toggle = 1
10826	:call foo#bar#func()
10827
10828Note that when you make a mistake and call a function that is supposed to be
10829defined in an autoload script, but the script doesn't actually define the
10830function, the script will be sourced every time you try to call the function.
10831And you will get an error message every time.
10832
10833Also note that if you have two script files, and one calls a function in the
10834other and vice versa, before the used function is defined, it won't work.
10835Avoid using the autoload functionality at the toplevel.
10836
10837Hint: If you distribute a bunch of scripts you can pack them together with the
10838|vimball| utility.  Also read the user manual |distribute-script|.
10839
10840==============================================================================
108416. Curly braces names					*curly-braces-names*
10842
10843In most places where you can use a variable, you can use a "curly braces name"
10844variable.  This is a regular variable name with one or more expressions
10845wrapped in braces {} like this: >
10846	my_{adjective}_variable
10847
10848When Vim encounters this, it evaluates the expression inside the braces, puts
10849that in place of the expression, and re-interprets the whole as a variable
10850name.  So in the above example, if the variable "adjective" was set to
10851"noisy", then the reference would be to "my_noisy_variable", whereas if
10852"adjective" was set to "quiet", then it would be to "my_quiet_variable".
10853
10854One application for this is to create a set of variables governed by an option
10855value.  For example, the statement >
10856	echo my_{&background}_message
10857
10858would output the contents of "my_dark_message" or "my_light_message" depending
10859on the current value of 'background'.
10860
10861You can use multiple brace pairs: >
10862	echo my_{adverb}_{adjective}_message
10863..or even nest them: >
10864	echo my_{ad{end_of_word}}_message
10865where "end_of_word" is either "verb" or "jective".
10866
10867However, the expression inside the braces must evaluate to a valid single
10868variable name, e.g. this is invalid: >
10869	:let foo='a + b'
10870	:echo c{foo}d
10871.. since the result of expansion is "ca + bd", which is not a variable name.
10872
10873						*curly-braces-function-names*
10874You can call and define functions by an evaluated name in a similar way.
10875Example: >
10876	:let func_end='whizz'
10877	:call my_func_{func_end}(parameter)
10878
10879This would call the function "my_func_whizz(parameter)".
10880
10881This does NOT work: >
10882  :let i = 3
10883  :let @{i} = ''  " error
10884  :echo @{i}      " error
10885
10886==============================================================================
108877. Commands						*expression-commands*
10888
10889:let {var-name} = {expr1}				*:let* *E18*
10890			Set internal variable {var-name} to the result of the
10891			expression {expr1}.  The variable will get the type
10892			from the {expr}.  If {var-name} didn't exist yet, it
10893			is created.
10894
10895:let {var-name}[{idx}] = {expr1}			*E689*
10896			Set a list item to the result of the expression
10897			{expr1}.  {var-name} must refer to a list and {idx}
10898			must be a valid index in that list.  For nested list
10899			the index can be repeated.
10900			This cannot be used to add an item to a |List|.
10901			This cannot be used to set a byte in a String.  You
10902			can do that like this: >
10903				:let var = var[0:2] . 'X' . var[4:]
10904<			When {var-name} is a |Blob| then {idx} can be the
10905			length of the blob, in which case one byte is
10906			appended.
10907
10908							*E711* *E719*
10909:let {var-name}[{idx1}:{idx2}] = {expr1}		*E708* *E709* *E710*
10910			Set a sequence of items in a |List| to the result of
10911			the expression {expr1}, which must be a list with the
10912			correct number of items.
10913			{idx1} can be omitted, zero is used instead.
10914			{idx2} can be omitted, meaning the end of the list.
10915			When the selected range of items is partly past the
10916			end of the list, items will be added.
10917
10918                                            *:let+=* *:let-=* *:letstar=*
10919                                            *:let/=* *:let%=* *:let.=* *E734*
10920:let {var} += {expr1}	Like ":let {var} = {var} + {expr1}".
10921:let {var} -= {expr1}	Like ":let {var} = {var} - {expr1}".
10922:let {var} *= {expr1}	Like ":let {var} = {var} * {expr1}".
10923:let {var} /= {expr1}	Like ":let {var} = {var} / {expr1}".
10924:let {var} %= {expr1}	Like ":let {var} = {var} % {expr1}".
10925:let {var} .= {expr1}	Like ":let {var} = {var} . {expr1}".
10926			These fail if {var} was not set yet and when the type
10927			of {var} and {expr1} don't fit the operator.
10928
10929
10930:let ${env-name} = {expr1}			*:let-environment* *:let-$*
10931			Set environment variable {env-name} to the result of
10932			the expression {expr1}.  The type is always String.
10933:let ${env-name} .= {expr1}
10934			Append {expr1} to the environment variable {env-name}.
10935			If the environment variable didn't exist yet this
10936			works like "=".
10937
10938:let @{reg-name} = {expr1}			*:let-register* *:let-@*
10939			Write the result of the expression {expr1} in register
10940			{reg-name}.  {reg-name} must be a single letter, and
10941			must be the name of a writable register (see
10942			|registers|).  "@@" can be used for the unnamed
10943			register, "@/" for the search pattern.
10944			If the result of {expr1} ends in a <CR> or <NL>, the
10945			register will be linewise, otherwise it will be set to
10946			characterwise.
10947			This can be used to clear the last search pattern: >
10948				:let @/ = ""
10949<			This is different from searching for an empty string,
10950			that would match everywhere.
10951
10952:let @{reg-name} .= {expr1}
10953			Append {expr1} to register {reg-name}.  If the
10954			register was empty it's like setting it to {expr1}.
10955
10956:let &{option-name} = {expr1}			*:let-option* *:let-&*
10957			Set option {option-name} to the result of the
10958			expression {expr1}.  A String or Number value is
10959			always converted to the type of the option.
10960			For an option local to a window or buffer the effect
10961			is just like using the |:set| command: both the local
10962			value and the global value are changed.
10963			Example: >
10964				:let &path = &path . ',/usr/local/include'
10965<			This also works for terminal codes in the form t_xx.
10966			But only for alphanumerical names.  Example: >
10967				:let &t_k1 = "\<Esc>[234;"
10968<			When the code does not exist yet it will be created as
10969			a terminal key code, there is no error.
10970
10971:let &{option-name} .= {expr1}
10972			For a string option: Append {expr1} to the value.
10973			Does not insert a comma like |:set+=|.
10974
10975:let &{option-name} += {expr1}
10976:let &{option-name} -= {expr1}
10977			For a number or boolean option: Add or subtract
10978			{expr1}.
10979
10980:let &l:{option-name} = {expr1}
10981:let &l:{option-name} .= {expr1}
10982:let &l:{option-name} += {expr1}
10983:let &l:{option-name} -= {expr1}
10984			Like above, but only set the local value of an option
10985			(if there is one).  Works like |:setlocal|.
10986
10987:let &g:{option-name} = {expr1}
10988:let &g:{option-name} .= {expr1}
10989:let &g:{option-name} += {expr1}
10990:let &g:{option-name} -= {expr1}
10991			Like above, but only set the global value of an option
10992			(if there is one).  Works like |:setglobal|.
10993
10994:let [{name1}, {name2}, ...] = {expr1}		*:let-unpack* *E687* *E688*
10995			{expr1} must evaluate to a |List|.  The first item in
10996			the list is assigned to {name1}, the second item to
10997			{name2}, etc.
10998			The number of names must match the number of items in
10999			the |List|.
11000			Each name can be one of the items of the ":let"
11001			command as mentioned above.
11002			Example: >
11003				:let [s, item] = GetItem(s)
11004<			Detail: {expr1} is evaluated first, then the
11005			assignments are done in sequence.  This matters if
11006			{name2} depends on {name1}.  Example: >
11007				:let x = [0, 1]
11008				:let i = 0
11009				:let [i, x[i]] = [1, 2]
11010				:echo x
11011<			The result is [0, 2].
11012
11013:let [{name1}, {name2}, ...] .= {expr1}
11014:let [{name1}, {name2}, ...] += {expr1}
11015:let [{name1}, {name2}, ...] -= {expr1}
11016			Like above, but append/add/subtract the value for each
11017			|List| item.
11018
11019:let [{name}, ..., ; {lastname}] = {expr1}
11020			Like |:let-unpack| above, but the |List| may have more
11021			items than there are names.  A list of the remaining
11022			items is assigned to {lastname}.  If there are no
11023			remaining items {lastname} is set to an empty list.
11024			Example: >
11025				:let [a, b; rest] = ["aval", "bval", 3, 4]
11026<
11027:let [{name}, ..., ; {lastname}] .= {expr1}
11028:let [{name}, ..., ; {lastname}] += {expr1}
11029:let [{name}, ..., ; {lastname}] -= {expr1}
11030			Like above, but append/add/subtract the value for each
11031			|List| item.
11032
11033								*E121*
11034:let {var-name}	..	List the value of variable {var-name}.  Multiple
11035			variable names may be given.  Special names recognized
11036			here:				*E738*
11037			  g:	global variables
11038			  b:	local buffer variables
11039			  w:	local window variables
11040			  t:	local tab page variables
11041			  s:	script-local variables
11042			  l:	local function variables
11043			  v:	Vim variables.
11044
11045:let			List the values of all variables.  The type of the
11046			variable is indicated before the value:
11047			    <nothing>	String
11048				#	Number
11049				*	Funcref
11050
11051
11052:unl[et][!] {name} ...				*:unlet* *:unl* *E108* *E795*
11053			Remove the internal variable {name}.  Several variable
11054			names can be given, they are all removed.  The name
11055			may also be a |List| or |Dictionary| item.
11056			With [!] no error message is given for non-existing
11057			variables.
11058			One or more items from a |List| can be removed: >
11059				:unlet list[3]	  " remove fourth item
11060				:unlet list[3:]   " remove fourth item to last
11061<			One item from a |Dictionary| can be removed at a time: >
11062				:unlet dict['two']
11063				:unlet dict.two
11064<			This is especially useful to clean up used global
11065			variables and script-local variables (these are not
11066			deleted when the script ends).  Function-local
11067			variables are automatically deleted when the function
11068			ends.
11069
11070:unl[et] ${env-name} ...			*:unlet-environment* *:unlet-$*
11071			Remove environment variable {env-name}.
11072			Can mix {name} and ${env-name} in one :unlet command.
11073			No error message is given for a non-existing
11074			variable, also without !.
11075			If the system does not support deleting an environment
11076			variable, it is made emtpy.
11077
11078:lockv[ar][!] [depth] {name} ...			*:lockvar* *:lockv*
11079			Lock the internal variable {name}.  Locking means that
11080			it can no longer be changed (until it is unlocked).
11081			A locked variable can be deleted: >
11082				:lockvar v
11083				:let v = 'asdf'		" fails!
11084				:unlet v
11085<							*E741* *E940*
11086			If you try to change a locked variable you get an
11087			error message: "E741: Value is locked: {name}".
11088			If you try to lock or unlock a built-in variable you
11089			get an error message: "E940: Cannot lock or unlock
11090			variable {name}".
11091
11092			[depth] is relevant when locking a |List| or
11093			|Dictionary|.  It specifies how deep the locking goes:
11094				1	Lock the |List| or |Dictionary| itself,
11095					cannot add or remove items, but can
11096					still change their values.
11097				2	Also lock the values, cannot change
11098					the items.  If an item is a |List| or
11099					|Dictionary|, cannot add or remove
11100					items, but can still change the
11101					values.
11102				3	Like 2 but for the |List| /
11103					|Dictionary| in the |List| /
11104					|Dictionary|, one level deeper.
11105			The default [depth] is 2, thus when {name} is a |List|
11106			or |Dictionary| the values cannot be changed.
11107								*E743*
11108			For unlimited depth use [!] and omit [depth].
11109			However, there is a maximum depth of 100 to catch
11110			loops.
11111
11112			Note that when two variables refer to the same |List|
11113			and you lock one of them, the |List| will also be
11114			locked when used through the other variable.
11115			Example: >
11116				:let l = [0, 1, 2, 3]
11117				:let cl = l
11118				:lockvar l
11119				:let cl[1] = 99		" won't work!
11120<			You may want to make a copy of a list to avoid this.
11121			See |deepcopy()|.
11122
11123
11124:unlo[ckvar][!] [depth] {name} ...			*:unlockvar* *:unlo*
11125			Unlock the internal variable {name}.  Does the
11126			opposite of |:lockvar|.
11127
11128
11129:if {expr1}			*:if* *:endif* *:en* *E171* *E579* *E580*
11130:en[dif]		Execute the commands until the next matching ":else"
11131			or ":endif" if {expr1} evaluates to non-zero.
11132
11133			From Vim version 4.5 until 5.0, every Ex command in
11134			between the ":if" and ":endif" is ignored.  These two
11135			commands were just to allow for future expansions in a
11136			backward compatible way.  Nesting was allowed.  Note
11137			that any ":else" or ":elseif" was ignored, the "else"
11138			part was not executed either.
11139
11140			You can use this to remain compatible with older
11141			versions: >
11142				:if version >= 500
11143				:  version-5-specific-commands
11144				:endif
11145<			The commands still need to be parsed to find the
11146			"endif".  Sometimes an older Vim has a problem with a
11147			new command.  For example, ":silent" is recognized as
11148			a ":substitute" command.  In that case ":execute" can
11149			avoid problems: >
11150				:if version >= 600
11151				:  execute "silent 1,$delete"
11152				:endif
11153<
11154			NOTE: The ":append" and ":insert" commands don't work
11155			properly in between ":if" and ":endif".
11156
11157						*:else* *:el* *E581* *E583*
11158:el[se]			Execute the commands until the next matching ":else"
11159			or ":endif" if they previously were not being
11160			executed.
11161
11162					*:elseif* *:elsei* *E582* *E584*
11163:elsei[f] {expr1}	Short for ":else" ":if", with the addition that there
11164			is no extra ":endif".
11165
11166:wh[ile] {expr1}			*:while* *:endwhile* *:wh* *:endw*
11167						*E170* *E585* *E588* *E733*
11168:endw[hile]		Repeat the commands between ":while" and ":endwhile",
11169			as long as {expr1} evaluates to non-zero.
11170			When an error is detected from a command inside the
11171			loop, execution continues after the "endwhile".
11172			Example: >
11173				:let lnum = 1
11174				:while lnum <= line("$")
11175				   :call FixLine(lnum)
11176				   :let lnum = lnum + 1
11177				:endwhile
11178<
11179			NOTE: The ":append" and ":insert" commands don't work
11180			properly inside a ":while" and ":for" loop.
11181
11182:for {var} in {object}					*:for* *E690* *E732*
11183:endfo[r]						*:endfo* *:endfor*
11184			Repeat the commands between ":for" and ":endfor" for
11185			each item in {object}.  {object} can be a |List| or
11186			a |Blob|.  Variable {var} is set to the value of each
11187			item.  When an error is detected for a command inside
11188			the loop, execution continues after the "endfor".
11189			Changing {object} inside the loop affects what items
11190			are used.  Make a copy if this is unwanted: >
11191				:for item in copy(mylist)
11192<
11193			When {object} is a |List| and not making a copy, Vim
11194			stores a reference to the next item in the |List|
11195			before executing the commands with the current item.
11196			Thus the current item can be removed without effect.
11197			Removing any later item means it will not be found.
11198			Thus the following example works (an inefficient way
11199			to make a |List| empty): >
11200				for item in mylist
11201				   call remove(mylist, 0)
11202				endfor
11203<			Note that reordering the |List| (e.g., with sort() or
11204			reverse()) may have unexpected effects.
11205
11206			When {object} is a |Blob|, Vim always makes a copy to
11207			iterate over.  Unlike with |List|, modifying the
11208			|Blob| does not affect the iteration.
11209
11210:for [{var1}, {var2}, ...] in {listlist}
11211:endfo[r]
11212			Like ":for" above, but each item in {listlist} must be
11213			a list, of which each item is assigned to {var1},
11214			{var2}, etc.  Example: >
11215				:for [lnum, col] in [[1, 3], [2, 5], [3, 8]]
11216				   :echo getline(lnum)[col]
11217				:endfor
11218<
11219						*:continue* *:con* *E586*
11220:con[tinue]		When used inside a ":while" or ":for" loop, jumps back
11221			to the start of the loop.
11222			If it is used after a |:try| inside the loop but
11223			before the matching |:finally| (if present), the
11224			commands following the ":finally" up to the matching
11225			|:endtry| are executed first.  This process applies to
11226			all nested ":try"s inside the loop.  The outermost
11227			":endtry" then jumps back to the start of the loop.
11228
11229						*:break* *:brea* *E587*
11230:brea[k]		When used inside a ":while" or ":for" loop, skips to
11231			the command after the matching ":endwhile" or
11232			":endfor".
11233			If it is used after a |:try| inside the loop but
11234			before the matching |:finally| (if present), the
11235			commands following the ":finally" up to the matching
11236			|:endtry| are executed first.  This process applies to
11237			all nested ":try"s inside the loop.  The outermost
11238			":endtry" then jumps to the command after the loop.
11239
11240:try				*:try* *:endt* *:endtry* *E600* *E601* *E602*
11241:endt[ry]		Change the error handling for the commands between
11242			":try" and ":endtry" including everything being
11243			executed across ":source" commands, function calls,
11244			or autocommand invocations.
11245
11246			When an error or interrupt is detected and there is
11247			a |:finally| command following, execution continues
11248			after the ":finally".  Otherwise, or when the
11249			":endtry" is reached thereafter, the next
11250			(dynamically) surrounding ":try" is checked for
11251			a corresponding ":finally" etc.  Then the script
11252			processing is terminated.  (Whether a function
11253			definition has an "abort" argument does not matter.)
11254			Example: >
11255		:try | edit too much | finally | echo "cleanup" | endtry
11256		:echo "impossible"	" not reached, script terminated above
11257<
11258			Moreover, an error or interrupt (dynamically) inside
11259			":try" and ":endtry" is converted to an exception.  It
11260			can be caught as if it were thrown by a |:throw|
11261			command (see |:catch|).  In this case, the script
11262			processing is not terminated.
11263
11264			The value "Vim:Interrupt" is used for an interrupt
11265			exception.  An error in a Vim command is converted
11266			to a value of the form "Vim({command}):{errmsg}",
11267			other errors are converted to a value of the form
11268			"Vim:{errmsg}".  {command} is the full command name,
11269			and {errmsg} is the message that is displayed if the
11270			error exception is not caught, always beginning with
11271			the error number.
11272			Examples: >
11273		:try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
11274		:try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
11275<
11276					*:cat* *:catch* *E603* *E604* *E605*
11277:cat[ch] /{pattern}/	The following commands until the next |:catch|,
11278			|:finally|, or |:endtry| that belongs to the same
11279			|:try| as the ":catch" are executed when an exception
11280			matching {pattern} is being thrown and has not yet
11281			been caught by a previous ":catch".  Otherwise, these
11282			commands are skipped.
11283			When {pattern} is omitted all errors are caught.
11284			Examples: >
11285		:catch /^Vim:Interrupt$/	 " catch interrupts (CTRL-C)
11286		:catch /^Vim\%((\a\+)\)\=:E/	 " catch all Vim errors
11287		:catch /^Vim\%((\a\+)\)\=:/	 " catch errors and interrupts
11288		:catch /^Vim(write):/		 " catch all errors in :write
11289		:catch /^Vim\%((\a\+)\)\=:E123:/ " catch error E123
11290		:catch /my-exception/		 " catch user exception
11291		:catch /.*/			 " catch everything
11292		:catch				 " same as /.*/
11293<
11294			Another character can be used instead of / around the
11295			{pattern}, so long as it does not have a special
11296			meaning (e.g., '|' or '"') and doesn't occur inside
11297			{pattern}.
11298			Information about the exception is available in
11299			|v:exception|.  Also see |throw-variables|.
11300			NOTE: It is not reliable to ":catch" the TEXT of
11301			an error message because it may vary in different
11302			locales.
11303
11304					*:fina* *:finally* *E606* *E607*
11305:fina[lly]		The following commands until the matching |:endtry|
11306			are executed whenever the part between the matching
11307			|:try| and the ":finally" is left:  either by falling
11308			through to the ":finally" or by a |:continue|,
11309			|:break|, |:finish|, or |:return|, or by an error or
11310			interrupt or exception (see |:throw|).
11311
11312							*:th* *:throw* *E608*
11313:th[row] {expr1}	The {expr1} is evaluated and thrown as an exception.
11314			If the ":throw" is used after a |:try| but before the
11315			first corresponding |:catch|, commands are skipped
11316			until the first ":catch" matching {expr1} is reached.
11317			If there is no such ":catch" or if the ":throw" is
11318			used after a ":catch" but before the |:finally|, the
11319			commands following the ":finally" (if present) up to
11320			the matching |:endtry| are executed.  If the ":throw"
11321			is after the ":finally", commands up to the ":endtry"
11322			are skipped.  At the ":endtry", this process applies
11323			again for the next dynamically surrounding ":try"
11324			(which may be found in a calling function or sourcing
11325			script), until a matching ":catch" has been found.
11326			If the exception is not caught, the command processing
11327			is terminated.
11328			Example: >
11329		:try | throw "oops" | catch /^oo/ | echo "caught" | endtry
11330<			Note that "catch" may need to be on a separate line
11331			for when an error causes the parsing to skip the whole
11332			line and not see the "|" that separates the commands.
11333
11334							*:ec* *:echo*
11335:ec[ho] {expr1} ..	Echoes each {expr1}, with a space in between.  The
11336			first {expr1} starts on a new line.
11337			Also see |:comment|.
11338			Use "\n" to start a new line.  Use "\r" to move the
11339			cursor to the first column.
11340			Uses the highlighting set by the |:echohl| command.
11341			Cannot be followed by a comment.
11342			Example: >
11343		:echo "the value of 'shell' is" &shell
11344<							*:echo-redraw*
11345			A later redraw may make the message disappear again.
11346			And since Vim mostly postpones redrawing until it's
11347			finished with a sequence of commands this happens
11348			quite often.  To avoid that a command from before the
11349			":echo" causes a redraw afterwards (redraws are often
11350			postponed until you type something), force a redraw
11351			with the |:redraw| command.  Example: >
11352		:new | redraw | echo "there is a new window"
11353<
11354							*:echon*
11355:echon {expr1} ..	Echoes each {expr1}, without anything added.  Also see
11356			|:comment|.
11357			Uses the highlighting set by the |:echohl| command.
11358			Cannot be followed by a comment.
11359			Example: >
11360				:echon "the value of 'shell' is " &shell
11361<
11362			Note the difference between using ":echo", which is a
11363			Vim command, and ":!echo", which is an external shell
11364			command: >
11365		:!echo %		--> filename
11366<			The arguments of ":!" are expanded, see |:_%|. >
11367		:!echo "%"		--> filename or "filename"
11368<			Like the previous example.  Whether you see the double
11369			quotes or not depends on your 'shell'. >
11370		:echo %			--> nothing
11371<			The '%' is an illegal character in an expression. >
11372		:echo "%"		--> %
11373<			This just echoes the '%' character. >
11374		:echo expand("%")	--> filename
11375<			This calls the expand() function to expand the '%'.
11376
11377							*:echoh* *:echohl*
11378:echoh[l] {name}	Use the highlight group {name} for the following
11379			|:echo|, |:echon| and |:echomsg| commands.  Also used
11380			for the |input()| prompt.  Example: >
11381		:echohl WarningMsg | echo "Don't panic!" | echohl None
11382<			Don't forget to set the group back to "None",
11383			otherwise all following echo's will be highlighted.
11384
11385							*:echom* *:echomsg*
11386:echom[sg] {expr1} ..	Echo the expression(s) as a true message, saving the
11387			message in the |message-history|.
11388			Spaces are placed between the arguments as with the
11389			|:echo| command.  But unprintable characters are
11390			displayed, not interpreted.
11391			The parsing works slightly different from |:echo|,
11392			more like |:execute|.  All the expressions are first
11393			evaluated and concatenated before echoing anything.
11394			If expressions does not evaluate to a Number or
11395			String, string() is used to turn it into a string.
11396			Uses the highlighting set by the |:echohl| command.
11397			Example: >
11398		:echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see."
11399<			See |:echo-redraw| to avoid the message disappearing
11400			when the screen is redrawn.
11401							*:echoe* *:echoerr*
11402:echoe[rr] {expr1} ..	Echo the expression(s) as an error message, saving the
11403			message in the |message-history|.  When used in a
11404			script or function the line number will be added.
11405			Spaces are placed between the arguments as with the
11406			|:echomsg| command.  When used inside a try conditional,
11407			the message is raised as an error exception instead
11408			(see |try-echoerr|).
11409			Example: >
11410		:echoerr "This script just failed!"
11411<			If you just want a highlighted message use |:echohl|.
11412			And to get a beep: >
11413		:exe "normal \<Esc>"
11414<
11415							*:exe* *:execute*
11416:exe[cute] {expr1} ..	Executes the string that results from the evaluation
11417			of {expr1} as an Ex command.
11418			Multiple arguments are concatenated, with a space in
11419			between.  To avoid the extra space use the "."
11420			operator to concatenate strings into one argument.
11421			{expr1} is used as the processed command, command line
11422			editing keys are not recognized.
11423			Cannot be followed by a comment.
11424			Examples: >
11425		:execute "buffer" nextbuf
11426		:execute "normal" count . "w"
11427<
11428			":execute" can be used to append a command to commands
11429			that don't accept a '|'.  Example: >
11430		:execute '!ls' | echo "theend"
11431
11432<			":execute" is also a nice way to avoid having to type
11433			control characters in a Vim script for a ":normal"
11434			command: >
11435		:execute "normal ixxx\<Esc>"
11436<			This has an <Esc> character, see |expr-string|.
11437
11438			Be careful to correctly escape special characters in
11439			file names.  The |fnameescape()| function can be used
11440			for Vim commands, |shellescape()| for |:!| commands.
11441			Examples: >
11442		:execute "e " . fnameescape(filename)
11443		:execute "!ls " . shellescape(filename, 1)
11444<
11445			Note: The executed string may be any command-line, but
11446			starting or ending "if", "while" and "for" does not
11447			always work, because when commands are skipped the
11448			":execute" is not evaluated and Vim loses track of
11449			where blocks start and end.  Also "break" and
11450			"continue" should not be inside ":execute".
11451			This example does not work, because the ":execute" is
11452			not evaluated and Vim does not see the "while", and
11453			gives an error for finding an ":endwhile": >
11454		:if 0
11455		: execute 'while i > 5'
11456		:  echo "test"
11457		: endwhile
11458		:endif
11459<
11460			It is allowed to have a "while" or "if" command
11461			completely in the executed string: >
11462		:execute 'while i < 5 | echo i | let i = i + 1 | endwhile'
11463<
11464
11465							*:exe-comment*
11466			":execute", ":echo" and ":echon" cannot be followed by
11467			a comment directly, because they see the '"' as the
11468			start of a string.  But, you can use '|' followed by a
11469			comment.  Example: >
11470		:echo "foo" | "this is a comment
11471
11472==============================================================================
114738. Exception handling					*exception-handling*
11474
11475The Vim script language comprises an exception handling feature.  This section
11476explains how it can be used in a Vim script.
11477
11478Exceptions may be raised by Vim on an error or on interrupt, see
11479|catch-errors| and |catch-interrupt|.  You can also explicitly throw an
11480exception by using the ":throw" command, see |throw-catch|.
11481
11482
11483TRY CONDITIONALS					*try-conditionals*
11484
11485Exceptions can be caught or can cause cleanup code to be executed.  You can
11486use a try conditional to specify catch clauses (that catch exceptions) and/or
11487a finally clause (to be executed for cleanup).
11488   A try conditional begins with a |:try| command and ends at the matching
11489|:endtry| command.  In between, you can use a |:catch| command to start
11490a catch clause, or a |:finally| command to start a finally clause.  There may
11491be none or multiple catch clauses, but there is at most one finally clause,
11492which must not be followed by any catch clauses.  The lines before the catch
11493clauses and the finally clause is called a try block. >
11494
11495     :try
11496     :	...
11497     :	...				TRY BLOCK
11498     :	...
11499     :catch /{pattern}/
11500     :	...
11501     :	...				CATCH CLAUSE
11502     :	...
11503     :catch /{pattern}/
11504     :	...
11505     :	...				CATCH CLAUSE
11506     :	...
11507     :finally
11508     :	...
11509     :	...				FINALLY CLAUSE
11510     :	...
11511     :endtry
11512
11513The try conditional allows to watch code for exceptions and to take the
11514appropriate actions.  Exceptions from the try block may be caught.  Exceptions
11515from the try block and also the catch clauses may cause cleanup actions.
11516   When no exception is thrown during execution of the try block, the control
11517is transferred to the finally clause, if present.  After its execution, the
11518script continues with the line following the ":endtry".
11519   When an exception occurs during execution of the try block, the remaining
11520lines in the try block are skipped.  The exception is matched against the
11521patterns specified as arguments to the ":catch" commands.  The catch clause
11522after the first matching ":catch" is taken, other catch clauses are not
11523executed.  The catch clause ends when the next ":catch", ":finally", or
11524":endtry" command is reached - whatever is first.  Then, the finally clause
11525(if present) is executed.  When the ":endtry" is reached, the script execution
11526continues in the following line as usual.
11527   When an exception that does not match any of the patterns specified by the
11528":catch" commands is thrown in the try block, the exception is not caught by
11529that try conditional and none of the catch clauses is executed.  Only the
11530finally clause, if present, is taken.  The exception pends during execution of
11531the finally clause.  It is resumed at the ":endtry", so that commands after
11532the ":endtry" are not executed and the exception might be caught elsewhere,
11533see |try-nesting|.
11534   When during execution of a catch clause another exception is thrown, the
11535remaining lines in that catch clause are not executed.  The new exception is
11536not matched against the patterns in any of the ":catch" commands of the same
11537try conditional and none of its catch clauses is taken.  If there is, however,
11538a finally clause, it is executed, and the exception pends during its
11539execution.  The commands following the ":endtry" are not executed.  The new
11540exception might, however, be caught elsewhere, see |try-nesting|.
11541   When during execution of the finally clause (if present) an exception is
11542thrown, the remaining lines in the finally clause are skipped.  If the finally
11543clause has been taken because of an exception from the try block or one of the
11544catch clauses, the original (pending) exception is discarded.  The commands
11545following the ":endtry" are not executed, and the exception from the finally
11546clause is propagated and can be caught elsewhere, see |try-nesting|.
11547
11548The finally clause is also executed, when a ":break" or ":continue" for
11549a ":while" loop enclosing the complete try conditional is executed from the
11550try block or a catch clause.  Or when a ":return" or ":finish" is executed
11551from the try block or a catch clause of a try conditional in a function or
11552sourced script, respectively.  The ":break", ":continue", ":return", or
11553":finish" pends during execution of the finally clause and is resumed when the
11554":endtry" is reached.  It is, however, discarded when an exception is thrown
11555from the finally clause.
11556   When a ":break" or ":continue" for a ":while" loop enclosing the complete
11557try conditional or when a ":return" or ":finish" is encountered in the finally
11558clause, the rest of the finally clause is skipped, and the ":break",
11559":continue", ":return" or ":finish" is executed as usual.  If the finally
11560clause has been taken because of an exception or an earlier ":break",
11561":continue", ":return", or ":finish" from the try block or a catch clause,
11562this pending exception or command is discarded.
11563
11564For examples see |throw-catch| and |try-finally|.
11565
11566
11567NESTING	OF TRY CONDITIONALS				*try-nesting*
11568
11569Try conditionals can be nested arbitrarily.  That is, a complete try
11570conditional can be put into the try block, a catch clause, or the finally
11571clause of another try conditional.  If the inner try conditional does not
11572catch an exception thrown in its try block or throws a new exception from one
11573of its catch clauses or its finally clause, the outer try conditional is
11574checked according to the rules above.  If the inner try conditional is in the
11575try block of the outer try conditional, its catch clauses are checked, but
11576otherwise only the finally clause is executed.  It does not matter for
11577nesting, whether the inner try conditional is directly contained in the outer
11578one, or whether the outer one sources a script or calls a function containing
11579the inner try conditional.
11580
11581When none of the active try conditionals catches an exception, just their
11582finally clauses are executed.  Thereafter, the script processing terminates.
11583An error message is displayed in case of an uncaught exception explicitly
11584thrown by a ":throw" command.  For uncaught error and interrupt exceptions
11585implicitly raised by Vim, the error message(s) or interrupt message are shown
11586as usual.
11587
11588For examples see |throw-catch|.
11589
11590
11591EXAMINING EXCEPTION HANDLING CODE			*except-examine*
11592
11593Exception handling code can get tricky.  If you are in doubt what happens, set
11594'verbose' to 13 or use the ":13verbose" command modifier when sourcing your
11595script file.  Then you see when an exception is thrown, discarded, caught, or
11596finished.  When using a verbosity level of at least 14, things pending in
11597a finally clause are also shown.  This information is also given in debug mode
11598(see |debug-scripts|).
11599
11600
11601THROWING AND CATCHING EXCEPTIONS			*throw-catch*
11602
11603You can throw any number or string as an exception.  Use the |:throw| command
11604and pass the value to be thrown as argument: >
11605	:throw 4711
11606	:throw "string"
11607<							*throw-expression*
11608You can also specify an expression argument.  The expression is then evaluated
11609first, and the result is thrown: >
11610	:throw 4705 + strlen("string")
11611	:throw strpart("strings", 0, 6)
11612
11613An exception might be thrown during evaluation of the argument of the ":throw"
11614command.  Unless it is caught there, the expression evaluation is abandoned.
11615The ":throw" command then does not throw a new exception.
11616   Example: >
11617
11618	:function! Foo(arg)
11619	:  try
11620	:    throw a:arg
11621	:  catch /foo/
11622	:  endtry
11623	:  return 1
11624	:endfunction
11625	:
11626	:function! Bar()
11627	:  echo "in Bar"
11628	:  return 4710
11629	:endfunction
11630	:
11631	:throw Foo("arrgh") + Bar()
11632
11633This throws "arrgh", and "in Bar" is not displayed since Bar() is not
11634executed. >
11635	:throw Foo("foo") + Bar()
11636however displays "in Bar" and throws 4711.
11637
11638Any other command that takes an expression as argument might also be
11639abandoned by an (uncaught) exception during the expression evaluation.  The
11640exception is then propagated to the caller of the command.
11641   Example: >
11642
11643	:if Foo("arrgh")
11644	:  echo "then"
11645	:else
11646	:  echo "else"
11647	:endif
11648
11649Here neither of "then" or "else" is displayed.
11650
11651							*catch-order*
11652Exceptions can be caught by a try conditional with one or more |:catch|
11653commands, see |try-conditionals|.   The values to be caught by each ":catch"
11654command can be specified as a pattern argument.  The subsequent catch clause
11655gets executed when a matching exception is caught.
11656   Example: >
11657
11658	:function! Foo(value)
11659	:  try
11660	:    throw a:value
11661	:  catch /^\d\+$/
11662	:    echo "Number thrown"
11663	:  catch /.*/
11664	:    echo "String thrown"
11665	:  endtry
11666	:endfunction
11667	:
11668	:call Foo(0x1267)
11669	:call Foo('string')
11670
11671The first call to Foo() displays "Number thrown", the second "String thrown".
11672An exception is matched against the ":catch" commands in the order they are
11673specified.  Only the first match counts.  So you should place the more
11674specific ":catch" first.  The following order does not make sense: >
11675
11676	:  catch /.*/
11677	:    echo "String thrown"
11678	:  catch /^\d\+$/
11679	:    echo "Number thrown"
11680
11681The first ":catch" here matches always, so that the second catch clause is
11682never taken.
11683
11684							*throw-variables*
11685If you catch an exception by a general pattern, you may access the exact value
11686in the variable |v:exception|: >
11687
11688	:  catch /^\d\+$/
11689	:    echo "Number thrown.  Value is" v:exception
11690
11691You may also be interested where an exception was thrown.  This is stored in
11692|v:throwpoint|.  Note that "v:exception" and "v:throwpoint" are valid for the
11693exception most recently caught as long it is not finished.
11694   Example: >
11695
11696	:function! Caught()
11697	:  if v:exception != ""
11698	:    echo 'Caught "' . v:exception . '" in ' . v:throwpoint
11699	:  else
11700	:    echo 'Nothing caught'
11701	:  endif
11702	:endfunction
11703	:
11704	:function! Foo()
11705	:  try
11706	:    try
11707	:      try
11708	:	 throw 4711
11709	:      finally
11710	:	 call Caught()
11711	:      endtry
11712	:    catch /.*/
11713	:      call Caught()
11714	:      throw "oops"
11715	:    endtry
11716	:  catch /.*/
11717	:    call Caught()
11718	:  finally
11719	:    call Caught()
11720	:  endtry
11721	:endfunction
11722	:
11723	:call Foo()
11724
11725This displays >
11726
11727	Nothing caught
11728	Caught "4711" in function Foo, line 4
11729	Caught "oops" in function Foo, line 10
11730	Nothing caught
11731
11732A practical example:  The following command ":LineNumber" displays the line
11733number in the script or function where it has been used: >
11734
11735	:function! LineNumber()
11736	:    return substitute(v:throwpoint, '.*\D\(\d\+\).*', '\1', "")
11737	:endfunction
11738	:command! LineNumber try | throw "" | catch | echo LineNumber() | endtry
11739<
11740							*try-nested*
11741An exception that is not caught by a try conditional can be caught by
11742a surrounding try conditional: >
11743
11744	:try
11745	:  try
11746	:    throw "foo"
11747	:  catch /foobar/
11748	:    echo "foobar"
11749	:  finally
11750	:    echo "inner finally"
11751	:  endtry
11752	:catch /foo/
11753	:  echo "foo"
11754	:endtry
11755
11756The inner try conditional does not catch the exception, just its finally
11757clause is executed.  The exception is then caught by the outer try
11758conditional.  The example displays "inner finally" and then "foo".
11759
11760							*throw-from-catch*
11761You can catch an exception and throw a new one to be caught elsewhere from the
11762catch clause: >
11763
11764	:function! Foo()
11765	:  throw "foo"
11766	:endfunction
11767	:
11768	:function! Bar()
11769	:  try
11770	:    call Foo()
11771	:  catch /foo/
11772	:    echo "Caught foo, throw bar"
11773	:    throw "bar"
11774	:  endtry
11775	:endfunction
11776	:
11777	:try
11778	:  call Bar()
11779	:catch /.*/
11780	:  echo "Caught" v:exception
11781	:endtry
11782
11783This displays "Caught foo, throw bar" and then "Caught bar".
11784
11785							*rethrow*
11786There is no real rethrow in the Vim script language, but you may throw
11787"v:exception" instead: >
11788
11789	:function! Bar()
11790	:  try
11791	:    call Foo()
11792	:  catch /.*/
11793	:    echo "Rethrow" v:exception
11794	:    throw v:exception
11795	:  endtry
11796	:endfunction
11797<							*try-echoerr*
11798Note that this method cannot be used to "rethrow" Vim error or interrupt
11799exceptions, because it is not possible to fake Vim internal exceptions.
11800Trying so causes an error exception.  You should throw your own exception
11801denoting the situation.  If you want to cause a Vim error exception containing
11802the original error exception value, you can use the |:echoerr| command: >
11803
11804	:try
11805	:  try
11806	:    asdf
11807	:  catch /.*/
11808	:    echoerr v:exception
11809	:  endtry
11810	:catch /.*/
11811	:  echo v:exception
11812	:endtry
11813
11814This code displays
11815
11816	Vim(echoerr):Vim:E492: Not an editor command:	asdf ~
11817
11818
11819CLEANUP CODE						*try-finally*
11820
11821Scripts often change global settings and restore them at their end.  If the
11822user however interrupts the script by pressing CTRL-C, the settings remain in
11823an inconsistent state.  The same may happen to you in the development phase of
11824a script when an error occurs or you explicitly throw an exception without
11825catching it.  You can solve these problems by using a try conditional with
11826a finally clause for restoring the settings.  Its execution is guaranteed on
11827normal control flow, on error, on an explicit ":throw", and on interrupt.
11828(Note that errors and interrupts from inside the try conditional are converted
11829to exceptions.  When not caught, they terminate the script after the finally
11830clause has been executed.)
11831Example: >
11832
11833	:try
11834	:  let s:saved_ts = &ts
11835	:  set ts=17
11836	:
11837	:  " Do the hard work here.
11838	:
11839	:finally
11840	:  let &ts = s:saved_ts
11841	:  unlet s:saved_ts
11842	:endtry
11843
11844This method should be used locally whenever a function or part of a script
11845changes global settings which need to be restored on failure or normal exit of
11846that function or script part.
11847
11848							*break-finally*
11849Cleanup code works also when the try block or a catch clause is left by
11850a ":continue", ":break", ":return", or ":finish".
11851   Example: >
11852
11853	:let first = 1
11854	:while 1
11855	:  try
11856	:    if first
11857	:      echo "first"
11858	:      let first = 0
11859	:      continue
11860	:    else
11861	:      throw "second"
11862	:    endif
11863	:  catch /.*/
11864	:    echo v:exception
11865	:    break
11866	:  finally
11867	:    echo "cleanup"
11868	:  endtry
11869	:  echo "still in while"
11870	:endwhile
11871	:echo "end"
11872
11873This displays "first", "cleanup", "second", "cleanup", and "end". >
11874
11875	:function! Foo()
11876	:  try
11877	:    return 4711
11878	:  finally
11879	:    echo "cleanup\n"
11880	:  endtry
11881	:  echo "Foo still active"
11882	:endfunction
11883	:
11884	:echo Foo() "returned by Foo"
11885
11886This displays "cleanup" and "4711 returned by Foo".  You don't need to add an
11887extra ":return" in the finally clause.  (Above all, this would override the
11888return value.)
11889
11890							*except-from-finally*
11891Using either of ":continue", ":break", ":return", ":finish", or ":throw" in
11892a finally clause is possible, but not recommended since it abandons the
11893cleanup actions for the try conditional.  But, of course, interrupt and error
11894exceptions might get raised from a finally clause.
11895   Example where an error in the finally clause stops an interrupt from
11896working correctly: >
11897
11898	:try
11899	:  try
11900	:    echo "Press CTRL-C for interrupt"
11901	:    while 1
11902	:    endwhile
11903	:  finally
11904	:    unlet novar
11905	:  endtry
11906	:catch /novar/
11907	:endtry
11908	:echo "Script still running"
11909	:sleep 1
11910
11911If you need to put commands that could fail into a finally clause, you should
11912think about catching or ignoring the errors in these commands, see
11913|catch-errors| and |ignore-errors|.
11914
11915
11916CATCHING ERRORS						*catch-errors*
11917
11918If you want to catch specific errors, you just have to put the code to be
11919watched in a try block and add a catch clause for the error message.  The
11920presence of the try conditional causes all errors to be converted to an
11921exception.  No message is displayed and |v:errmsg| is not set then.  To find
11922the right pattern for the ":catch" command, you have to know how the format of
11923the error exception is.
11924   Error exceptions have the following format: >
11925
11926	Vim({cmdname}):{errmsg}
11927or >
11928	Vim:{errmsg}
11929
11930{cmdname} is the name of the command that failed; the second form is used when
11931the command name is not known.  {errmsg} is the error message usually produced
11932when the error occurs outside try conditionals.  It always begins with
11933a capital "E", followed by a two or three-digit error number, a colon, and
11934a space.
11935
11936Examples:
11937
11938The command >
11939	:unlet novar
11940normally produces the error message >
11941	E108: No such variable: "novar"
11942which is converted inside try conditionals to an exception >
11943	Vim(unlet):E108: No such variable: "novar"
11944
11945The command >
11946	:dwim
11947normally produces the error message >
11948	E492: Not an editor command: dwim
11949which is converted inside try conditionals to an exception >
11950	Vim:E492: Not an editor command: dwim
11951
11952You can catch all ":unlet" errors by a >
11953	:catch /^Vim(unlet):/
11954or all errors for misspelled command names by a >
11955	:catch /^Vim:E492:/
11956
11957Some error messages may be produced by different commands: >
11958	:function nofunc
11959and >
11960	:delfunction nofunc
11961both produce the error message >
11962	E128: Function name must start with a capital: nofunc
11963which is converted inside try conditionals to an exception >
11964	Vim(function):E128: Function name must start with a capital: nofunc
11965or >
11966	Vim(delfunction):E128: Function name must start with a capital: nofunc
11967respectively.  You can catch the error by its number independently on the
11968command that caused it if you use the following pattern: >
11969	:catch /^Vim(\a\+):E128:/
11970
11971Some commands like >
11972	:let x = novar
11973produce multiple error messages, here: >
11974	E121: Undefined variable: novar
11975	E15: Invalid expression:  novar
11976Only the first is used for the exception value, since it is the most specific
11977one (see |except-several-errors|).  So you can catch it by >
11978	:catch /^Vim(\a\+):E121:/
11979
11980You can catch all errors related to the name "nofunc" by >
11981	:catch /\<nofunc\>/
11982
11983You can catch all Vim errors in the ":write" and ":read" commands by >
11984	:catch /^Vim(\(write\|read\)):E\d\+:/
11985
11986You can catch all Vim errors by the pattern >
11987	:catch /^Vim\((\a\+)\)\=:E\d\+:/
11988<
11989							*catch-text*
11990NOTE: You should never catch the error message text itself: >
11991	:catch /No such variable/
11992only works in the English locale, but not when the user has selected
11993a different language by the |:language| command.  It is however helpful to
11994cite the message text in a comment: >
11995	:catch /^Vim(\a\+):E108:/   " No such variable
11996
11997
11998IGNORING ERRORS						*ignore-errors*
11999
12000You can ignore errors in a specific Vim command by catching them locally: >
12001
12002	:try
12003	:  write
12004	:catch
12005	:endtry
12006
12007But you are strongly recommended NOT to use this simple form, since it could
12008catch more than you want.  With the ":write" command, some autocommands could
12009be executed and cause errors not related to writing, for instance: >
12010
12011	:au BufWritePre * unlet novar
12012
12013There could even be such errors you are not responsible for as a script
12014writer: a user of your script might have defined such autocommands.  You would
12015then hide the error from the user.
12016   It is much better to use >
12017
12018	:try
12019	:  write
12020	:catch /^Vim(write):/
12021	:endtry
12022
12023which only catches real write errors.  So catch only what you'd like to ignore
12024intentionally.
12025
12026For a single command that does not cause execution of autocommands, you could
12027even suppress the conversion of errors to exceptions by the ":silent!"
12028command: >
12029	:silent! nunmap k
12030This works also when a try conditional is active.
12031
12032
12033CATCHING INTERRUPTS					*catch-interrupt*
12034
12035When there are active try conditionals, an interrupt (CTRL-C) is converted to
12036the exception "Vim:Interrupt".  You can catch it like every exception.  The
12037script is not terminated, then.
12038   Example: >
12039
12040	:function! TASK1()
12041	:  sleep 10
12042	:endfunction
12043
12044	:function! TASK2()
12045	:  sleep 20
12046	:endfunction
12047
12048	:while 1
12049	:  let command = input("Type a command: ")
12050	:  try
12051	:    if command == ""
12052	:      continue
12053	:    elseif command == "END"
12054	:      break
12055	:    elseif command == "TASK1"
12056	:      call TASK1()
12057	:    elseif command == "TASK2"
12058	:      call TASK2()
12059	:    else
12060	:      echo "\nIllegal command:" command
12061	:      continue
12062	:    endif
12063	:  catch /^Vim:Interrupt$/
12064	:    echo "\nCommand interrupted"
12065	:    " Caught the interrupt.  Continue with next prompt.
12066	:  endtry
12067	:endwhile
12068
12069You can interrupt a task here by pressing CTRL-C; the script then asks for
12070a new command.  If you press CTRL-C at the prompt, the script is terminated.
12071
12072For testing what happens when CTRL-C would be pressed on a specific line in
12073your script, use the debug mode and execute the |>quit| or |>interrupt|
12074command on that line.  See |debug-scripts|.
12075
12076
12077CATCHING ALL						*catch-all*
12078
12079The commands >
12080
12081	:catch /.*/
12082	:catch //
12083	:catch
12084
12085catch everything, error exceptions, interrupt exceptions and exceptions
12086explicitly thrown by the |:throw| command.  This is useful at the top level of
12087a script in order to catch unexpected things.
12088   Example: >
12089
12090	:try
12091	:
12092	:  " do the hard work here
12093	:
12094	:catch /MyException/
12095	:
12096	:  " handle known problem
12097	:
12098	:catch /^Vim:Interrupt$/
12099	:    echo "Script interrupted"
12100	:catch /.*/
12101	:  echo "Internal error (" . v:exception . ")"
12102	:  echo " - occurred at " . v:throwpoint
12103	:endtry
12104	:" end of script
12105
12106Note: Catching all might catch more things than you want.  Thus, you are
12107strongly encouraged to catch only for problems that you can really handle by
12108specifying a pattern argument to the ":catch".
12109   Example: Catching all could make it nearly impossible to interrupt a script
12110by pressing CTRL-C: >
12111
12112	:while 1
12113	:  try
12114	:    sleep 1
12115	:  catch
12116	:  endtry
12117	:endwhile
12118
12119
12120EXCEPTIONS AND AUTOCOMMANDS				*except-autocmd*
12121
12122Exceptions may be used during execution of autocommands.  Example: >
12123
12124	:autocmd User x try
12125	:autocmd User x   throw "Oops!"
12126	:autocmd User x catch
12127	:autocmd User x   echo v:exception
12128	:autocmd User x endtry
12129	:autocmd User x throw "Arrgh!"
12130	:autocmd User x echo "Should not be displayed"
12131	:
12132	:try
12133	:  doautocmd User x
12134	:catch
12135	:  echo v:exception
12136	:endtry
12137
12138This displays "Oops!" and "Arrgh!".
12139
12140							*except-autocmd-Pre*
12141For some commands, autocommands get executed before the main action of the
12142command takes place.  If an exception is thrown and not caught in the sequence
12143of autocommands, the sequence and the command that caused its execution are
12144abandoned and the exception is propagated to the caller of the command.
12145   Example: >
12146
12147	:autocmd BufWritePre * throw "FAIL"
12148	:autocmd BufWritePre * echo "Should not be displayed"
12149	:
12150	:try
12151	:  write
12152	:catch
12153	:  echo "Caught:" v:exception "from" v:throwpoint
12154	:endtry
12155
12156Here, the ":write" command does not write the file currently being edited (as
12157you can see by checking 'modified'), since the exception from the BufWritePre
12158autocommand abandons the ":write".  The exception is then caught and the
12159script displays: >
12160
12161	Caught: FAIL from BufWrite Auto commands for "*"
12162<
12163							*except-autocmd-Post*
12164For some commands, autocommands get executed after the main action of the
12165command has taken place.  If this main action fails and the command is inside
12166an active try conditional, the autocommands are skipped and an error exception
12167is thrown that can be caught by the caller of the command.
12168   Example: >
12169
12170	:autocmd BufWritePost * echo "File successfully written!"
12171	:
12172	:try
12173	:  write /i/m/p/o/s/s/i/b/l/e
12174	:catch
12175	:  echo v:exception
12176	:endtry
12177
12178This just displays: >
12179
12180	Vim(write):E212: Can't open file for writing (/i/m/p/o/s/s/i/b/l/e)
12181
12182If you really need to execute the autocommands even when the main action
12183fails, trigger the event from the catch clause.
12184   Example: >
12185
12186	:autocmd BufWritePre  * set noreadonly
12187	:autocmd BufWritePost * set readonly
12188	:
12189	:try
12190	:  write /i/m/p/o/s/s/i/b/l/e
12191	:catch
12192	:  doautocmd BufWritePost /i/m/p/o/s/s/i/b/l/e
12193	:endtry
12194<
12195You can also use ":silent!": >
12196
12197	:let x = "ok"
12198	:let v:errmsg = ""
12199	:autocmd BufWritePost * if v:errmsg != ""
12200	:autocmd BufWritePost *   let x = "after fail"
12201	:autocmd BufWritePost * endif
12202	:try
12203	:  silent! write /i/m/p/o/s/s/i/b/l/e
12204	:catch
12205	:endtry
12206	:echo x
12207
12208This displays "after fail".
12209
12210If the main action of the command does not fail, exceptions from the
12211autocommands will be catchable by the caller of the command:  >
12212
12213	:autocmd BufWritePost * throw ":-("
12214	:autocmd BufWritePost * echo "Should not be displayed"
12215	:
12216	:try
12217	:  write
12218	:catch
12219	:  echo v:exception
12220	:endtry
12221<
12222							*except-autocmd-Cmd*
12223For some commands, the normal action can be replaced by a sequence of
12224autocommands.  Exceptions from that sequence will be catchable by the caller
12225of the command.
12226   Example:  For the ":write" command, the caller cannot know whether the file
12227had actually been written when the exception occurred.  You need to tell it in
12228some way. >
12229
12230	:if !exists("cnt")
12231	:  let cnt = 0
12232	:
12233	:  autocmd BufWriteCmd * if &modified
12234	:  autocmd BufWriteCmd *   let cnt = cnt + 1
12235	:  autocmd BufWriteCmd *   if cnt % 3 == 2
12236	:  autocmd BufWriteCmd *     throw "BufWriteCmdError"
12237	:  autocmd BufWriteCmd *   endif
12238	:  autocmd BufWriteCmd *   write | set nomodified
12239	:  autocmd BufWriteCmd *   if cnt % 3 == 0
12240	:  autocmd BufWriteCmd *     throw "BufWriteCmdError"
12241	:  autocmd BufWriteCmd *   endif
12242	:  autocmd BufWriteCmd *   echo "File successfully written!"
12243	:  autocmd BufWriteCmd * endif
12244	:endif
12245	:
12246	:try
12247	:	write
12248	:catch /^BufWriteCmdError$/
12249	:  if &modified
12250	:    echo "Error on writing (file contents not changed)"
12251	:  else
12252	:    echo "Error after writing"
12253	:  endif
12254	:catch /^Vim(write):/
12255	:    echo "Error on writing"
12256	:endtry
12257
12258When this script is sourced several times after making changes, it displays
12259first >
12260	File successfully written!
12261then >
12262	Error on writing (file contents not changed)
12263then >
12264	Error after writing
12265etc.
12266
12267							*except-autocmd-ill*
12268You cannot spread a try conditional over autocommands for different events.
12269The following code is ill-formed: >
12270
12271	:autocmd BufWritePre  * try
12272	:
12273	:autocmd BufWritePost * catch
12274	:autocmd BufWritePost *   echo v:exception
12275	:autocmd BufWritePost * endtry
12276	:
12277	:write
12278
12279
12280EXCEPTION HIERARCHIES AND PARAMETERIZED EXCEPTIONS	*except-hier-param*
12281
12282Some programming languages allow to use hierarchies of exception classes or to
12283pass additional information with the object of an exception class.  You can do
12284similar things in Vim.
12285   In order to throw an exception from a hierarchy, just throw the complete
12286class name with the components separated by a colon, for instance throw the
12287string "EXCEPT:MATHERR:OVERFLOW" for an overflow in a mathematical library.
12288   When you want to pass additional information with your exception class, add
12289it in parentheses, for instance throw the string "EXCEPT:IO:WRITEERR(myfile)"
12290for an error when writing "myfile".
12291   With the appropriate patterns in the ":catch" command, you can catch for
12292base classes or derived classes of your hierarchy.  Additional information in
12293parentheses can be cut out from |v:exception| with the ":substitute" command.
12294   Example: >
12295
12296	:function! CheckRange(a, func)
12297	:  if a:a < 0
12298	:    throw "EXCEPT:MATHERR:RANGE(" . a:func . ")"
12299	:  endif
12300	:endfunction
12301	:
12302	:function! Add(a, b)
12303	:  call CheckRange(a:a, "Add")
12304	:  call CheckRange(a:b, "Add")
12305	:  let c = a:a + a:b
12306	:  if c < 0
12307	:    throw "EXCEPT:MATHERR:OVERFLOW"
12308	:  endif
12309	:  return c
12310	:endfunction
12311	:
12312	:function! Div(a, b)
12313	:  call CheckRange(a:a, "Div")
12314	:  call CheckRange(a:b, "Div")
12315	:  if (a:b == 0)
12316	:    throw "EXCEPT:MATHERR:ZERODIV"
12317	:  endif
12318	:  return a:a / a:b
12319	:endfunction
12320	:
12321	:function! Write(file)
12322	:  try
12323	:    execute "write" fnameescape(a:file)
12324	:  catch /^Vim(write):/
12325	:    throw "EXCEPT:IO(" . getcwd() . ", " . a:file . "):WRITEERR"
12326	:  endtry
12327	:endfunction
12328	:
12329	:try
12330	:
12331	:  " something with arithmetics and I/O
12332	:
12333	:catch /^EXCEPT:MATHERR:RANGE/
12334	:  let function = substitute(v:exception, '.*(\(\a\+\)).*', '\1', "")
12335	:  echo "Range error in" function
12336	:
12337	:catch /^EXCEPT:MATHERR/	" catches OVERFLOW and ZERODIV
12338	:  echo "Math error"
12339	:
12340	:catch /^EXCEPT:IO/
12341	:  let dir = substitute(v:exception, '.*(\(.\+\),\s*.\+).*', '\1', "")
12342	:  let file = substitute(v:exception, '.*(.\+,\s*\(.\+\)).*', '\1', "")
12343	:  if file !~ '^/'
12344	:    let file = dir . "/" . file
12345	:  endif
12346	:  echo 'I/O error for "' . file . '"'
12347	:
12348	:catch /^EXCEPT/
12349	:  echo "Unspecified error"
12350	:
12351	:endtry
12352
12353The exceptions raised by Vim itself (on error or when pressing CTRL-C) use
12354a flat hierarchy:  they are all in the "Vim" class.  You cannot throw yourself
12355exceptions with the "Vim" prefix; they are reserved for Vim.
12356   Vim error exceptions are parameterized with the name of the command that
12357failed, if known.  See |catch-errors|.
12358
12359
12360PECULIARITIES
12361							*except-compat*
12362The exception handling concept requires that the command sequence causing the
12363exception is aborted immediately and control is transferred to finally clauses
12364and/or a catch clause.
12365
12366In the Vim script language there are cases where scripts and functions
12367continue after an error: in functions without the "abort" flag or in a command
12368after ":silent!", control flow goes to the following line, and outside
12369functions, control flow goes to the line following the outermost ":endwhile"
12370or ":endif".  On the other hand, errors should be catchable as exceptions
12371(thus, requiring the immediate abortion).
12372
12373This problem has been solved by converting errors to exceptions and using
12374immediate abortion (if not suppressed by ":silent!") only when a try
12375conditional is active.  This is no restriction since an (error) exception can
12376be caught only from an active try conditional.  If you want an immediate
12377termination without catching the error, just use a try conditional without
12378catch clause.  (You can cause cleanup code being executed before termination
12379by specifying a finally clause.)
12380
12381When no try conditional is active, the usual abortion and continuation
12382behavior is used instead of immediate abortion.  This ensures compatibility of
12383scripts written for Vim 6.1 and earlier.
12384
12385However, when sourcing an existing script that does not use exception handling
12386commands (or when calling one of its functions) from inside an active try
12387conditional of a new script, you might change the control flow of the existing
12388script on error.  You get the immediate abortion on error and can catch the
12389error in the new script.  If however the sourced script suppresses error
12390messages by using the ":silent!" command (checking for errors by testing
12391|v:errmsg| if appropriate), its execution path is not changed.  The error is
12392not converted to an exception.  (See |:silent|.)  So the only remaining cause
12393where this happens is for scripts that don't care about errors and produce
12394error messages.  You probably won't want to use such code from your new
12395scripts.
12396
12397							*except-syntax-err*
12398Syntax errors in the exception handling commands are never caught by any of
12399the ":catch" commands of the try conditional they belong to.  Its finally
12400clauses, however, is executed.
12401   Example: >
12402
12403	:try
12404	:  try
12405	:    throw 4711
12406	:  catch /\(/
12407	:    echo "in catch with syntax error"
12408	:  catch
12409	:    echo "inner catch-all"
12410	:  finally
12411	:    echo "inner finally"
12412	:  endtry
12413	:catch
12414	:  echo 'outer catch-all caught "' . v:exception . '"'
12415	:  finally
12416	:    echo "outer finally"
12417	:endtry
12418
12419This displays: >
12420    inner finally
12421    outer catch-all caught "Vim(catch):E54: Unmatched \("
12422    outer finally
12423The original exception is discarded and an error exception is raised, instead.
12424
12425							*except-single-line*
12426The ":try", ":catch", ":finally", and ":endtry" commands can be put on
12427a single line, but then syntax errors may make it difficult to recognize the
12428"catch" line, thus you better avoid this.
12429   Example: >
12430	:try | unlet! foo # | catch | endtry
12431raises an error exception for the trailing characters after the ":unlet!"
12432argument, but does not see the ":catch" and ":endtry" commands, so that the
12433error exception is discarded and the "E488: Trailing characters" message gets
12434displayed.
12435
12436							*except-several-errors*
12437When several errors appear in a single command, the first error message is
12438usually the most specific one and therefor converted to the error exception.
12439   Example: >
12440	echo novar
12441causes >
12442	E121: Undefined variable: novar
12443	E15: Invalid expression: novar
12444The value of the error exception inside try conditionals is: >
12445	Vim(echo):E121: Undefined variable: novar
12446<							*except-syntax-error*
12447But when a syntax error is detected after a normal error in the same command,
12448the syntax error is used for the exception being thrown.
12449   Example: >
12450	unlet novar #
12451causes >
12452	E108: No such variable: "novar"
12453	E488: Trailing characters
12454The value of the error exception inside try conditionals is: >
12455	Vim(unlet):E488: Trailing characters
12456This is done because the syntax error might change the execution path in a way
12457not intended by the user.  Example: >
12458	try
12459	    try | unlet novar # | catch | echo v:exception | endtry
12460	catch /.*/
12461	    echo "outer catch:" v:exception
12462	endtry
12463This displays "outer catch: Vim(unlet):E488: Trailing characters", and then
12464a "E600: Missing :endtry" error message is given, see |except-single-line|.
12465
12466==============================================================================
124679. Examples						*eval-examples*
12468
12469Printing in Binary ~
12470>
12471  :" The function Nr2Bin() returns the binary string representation of a number.
12472  :func Nr2Bin(nr)
12473  :  let n = a:nr
12474  :  let r = ""
12475  :  while n
12476  :    let r = '01'[n % 2] . r
12477  :    let n = n / 2
12478  :  endwhile
12479  :  return r
12480  :endfunc
12481
12482  :" The function String2Bin() converts each character in a string to a
12483  :" binary string, separated with dashes.
12484  :func String2Bin(str)
12485  :  let out = ''
12486  :  for ix in range(strlen(a:str))
12487  :    let out = out . '-' . Nr2Bin(char2nr(a:str[ix]))
12488  :  endfor
12489  :  return out[1:]
12490  :endfunc
12491
12492Example of its use: >
12493  :echo Nr2Bin(32)
12494result: "100000" >
12495  :echo String2Bin("32")
12496result: "110011-110010"
12497
12498
12499Sorting lines ~
12500
12501This example sorts lines with a specific compare function. >
12502
12503  :func SortBuffer()
12504  :  let lines = getline(1, '$')
12505  :  call sort(lines, function("Strcmp"))
12506  :  call setline(1, lines)
12507  :endfunction
12508
12509As a one-liner: >
12510  :call setline(1, sort(getline(1, '$'), function("Strcmp")))
12511
12512
12513scanf() replacement ~
12514							*sscanf*
12515There is no sscanf() function in Vim.  If you need to extract parts from a
12516line, you can use matchstr() and substitute() to do it.  This example shows
12517how to get the file name, line number and column number out of a line like
12518"foobar.txt, 123, 45". >
12519   :" Set up the match bit
12520   :let mx='\(\f\+\),\s*\(\d\+\),\s*\(\d\+\)'
12521   :"get the part matching the whole expression
12522   :let l = matchstr(line, mx)
12523   :"get each item out of the match
12524   :let file = substitute(l, mx, '\1', '')
12525   :let lnum = substitute(l, mx, '\2', '')
12526   :let col = substitute(l, mx, '\3', '')
12527
12528The input is in the variable "line", the results in the variables "file",
12529"lnum" and "col". (idea from Michael Geddes)
12530
12531
12532getting the scriptnames in a Dictionary ~
12533						*scriptnames-dictionary*
12534The |:scriptnames| command can be used to get a list of all script files that
12535have been sourced.  There is no equivalent function or variable for this
12536(because it's rarely needed).  In case you need to manipulate the list this
12537code can be used: >
12538    " Get the output of ":scriptnames" in the scriptnames_output variable.
12539    let scriptnames_output = ''
12540    redir => scriptnames_output
12541    silent scriptnames
12542    redir END
12543
12544    " Split the output into lines and parse each line.	Add an entry to the
12545    " "scripts" dictionary.
12546    let scripts = {}
12547    for line in split(scriptnames_output, "\n")
12548      " Only do non-blank lines.
12549      if line =~ '\S'
12550	" Get the first number in the line.
12551	let nr = matchstr(line, '\d\+')
12552	" Get the file name, remove the script number " 123: ".
12553	let name = substitute(line, '.\+:\s*', '', '')
12554	" Add an item to the Dictionary
12555	let scripts[nr] = name
12556      endif
12557    endfor
12558    unlet scriptnames_output
12559
12560==============================================================================
1256110. No +eval feature				*no-eval-feature*
12562
12563When the |+eval| feature was disabled at compile time, none of the expression
12564evaluation commands are available.  To prevent this from causing Vim scripts
12565to generate all kinds of errors, the ":if" and ":endif" commands are still
12566recognized, though the argument of the ":if" and everything between the ":if"
12567and the matching ":endif" is ignored.  Nesting of ":if" blocks is allowed, but
12568only if the commands are at the start of the line.  The ":else" command is not
12569recognized.
12570
12571Example of how to avoid executing commands when the |+eval| feature is
12572missing: >
12573
12574	:if 1
12575	:  echo "Expression evaluation is compiled in"
12576	:else
12577	:  echo "You will _never_ see this message"
12578	:endif
12579
12580To execute a command only when the |+eval| feature is disabled requires a trick,
12581as this example shows: >
12582
12583	silent! while 0
12584	  set history=111
12585	silent! endwhile
12586
12587When the |+eval| feature is available the command is skipped because of the
12588"while 0".  Without the |+eval| feature the "while 0" is an error, which is
12589silently ignored, and the command is executed.
12590
12591==============================================================================
1259211. The sandbox					*eval-sandbox* *sandbox* *E48*
12593
12594The 'foldexpr', 'formatexpr', 'includeexpr', 'indentexpr', 'statusline' and
12595'foldtext' options may be evaluated in a sandbox.  This means that you are
12596protected from these expressions having nasty side effects.  This gives some
12597safety for when these options are set from a modeline.  It is also used when
12598the command from a tags file is executed and for CTRL-R = in the command line.
12599The sandbox is also used for the |:sandbox| command.
12600
12601These items are not allowed in the sandbox:
12602	- changing the buffer text
12603	- defining or changing mapping, autocommands, user commands
12604	- setting certain options (see |option-summary|)
12605	- setting certain v: variables (see |v:var|)  *E794*
12606	- executing a shell command
12607	- reading or writing a file
12608	- jumping to another buffer or editing a file
12609	- executing Python, Perl, etc. commands
12610This is not guaranteed 100% secure, but it should block most attacks.
12611
12612							*:san* *:sandbox*
12613:san[dbox] {cmd}	Execute {cmd} in the sandbox.  Useful to evaluate an
12614			option that may have been set from a modeline, e.g.
12615			'foldexpr'.
12616
12617							*sandbox-option*
12618A few options contain an expression.  When this expression is evaluated it may
12619have to be done in the sandbox to avoid a security risk.  But the sandbox is
12620restrictive, thus this only happens when the option was set from an insecure
12621location.  Insecure in this context are:
12622- sourcing a .vimrc or .exrc in the current directory
12623- while executing in the sandbox
12624- value coming from a modeline
12625- executing a function that was defined in the sandbox
12626
12627Note that when in the sandbox and saving an option value and restoring it, the
12628option will still be marked as it was set in the sandbox.
12629
12630==============================================================================
1263112. Textlock							*textlock*
12632
12633In a few situations it is not allowed to change the text in the buffer, jump
12634to another window and some other things that might confuse or break what Vim
12635is currently doing.  This mostly applies to things that happen when Vim is
12636actually doing something else.  For example, evaluating the 'balloonexpr' may
12637happen any moment the mouse cursor is resting at some position.
12638
12639This is not allowed when the textlock is active:
12640	- changing the buffer text
12641	- jumping to another buffer or window
12642	- editing another file
12643	- closing a window or quitting Vim
12644	- etc.
12645
12646==============================================================================
1264713. Testing							*testing*
12648
12649Vim can be tested after building it, usually with "make test".
12650The tests are located in the directory "src/testdir".
12651
12652There are several types of tests added over time:
12653	test33.in		oldest, don't add any more
12654	test_something.in	old style tests
12655	test_something.vim	new style tests
12656
12657						*new-style-testing*
12658New tests should be added as new style tests.  These use functions such as
12659|assert_equal()| to keep the test commands and the expected result in one
12660place.
12661						*old-style-testing*
12662In some cases an old style test needs to be used.  E.g. when testing Vim
12663without the |+eval| feature.
12664
12665Find more information in the file src/testdir/README.txt.
12666
12667
12668 vim:tw=78:ts=8:noet:ft=help:norl:
12669