xref: /vim-8.2.3635/runtime/doc/eval.txt (revision e16b00a1)
1*eval.txt*	For Vim version 8.0.  Last change: 2017 Aug 05
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 More about variables		|more-variables|
212.  Expression syntax		|expression-syntax|
223.  Internal variable		|internal-variables|
234.  Builtin Functions		|functions|
245.  Defining functions		|user-functions|
256.  Curly braces names		|curly-braces-names|
267.  Commands			|expression-commands|
278.  Exception handling		|exception-handling|
289.  Examples			|eval-examples|
2910. No +eval feature		|no-eval-feature|
3011. The sandbox			|eval-sandbox|
3112. Textlock			|textlock|
3213. Testing			|testing|
33
34{Vi does not have any of these commands}
35
36==============================================================================
371. Variables						*variables*
38
391.1 Variable types ~
40							*E712*
41There are nine types of variables:
42
43Number		A 32 or 64 bit signed number.  |expr-number| *Number*
44		64-bit Numbers are available only when compiled with the
45		|+num64| feature.
46		Examples:  -123  0x10  0177  0b1011
47
48Float		A floating point number. |floating-point-format| *Float*
49		{only when compiled with the |+float| feature}
50		Examples: 123.456  1.15e-6  -1.1e3
51
52							*E928*
53String		A NUL terminated string of 8-bit unsigned characters (bytes).
54		|expr-string| Examples: "ab\txx\"--"  'x-z''a,c'
55
56List		An ordered sequence of items |List|.
57		Example: [1, 2, ['a', 'b']]
58
59Dictionary	An associative, unordered array: Each entry has a key and a
60		value. |Dictionary|
61		Example: {'blue': "#0000ff", 'red': "#ff0000"}
62
63Funcref		A reference to a function |Funcref|.
64		Example: function("strlen")
65		It can be bound to a dictionary and arguments, it then works
66		like a Partial.
67		Example: function("Callback", [arg], myDict)
68
69Special		|v:false|, |v:true|, |v:none| and |v:null|.  *Special*
70
71Job		Used for a job, see |job_start()|. *Job* *Jobs*
72
73Channel		Used for a channel, see |ch_open()|. *Channel* *Channels*
74
75The Number and String types are converted automatically, depending on how they
76are used.
77
78Conversion from a Number to a String is by making the ASCII representation of
79the Number.  Examples:
80	Number 123	-->	String "123" ~
81	Number 0	-->	String "0" ~
82	Number -1	-->	String "-1" ~
83							*octal*
84Conversion from a String to a Number is done by converting the first digits to
85a number.  Hexadecimal "0xf9", Octal "017", and Binary "0b10" numbers are
86recognized.  If the String doesn't start with digits, the result is zero.
87Examples:
88	String "456"	-->	Number 456 ~
89	String "6bar"	-->	Number 6 ~
90	String "foo"	-->	Number 0 ~
91	String "0xf1"	-->	Number 241 ~
92	String "0100"	-->	Number 64 ~
93	String "0b101"	-->	Number 5 ~
94	String "-8"	-->	Number -8 ~
95	String "+8"	-->	Number 0 ~
96
97To force conversion from String to Number, add zero to it: >
98	:echo "0100" + 0
99<	64 ~
100
101To avoid a leading zero to cause octal conversion, or for using a different
102base, use |str2nr()|.
103
104							*TRUE* *FALSE*
105For boolean operators Numbers are used.  Zero is FALSE, non-zero is TRUE.
106You can also use |v:false| and |v:true|.  When TRUE is returned from a
107function it is the Number one, FALSE is the number zero.
108
109Note that in the command: >
110	:if "foo"
111	:" NOT executed
112"foo" is converted to 0, which means FALSE.  If the string starts with a
113non-zero number it means TRUE: >
114	:if "8foo"
115	:" executed
116To test for a non-empty string, use empty(): >
117	:if !empty("foo")
118<
119							*non-zero-arg*
120Function arguments often behave slightly different from |TRUE|: If the
121argument is present and it evaluates to a non-zero Number, |v:true| or a
122non-empty String, then the value is considered to be TRUE.
123Note that " " and "0" are also non-empty strings, thus cause the mode to be
124cleared.  A List, Dictionary or Float is not a Number or String, thus
125evaluates to FALSE.
126
127		*E745* *E728* *E703* *E729* *E730* *E731* *E908* *E910* *E913*
128List, Dictionary, Funcref, Job and Channel types are not automatically
129converted.
130
131							*E805* *E806* *E808*
132When mixing Number and Float the Number is converted to Float.  Otherwise
133there is no automatic conversion of Float.  You can use str2float() for String
134to Float, printf() for Float to String and float2nr() for Float to Number.
135
136			*E891* *E892* *E893* *E894* *E907* *E911* *E914*
137When expecting a Float a Number can also be used, but nothing else.
138
139						*no-type-checking*
140You will not get an error if you try to change the type of a variable.
141
142
1431.2 Function references ~
144					*Funcref* *E695* *E718*
145A Funcref variable is obtained with the |function()| function, the |funcref()|
146function or created with the lambda expression |expr-lambda|.  It can be used
147in an expression in the place of a function name, before the parenthesis
148around the arguments, to invoke the function it refers to.  Example: >
149
150	:let Fn = function("MyFunc")
151	:echo Fn()
152<							*E704* *E705* *E707*
153A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:".  You
154can use "g:" but the following name must still start with a capital.  You
155cannot have both a Funcref variable and a function with the same name.
156
157A special case is defining a function and directly assigning its Funcref to a
158Dictionary entry.  Example: >
159	:function dict.init() dict
160	:   let self.val = 0
161	:endfunction
162
163The key of the Dictionary can start with a lower case letter.  The actual
164function name is not used here.  Also see |numbered-function|.
165
166A Funcref can also be used with the |:call| command: >
167	:call Fn()
168	:call dict.init()
169
170The name of the referenced function can be obtained with |string()|. >
171	:let func = string(Fn)
172
173You can use |call()| to invoke a Funcref and use a list variable for the
174arguments: >
175	:let r = call(Fn, mylist)
176<
177								*Partial*
178A Funcref optionally binds a Dictionary and/or arguments.  This is also called
179a Partial.  This is created by passing the Dictionary and/or arguments to
180function() or funcref().  When calling the function the Dictionary and/or
181arguments will be passed to the function.  Example: >
182
183	let Cb = function('Callback', ['foo'], myDict)
184	call Cb()
185
186This will invoke the function as if using: >
187	call myDict.Callback('foo')
188
189This is very useful when passing a function around, e.g. in the arguments of
190|ch_open()|.
191
192Note that binding a function to a Dictionary also happens when the function is
193a member of the Dictionary: >
194
195	let myDict.myFunction = MyFunction
196	call myDict.myFunction()
197
198Here MyFunction() will get myDict passed as "self".  This happens when the
199"myFunction" member is accessed.  When making assigning "myFunction" to
200otherDict and calling it, it will be bound to otherDict: >
201
202	let otherDict.myFunction = myDict.myFunction
203	call otherDict.myFunction()
204
205Now "self" will be "otherDict".  But when the dictionary was bound explicitly
206this won't happen: >
207
208	let myDict.myFunction = function(MyFunction, myDict)
209	let otherDict.myFunction = myDict.myFunction
210	call otherDict.myFunction()
211
212Here "self" will be "myDict", because it was bound explicitly.
213
214
2151.3 Lists ~
216						*list* *List* *Lists* *E686*
217A List is an ordered sequence of items.  An item can be of any type.  Items
218can be accessed by their index number.  Items can be added and removed at any
219position in the sequence.
220
221
222List creation ~
223							*E696* *E697*
224A List is created with a comma separated list of items in square brackets.
225Examples: >
226	:let mylist = [1, two, 3, "four"]
227	:let emptylist = []
228
229An item can be any expression.  Using a List for an item creates a
230List of Lists: >
231	:let nestlist = [[11, 12], [21, 22], [31, 32]]
232
233An extra comma after the last item is ignored.
234
235
236List index ~
237							*list-index* *E684*
238An item in the List can be accessed by putting the index in square brackets
239after the List.  Indexes are zero-based, thus the first item has index zero. >
240	:let item = mylist[0]		" get the first item: 1
241	:let item = mylist[2]		" get the third item: 3
242
243When the resulting item is a list this can be repeated: >
244	:let item = nestlist[0][1]	" get the first list, second item: 12
245<
246A negative index is counted from the end.  Index -1 refers to the last item in
247the List, -2 to the last but one item, etc. >
248	:let last = mylist[-1]		" get the last item: "four"
249
250To avoid an error for an invalid index use the |get()| function.  When an item
251is not available it returns zero or the default value you specify: >
252	:echo get(mylist, idx)
253	:echo get(mylist, idx, "NONE")
254
255
256List concatenation ~
257
258Two lists can be concatenated with the "+" operator: >
259	:let longlist = mylist + [5, 6]
260	:let mylist += [7, 8]
261
262To prepend or append an item turn the item into a list by putting [] around
263it.  To change a list in-place see |list-modification| below.
264
265
266Sublist ~
267							*sublist*
268A part of the List can be obtained by specifying the first and last index,
269separated by a colon in square brackets: >
270	:let shortlist = mylist[2:-1]	" get List [3, "four"]
271
272Omitting the first index is similar to zero.  Omitting the last index is
273similar to -1. >
274	:let endlist = mylist[2:]	" from item 2 to the end: [3, "four"]
275	:let shortlist = mylist[2:2]	" List with one item: [3]
276	:let otherlist = mylist[:]	" make a copy of the List
277
278If the first index is beyond the last item of the List or the second item is
279before the first item, the result is an empty list.  There is no error
280message.
281
282If the second index is equal to or greater than the length of the list the
283length minus one is used: >
284	:let mylist = [0, 1, 2, 3]
285	:echo mylist[2:8]		" result: [2, 3]
286
287NOTE: mylist[s:e] means using the variable "s:e" as index.  Watch out for
288using a single letter variable before the ":".  Insert a space when needed:
289mylist[s : e].
290
291
292List identity ~
293							*list-identity*
294When variable "aa" is a list and you assign it to another variable "bb", both
295variables refer to the same list.  Thus changing the list "aa" will also
296change "bb": >
297	:let aa = [1, 2, 3]
298	:let bb = aa
299	:call add(aa, 4)
300	:echo bb
301<	[1, 2, 3, 4]
302
303Making a copy of a list is done with the |copy()| function.  Using [:] also
304works, as explained above.  This creates a shallow copy of the list: Changing
305a list item in the list will also change the item in the copied list: >
306	:let aa = [[1, 'a'], 2, 3]
307	:let bb = copy(aa)
308	:call add(aa, 4)
309	:let aa[0][1] = 'aaa'
310	:echo aa
311<	[[1, aaa], 2, 3, 4] >
312	:echo bb
313<	[[1, aaa], 2, 3]
314
315To make a completely independent list use |deepcopy()|.  This also makes a
316copy of the values in the list, recursively.  Up to a hundred levels deep.
317
318The operator "is" can be used to check if two variables refer to the same
319List.  "isnot" does the opposite.  In contrast "==" compares if two lists have
320the same value. >
321	:let alist = [1, 2, 3]
322	:let blist = [1, 2, 3]
323	:echo alist is blist
324<	0 >
325	:echo alist == blist
326<	1
327
328Note about comparing lists: Two lists are considered equal if they have the
329same length and all items compare equal, as with using "==".  There is one
330exception: When comparing a number with a string they are considered
331different.  There is no automatic type conversion, as with using "==" on
332variables.  Example: >
333	echo 4 == "4"
334<	1 >
335	echo [4] == ["4"]
336<	0
337
338Thus comparing Lists is more strict than comparing numbers and strings.  You
339can compare simple values this way too by putting them in a list: >
340
341	:let a = 5
342	:let b = "5"
343	:echo a == b
344<	1 >
345	:echo [a] == [b]
346<	0
347
348
349List unpack ~
350
351To unpack the items in a list to individual variables, put the variables in
352square brackets, like list items: >
353	:let [var1, var2] = mylist
354
355When the number of variables does not match the number of items in the list
356this produces an error.  To handle any extra items from the list append ";"
357and a variable name: >
358	:let [var1, var2; rest] = mylist
359
360This works like: >
361	:let var1 = mylist[0]
362	:let var2 = mylist[1]
363	:let rest = mylist[2:]
364
365Except that there is no error if there are only two items.  "rest" will be an
366empty list then.
367
368
369List modification ~
370							*list-modification*
371To change a specific item of a list use |:let| this way: >
372	:let list[4] = "four"
373	:let listlist[0][3] = item
374
375To change part of a list you can specify the first and last item to be
376modified.  The value must at least have the number of items in the range: >
377	:let list[3:5] = [3, 4, 5]
378
379Adding and removing items from a list is done with functions.  Here are a few
380examples: >
381	:call insert(list, 'a')		" prepend item 'a'
382	:call insert(list, 'a', 3)	" insert item 'a' before list[3]
383	:call add(list, "new")		" append String item
384	:call add(list, [1, 2])		" append a List as one new item
385	:call extend(list, [1, 2])	" extend the list with two more items
386	:let i = remove(list, 3)	" remove item 3
387	:unlet list[3]			" idem
388	:let l = remove(list, 3, -1)	" remove items 3 to last item
389	:unlet list[3 : ]		" idem
390	:call filter(list, 'v:val !~ "x"')  " remove items with an 'x'
391
392Changing the order of items in a list: >
393	:call sort(list)		" sort a list alphabetically
394	:call reverse(list)		" reverse the order of items
395	:call uniq(sort(list))		" sort and remove duplicates
396
397
398For loop ~
399
400The |:for| loop executes commands for each item in a list.  A variable is set
401to each item in the list in sequence.  Example: >
402	:for item in mylist
403	:   call Doit(item)
404	:endfor
405
406This works like: >
407	:let index = 0
408	:while index < len(mylist)
409	:   let item = mylist[index]
410	:   :call Doit(item)
411	:   let index = index + 1
412	:endwhile
413
414If all you want to do is modify each item in the list then the |map()|
415function will be a simpler method than a for loop.
416
417Just like the |:let| command, |:for| also accepts a list of variables.  This
418requires the argument to be a list of lists. >
419	:for [lnum, col] in [[1, 3], [2, 8], [3, 0]]
420	:   call Doit(lnum, col)
421	:endfor
422
423This works like a |:let| command is done for each list item.  Again, the types
424must remain the same to avoid an error.
425
426It is also possible to put remaining items in a List variable: >
427	:for [i, j; rest] in listlist
428	:   call Doit(i, j)
429	:   if !empty(rest)
430	:      echo "remainder: " . string(rest)
431	:   endif
432	:endfor
433
434
435List functions ~
436						*E714*
437Functions that are useful with a List: >
438	:let r = call(funcname, list)	" call a function with an argument list
439	:if empty(list)			" check if list is empty
440	:let l = len(list)		" number of items in list
441	:let big = max(list)		" maximum value in list
442	:let small = min(list)		" minimum value in list
443	:let xs = count(list, 'x')	" count nr of times 'x' appears in list
444	:let i = index(list, 'x')	" index of first 'x' in list
445	:let lines = getline(1, 10)	" get ten text lines from buffer
446	:call append('$', lines)	" append text lines in buffer
447	:let list = split("a b c")	" create list from items in a string
448	:let string = join(list, ', ')	" create string from list items
449	:let s = string(list)		" String representation of list
450	:call map(list, '">> " . v:val')  " prepend ">> " to each item
451
452Don't forget that a combination of features can make things simple.  For
453example, to add up all the numbers in a list: >
454	:exe 'let sum = ' . join(nrlist, '+')
455
456
4571.4 Dictionaries ~
458					*dict* *Dictionaries* *Dictionary*
459A Dictionary is an associative array: Each entry has a key and a value.  The
460entry can be located with the key.  The entries are stored without a specific
461ordering.
462
463
464Dictionary creation ~
465						*E720* *E721* *E722* *E723*
466A Dictionary is created with a comma separated list of entries in curly
467braces.  Each entry has a key and a value, separated by a colon.  Each key can
468only appear once.  Examples: >
469	:let mydict = {1: 'one', 2: 'two', 3: 'three'}
470	:let emptydict = {}
471<							*E713* *E716* *E717*
472A key is always a String.  You can use a Number, it will be converted to a
473String automatically.  Thus the String '4' and the number 4 will find the same
474entry.  Note that the String '04' and the Number 04 are different, since the
475Number will be converted to the String '4'.  The empty string can be used as a
476key.
477
478A value can be any expression.  Using a Dictionary for a value creates a
479nested Dictionary: >
480	:let nestdict = {1: {11: 'a', 12: 'b'}, 2: {21: 'c'}}
481
482An extra comma after the last entry is ignored.
483
484
485Accessing entries ~
486
487The normal way to access an entry is by putting the key in square brackets: >
488	:let val = mydict["one"]
489	:let mydict["four"] = 4
490
491You can add new entries to an existing Dictionary this way, unlike Lists.
492
493For keys that consist entirely of letters, digits and underscore the following
494form can be used |expr-entry|: >
495	:let val = mydict.one
496	:let mydict.four = 4
497
498Since an entry can be any type, also a List and a Dictionary, the indexing and
499key lookup can be repeated: >
500	:echo dict.key[idx].key
501
502
503Dictionary to List conversion ~
504
505You may want to loop over the entries in a dictionary.  For this you need to
506turn the Dictionary into a List and pass it to |:for|.
507
508Most often you want to loop over the keys, using the |keys()| function: >
509	:for key in keys(mydict)
510	:   echo key . ': ' . mydict[key]
511	:endfor
512
513The List of keys is unsorted.  You may want to sort them first: >
514	:for key in sort(keys(mydict))
515
516To loop over the values use the |values()| function:  >
517	:for v in values(mydict)
518	:   echo "value: " . v
519	:endfor
520
521If you want both the key and the value use the |items()| function.  It returns
522a List in which each item is a	List with two items, the key and the value: >
523	:for [key, value] in items(mydict)
524	:   echo key . ': ' . value
525	:endfor
526
527
528Dictionary identity ~
529							*dict-identity*
530Just like Lists you need to use |copy()| and |deepcopy()| to make a copy of a
531Dictionary.  Otherwise, assignment results in referring to the same
532Dictionary: >
533	:let onedict = {'a': 1, 'b': 2}
534	:let adict = onedict
535	:let adict['a'] = 11
536	:echo onedict['a']
537	11
538
539Two Dictionaries compare equal if all the key-value pairs compare equal.  For
540more info see |list-identity|.
541
542
543Dictionary modification ~
544							*dict-modification*
545To change an already existing entry of a Dictionary, or to add a new entry,
546use |:let| this way: >
547	:let dict[4] = "four"
548	:let dict['one'] = item
549
550Removing an entry from a Dictionary is done with |remove()| or |:unlet|.
551Three ways to remove the entry with key "aaa" from dict: >
552	:let i = remove(dict, 'aaa')
553	:unlet dict.aaa
554	:unlet dict['aaa']
555
556Merging a Dictionary with another is done with |extend()|: >
557	:call extend(adict, bdict)
558This extends adict with all entries from bdict.  Duplicate keys cause entries
559in adict to be overwritten.  An optional third argument can change this.
560Note that the order of entries in a Dictionary is irrelevant, thus don't
561expect ":echo adict" to show the items from bdict after the older entries in
562adict.
563
564Weeding out entries from a Dictionary can be done with |filter()|: >
565	:call filter(dict, 'v:val =~ "x"')
566This removes all entries from "dict" with a value not matching 'x'.
567
568
569Dictionary function ~
570				*Dictionary-function* *self* *E725* *E862*
571When a function is defined with the "dict" attribute it can be used in a
572special way with a dictionary.  Example: >
573	:function Mylen() dict
574	:   return len(self.data)
575	:endfunction
576	:let mydict = {'data': [0, 1, 2, 3], 'len': function("Mylen")}
577	:echo mydict.len()
578
579This is like a method in object oriented programming.  The entry in the
580Dictionary is a |Funcref|.  The local variable "self" refers to the dictionary
581the function was invoked from.
582
583It is also possible to add a function without the "dict" attribute as a
584Funcref to a Dictionary, but the "self" variable is not available then.
585
586				*numbered-function* *anonymous-function*
587To avoid the extra name for the function it can be defined and directly
588assigned to a Dictionary in this way: >
589	:let mydict = {'data': [0, 1, 2, 3]}
590	:function mydict.len()
591	:   return len(self.data)
592	:endfunction
593	:echo mydict.len()
594
595The function will then get a number and the value of dict.len is a |Funcref|
596that references this function.  The function can only be used through a
597|Funcref|.  It will automatically be deleted when there is no |Funcref|
598remaining that refers to it.
599
600It is not necessary to use the "dict" attribute for a numbered function.
601
602If you get an error for a numbered function, you can find out what it is with
603a trick.  Assuming the function is 42, the command is: >
604	:function {42}
605
606
607Functions for Dictionaries ~
608							*E715*
609Functions that can be used with a Dictionary: >
610	:if has_key(dict, 'foo')	" TRUE if dict has entry with key "foo"
611	:if empty(dict)			" TRUE if dict is empty
612	:let l = len(dict)		" number of items in dict
613	:let big = max(dict)		" maximum value in dict
614	:let small = min(dict)		" minimum value in dict
615	:let xs = count(dict, 'x')	" count nr of times 'x' appears in dict
616	:let s = string(dict)		" String representation of dict
617	:call map(dict, '">> " . v:val')  " prepend ">> " to each item
618
619
6201.5 More about variables ~
621							*more-variables*
622If you need to know the type of a variable or expression, use the |type()|
623function.
624
625When the '!' flag is included in the 'viminfo' option, global variables that
626start with an uppercase letter, and don't contain a lowercase letter, are
627stored in the viminfo file |viminfo-file|.
628
629When the 'sessionoptions' option contains "global", global variables that
630start with an uppercase letter and contain at least one lowercase letter are
631stored in the session file |session-file|.
632
633variable name		can be stored where ~
634my_var_6		not
635My_Var_6		session file
636MY_VAR_6		viminfo file
637
638
639It's possible to form a variable name with curly braces, see
640|curly-braces-names|.
641
642==============================================================================
6432. Expression syntax					*expression-syntax*
644
645Expression syntax summary, from least to most significant:
646
647|expr1|	expr2
648	expr2 ? expr1 : expr1	if-then-else
649
650|expr2|	expr3
651	expr3 || expr3 ..	logical OR
652
653|expr3|	expr4
654	expr4 && expr4 ..	logical AND
655
656|expr4|	expr5
657	expr5 == expr5		equal
658	expr5 != expr5		not equal
659	expr5 >	 expr5		greater than
660	expr5 >= expr5		greater than or equal
661	expr5 <	 expr5		smaller than
662	expr5 <= expr5		smaller than or equal
663	expr5 =~ expr5		regexp matches
664	expr5 !~ expr5		regexp doesn't match
665
666	expr5 ==? expr5		equal, ignoring case
667	expr5 ==# expr5		equal, match case
668	etc.			As above, append ? for ignoring case, # for
669				matching case
670
671	expr5 is expr5		same |List| instance
672	expr5 isnot expr5	different |List| instance
673
674|expr5|	expr6
675	expr6 +	 expr6 ..	number addition or list concatenation
676	expr6 -	 expr6 ..	number subtraction
677	expr6 .	 expr6 ..	string concatenation
678
679|expr6|	expr7
680	expr7 *	 expr7 ..	number multiplication
681	expr7 /	 expr7 ..	number division
682	expr7 %	 expr7 ..	number modulo
683
684|expr7|	expr8
685	! expr7			logical NOT
686	- expr7			unary minus
687	+ expr7			unary plus
688
689|expr8|	expr9
690	expr8[expr1]		byte of a String or item of a |List|
691	expr8[expr1 : expr1]	substring of a String or sublist of a |List|
692	expr8.name		entry in a |Dictionary|
693	expr8(expr1, ...)	function call with |Funcref| variable
694
695|expr9|	number			number constant
696	"string"		string constant, backslash is special
697	'string'		string constant, ' is doubled
698	[expr1, ...]		|List|
699	{expr1: expr1, ...}	|Dictionary|
700	&option			option value
701	(expr1)			nested expression
702	variable		internal variable
703	va{ria}ble		internal variable with curly braces
704	$VAR			environment variable
705	@r			contents of register 'r'
706	function(expr1, ...)	function call
707	func{ti}on(expr1, ...)	function call with curly braces
708	{args -> expr1}		lambda expression
709
710
711".." indicates that the operations in this level can be concatenated.
712Example: >
713	&nu || &list && &shell == "csh"
714
715All expressions within one level are parsed from left to right.
716
717
718expr1							*expr1* *E109*
719-----
720
721expr2 ? expr1 : expr1
722
723The expression before the '?' is evaluated to a number.  If it evaluates to
724|TRUE|, the result is the value of the expression between the '?' and ':',
725otherwise the result is the value of the expression after the ':'.
726Example: >
727	:echo lnum == 1 ? "top" : lnum
728
729Since the first expression is an "expr2", it cannot contain another ?:.  The
730other two expressions can, thus allow for recursive use of ?:.
731Example: >
732	:echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum
733
734To keep this readable, using |line-continuation| is suggested: >
735	:echo lnum == 1
736	:\	? "top"
737	:\	: lnum == 1000
738	:\		? "last"
739	:\		: lnum
740
741You should always put a space before the ':', otherwise it can be mistaken for
742use in a variable such as "a:1".
743
744
745expr2 and expr3						*expr2* *expr3*
746---------------
747
748expr3 || expr3 ..	logical OR		*expr-barbar*
749expr4 && expr4 ..	logical AND		*expr-&&*
750
751The "||" and "&&" operators take one argument on each side.  The arguments
752are (converted to) Numbers.  The result is:
753
754    input			 output ~
755n1	n2		n1 || n2	n1 && n2 ~
756|FALSE|	|FALSE|		|FALSE|		|FALSE|
757|FALSE|	|TRUE|		|TRUE|		|FALSE|
758|TRUE|	|FALSE|		|TRUE|		|FALSE|
759|TRUE|	|TRUE|		|TRUE|		|TRUE|
760
761The operators can be concatenated, for example: >
762
763	&nu || &list && &shell == "csh"
764
765Note that "&&" takes precedence over "||", so this has the meaning of: >
766
767	&nu || (&list && &shell == "csh")
768
769Once the result is known, the expression "short-circuits", that is, further
770arguments are not evaluated.  This is like what happens in C.  For example: >
771
772	let a = 1
773	echo a || b
774
775This is valid even if there is no variable called "b" because "a" is |TRUE|,
776so the result must be |TRUE|.  Similarly below: >
777
778	echo exists("b") && b == "yes"
779
780This is valid whether "b" has been defined or not.  The second clause will
781only be evaluated if "b" has been defined.
782
783
784expr4							*expr4*
785-----
786
787expr5 {cmp} expr5
788
789Compare two expr5 expressions, resulting in a 0 if it evaluates to false, or 1
790if it evaluates to true.
791
792			*expr-==*  *expr-!=*  *expr->*	 *expr->=*
793			*expr-<*   *expr-<=*  *expr-=~*  *expr-!~*
794			*expr-==#* *expr-!=#* *expr->#*  *expr->=#*
795			*expr-<#*  *expr-<=#* *expr-=~#* *expr-!~#*
796			*expr-==?* *expr-!=?* *expr->?*  *expr->=?*
797			*expr-<?*  *expr-<=?* *expr-=~?* *expr-!~?*
798			*expr-is* *expr-isnot* *expr-is#* *expr-isnot#*
799			*expr-is?* *expr-isnot?*
800		use 'ignorecase'    match case	   ignore case ~
801equal			==		==#		==?
802not equal		!=		!=#		!=?
803greater than		>		>#		>?
804greater than or equal	>=		>=#		>=?
805smaller than		<		<#		<?
806smaller than or equal	<=		<=#		<=?
807regexp matches		=~		=~#		=~?
808regexp doesn't match	!~		!~#		!~?
809same instance		is		is#		is?
810different instance	isnot		isnot#		isnot?
811
812Examples:
813"abc" ==# "Abc"	  evaluates to 0
814"abc" ==? "Abc"	  evaluates to 1
815"abc" == "Abc"	  evaluates to 1 if 'ignorecase' is set, 0 otherwise
816
817							*E691* *E692*
818A |List| can only be compared with a |List| and only "equal", "not equal" and
819"is" can be used.  This compares the values of the list, recursively.
820Ignoring case means case is ignored when comparing item values.
821
822							*E735* *E736*
823A |Dictionary| can only be compared with a |Dictionary| and only "equal", "not
824equal" and "is" can be used.  This compares the key/values of the |Dictionary|
825recursively.  Ignoring case means case is ignored when comparing item values.
826
827							*E694*
828A |Funcref| can only be compared with a |Funcref| and only "equal", "not
829equal", "is" and "isnot" can be used.  Case is never ignored.  Whether
830arguments or a Dictionary are bound (with a partial) matters.  The
831Dictionaries must also be equal (or the same, in case of "is") and the
832arguments must be equal (or the same).
833
834To compare Funcrefs to see if they refer to the same function, ignoring bound
835Dictionary and arguments, use |get()| to get the function name: >
836	if get(Part1, 'name') == get(Part2, 'name')
837	   " Part1 and Part2 refer to the same function
838
839When using "is" or "isnot" with a |List| or a |Dictionary| this checks if the
840expressions are referring to the same |List| or |Dictionary| instance.  A copy
841of a |List| is different from the original |List|.  When using "is" without
842a |List| or a |Dictionary| it is equivalent to using "equal", using "isnot"
843equivalent to using "not equal".  Except that a different type means the
844values are different: >
845	echo 4 == '4'
846	1
847	echo 4 is '4'
848	0
849	echo 0 is []
850	0
851"is#"/"isnot#" and "is?"/"isnot?" can be used to match and ignore case.
852
853When comparing a String with a Number, the String is converted to a Number,
854and the comparison is done on Numbers.  This means that: >
855	echo 0 == 'x'
856	1
857because 'x' converted to a Number is zero.  However: >
858	echo [0] == ['x']
859	0
860Inside a List or Dictionary this conversion is not used.
861
862When comparing two Strings, this is done with strcmp() or stricmp().  This
863results in the mathematical difference (comparing byte values), not
864necessarily the alphabetical difference in the local language.
865
866When using the operators with a trailing '#', or the short version and
867'ignorecase' is off, the comparing is done with strcmp(): case matters.
868
869When using the operators with a trailing '?', or the short version and
870'ignorecase' is set, the comparing is done with stricmp(): case is ignored.
871
872'smartcase' is not used.
873
874The "=~" and "!~" operators match the lefthand argument with the righthand
875argument, which is used as a pattern.  See |pattern| for what a pattern is.
876This matching is always done like 'magic' was set and 'cpoptions' is empty, no
877matter what the actual value of 'magic' or 'cpoptions' is.  This makes scripts
878portable.  To avoid backslashes in the regexp pattern to be doubled, use a
879single-quote string, see |literal-string|.
880Since a string is considered to be a single line, a multi-line pattern
881(containing \n, backslash-n) will not match.  However, a literal NL character
882can be matched like an ordinary character.  Examples:
883	"foo\nbar" =~ "\n"	evaluates to 1
884	"foo\nbar" =~ "\\n"	evaluates to 0
885
886
887expr5 and expr6						*expr5* *expr6*
888---------------
889expr6 +	 expr6 ..	Number addition or |List| concatenation	*expr-+*
890expr6 -	 expr6 ..	Number subtraction			*expr--*
891expr6 .	 expr6 ..	String concatenation			*expr-.*
892
893For |Lists| only "+" is possible and then both expr6 must be a list.  The
894result is a new list with the two lists Concatenated.
895
896expr7 *	 expr7 ..	Number multiplication			*expr-star*
897expr7 /	 expr7 ..	Number division				*expr-/*
898expr7 %	 expr7 ..	Number modulo				*expr-%*
899
900For all, except ".", Strings are converted to Numbers.
901For bitwise operators see |and()|, |or()| and |xor()|.
902
903Note the difference between "+" and ".":
904	"123" + "456" = 579
905	"123" . "456" = "123456"
906
907Since '.' has the same precedence as '+' and '-', you need to read: >
908	1 . 90 + 90.0
909As: >
910	(1 . 90) + 90.0
911That works, since the String "190" is automatically converted to the Number
912190, which can be added to the Float 90.0.  However: >
913	1 . 90 * 90.0
914Should be read as: >
915	1 . (90 * 90.0)
916Since '.' has lower precedence than '*'.  This does NOT work, since this
917attempts to concatenate a Float and a String.
918
919When dividing a Number by zero the result depends on the value:
920	  0 / 0  = -0x80000000	(like NaN for Float)
921	 >0 / 0  =  0x7fffffff	(like positive infinity)
922	 <0 / 0  = -0x7fffffff	(like negative infinity)
923	(before Vim 7.2 it was always 0x7fffffff)
924
925When 64-bit Number support is enabled:
926	  0 / 0  = -0x8000000000000000	(like NaN for Float)
927	 >0 / 0  =  0x7fffffffffffffff	(like positive infinity)
928	 <0 / 0  = -0x7fffffffffffffff	(like negative infinity)
929
930When the righthand side of '%' is zero, the result is 0.
931
932None of these work for |Funcref|s.
933
934. and % do not work for Float. *E804*
935
936
937expr7							*expr7*
938-----
939! expr7			logical NOT		*expr-!*
940- expr7			unary minus		*expr-unary--*
941+ expr7			unary plus		*expr-unary-+*
942
943For '!' |TRUE| becomes |FALSE|, |FALSE| becomes |TRUE| (one).
944For '-' the sign of the number is changed.
945For '+' the number is unchanged.
946
947A String will be converted to a Number first.
948
949These three can be repeated and mixed.  Examples:
950	!-1	    == 0
951	!!8	    == 1
952	--9	    == 9
953
954
955expr8							*expr8*
956-----
957expr8[expr1]		item of String or |List|	*expr-[]* *E111*
958							*E909* *subscript*
959If expr8 is a Number or String this results in a String that contains the
960expr1'th single byte from expr8.  expr8 is used as a String, expr1 as a
961Number.  This doesn't recognize multi-byte encodings, see `byteidx()` for
962an alternative, or use `split()` to turn the string into a list of characters.
963
964Index zero gives the first byte.  This is like it works in C.  Careful:
965text column numbers start with one!  Example, to get the byte under the
966cursor: >
967	:let c = getline(".")[col(".") - 1]
968
969If the length of the String is less than the index, the result is an empty
970String.  A negative index always results in an empty string (reason: backward
971compatibility).  Use [-1:] to get the last byte.
972
973If expr8 is a |List| then it results the item at index expr1.  See |list-index|
974for possible index values.  If the index is out of range this results in an
975error.  Example: >
976	:let item = mylist[-1]		" get last item
977
978Generally, if a |List| index is equal to or higher than the length of the
979|List|, or more negative than the length of the |List|, this results in an
980error.
981
982
983expr8[expr1a : expr1b]	substring or sublist		*expr-[:]*
984
985If expr8 is a Number or String this results in the substring with the bytes
986from expr1a to and including expr1b.  expr8 is used as a String, expr1a and
987expr1b are used as a Number.  This doesn't recognize multi-byte encodings, see
988|byteidx()| for computing the indexes.
989
990If expr1a is omitted zero is used.  If expr1b is omitted the length of the
991string minus one is used.
992
993A negative number can be used to measure from the end of the string.  -1 is
994the last character, -2 the last but one, etc.
995
996If an index goes out of range for the string characters are omitted.  If
997expr1b is smaller than expr1a the result is an empty string.
998
999Examples: >
1000	:let c = name[-1:]		" last byte of a string
1001	:let c = name[-2:-2]		" last but one byte of a string
1002	:let s = line(".")[4:]		" from the fifth byte to the end
1003	:let s = s[:-3]			" remove last two bytes
1004<
1005							*slice*
1006If expr8 is a |List| this results in a new |List| with the items indicated by
1007the indexes expr1a and expr1b.  This works like with a String, as explained
1008just above. Also see |sublist| below.  Examples: >
1009	:let l = mylist[:3]		" first four items
1010	:let l = mylist[4:4]		" List with one item
1011	:let l = mylist[:]		" shallow copy of a List
1012
1013Using expr8[expr1] or expr8[expr1a : expr1b] on a |Funcref| results in an
1014error.
1015
1016Watch out for confusion between a namespace and a variable followed by a colon
1017for a sublist: >
1018	mylist[n:]     " uses variable n
1019	mylist[s:]     " uses namespace s:, error!
1020
1021
1022expr8.name		entry in a |Dictionary|		*expr-entry*
1023
1024If expr8 is a |Dictionary| and it is followed by a dot, then the following
1025name will be used as a key in the |Dictionary|.  This is just like:
1026expr8[name].
1027
1028The name must consist of alphanumeric characters, just like a variable name,
1029but it may start with a number.  Curly braces cannot be used.
1030
1031There must not be white space before or after the dot.
1032
1033Examples: >
1034	:let dict = {"one": 1, 2: "two"}
1035	:echo dict.one
1036	:echo dict .2
1037
1038Note that the dot is also used for String concatenation.  To avoid confusion
1039always put spaces around the dot for String concatenation.
1040
1041
1042expr8(expr1, ...)	|Funcref| function call
1043
1044When expr8 is a |Funcref| type variable, invoke the function it refers to.
1045
1046
1047
1048							*expr9*
1049number
1050------
1051number			number constant			*expr-number*
1052				*hex-number* *octal-number* *binary-number*
1053
1054Decimal, Hexadecimal (starting with 0x or 0X), Binary (starting with 0b or 0B)
1055and Octal (starting with 0).
1056
1057						*floating-point-format*
1058Floating point numbers can be written in two forms:
1059
1060	[-+]{N}.{M}
1061	[-+]{N}.{M}[eE][-+]{exp}
1062
1063{N} and {M} are numbers.  Both {N} and {M} must be present and can only
1064contain digits.
1065[-+] means there is an optional plus or minus sign.
1066{exp} is the exponent, power of 10.
1067Only a decimal point is accepted, not a comma.  No matter what the current
1068locale is.
1069{only when compiled with the |+float| feature}
1070
1071Examples:
1072	123.456
1073	+0.0001
1074	55.0
1075	-0.123
1076	1.234e03
1077	1.0E-6
1078	-3.1416e+88
1079
1080These are INVALID:
1081	3.		empty {M}
1082	1e40		missing .{M}
1083
1084							*float-pi* *float-e*
1085A few useful values to copy&paste: >
1086	:let pi = 3.14159265359
1087	:let e  = 2.71828182846
1088
1089Rationale:
1090Before floating point was introduced, the text "123.456" was interpreted as
1091the two numbers "123" and "456", both converted to a string and concatenated,
1092resulting in the string "123456".  Since this was considered pointless, and we
1093could not find it intentionally being used in Vim scripts, this backwards
1094incompatibility was accepted in favor of being able to use the normal notation
1095for floating point numbers.
1096
1097						*floating-point-precision*
1098The precision and range of floating points numbers depends on what "double"
1099means in the library Vim was compiled with.  There is no way to change this at
1100runtime.
1101
1102The default for displaying a |Float| is to use 6 decimal places, like using
1103printf("%g", f).  You can select something else when using the |printf()|
1104function.  Example: >
1105	:echo printf('%.15e', atan(1))
1106<	7.853981633974483e-01
1107
1108
1109
1110string					*string* *String* *expr-string* *E114*
1111------
1112"string"		string constant		*expr-quote*
1113
1114Note that double quotes are used.
1115
1116A string constant accepts these special characters:
1117\...	three-digit octal number (e.g., "\316")
1118\..	two-digit octal number (must be followed by non-digit)
1119\.	one-digit octal number (must be followed by non-digit)
1120\x..	byte specified with two hex numbers (e.g., "\x1f")
1121\x.	byte specified with one hex number (must be followed by non-hex char)
1122\X..	same as \x..
1123\X.	same as \x.
1124\u....	character specified with up to 4 hex numbers, stored according to the
1125	current value of 'encoding' (e.g., "\u02a4")
1126\U....	same as \u but allows up to 8 hex numbers.
1127\b	backspace <BS>
1128\e	escape <Esc>
1129\f	formfeed <FF>
1130\n	newline <NL>
1131\r	return <CR>
1132\t	tab <Tab>
1133\\	backslash
1134\"	double quote
1135\<xxx>	Special key named "xxx".  e.g. "\<C-W>" for CTRL-W.  This is for use
1136	in mappings, the 0x80 byte is escaped.
1137	To use the double quote character it must be escaped: "<M-\">".
1138	Don't use <Char-xxxx> to get a utf-8 character, use \uxxxx as
1139	mentioned above.
1140
1141Note that "\xff" is stored as the byte 255, which may be invalid in some
1142encodings.  Use "\u00ff" to store character 255 according to the current value
1143of 'encoding'.
1144
1145Note that "\000" and "\x00" force the end of the string.
1146
1147
1148literal-string						*literal-string* *E115*
1149---------------
1150'string'		string constant			*expr-'*
1151
1152Note that single quotes are used.
1153
1154This string is taken as it is.  No backslashes are removed or have a special
1155meaning.  The only exception is that two quotes stand for one quote.
1156
1157Single quoted strings are useful for patterns, so that backslashes do not need
1158to be doubled.  These two commands are equivalent: >
1159	if a =~ "\\s*"
1160	if a =~ '\s*'
1161
1162
1163option						*expr-option* *E112* *E113*
1164------
1165&option			option value, local value if possible
1166&g:option		global option value
1167&l:option		local option value
1168
1169Examples: >
1170	echo "tabstop is " . &tabstop
1171	if &insertmode
1172
1173Any option name can be used here.  See |options|.  When using the local value
1174and there is no buffer-local or window-local value, the global value is used
1175anyway.
1176
1177
1178register						*expr-register* *@r*
1179--------
1180@r			contents of register 'r'
1181
1182The result is the contents of the named register, as a single string.
1183Newlines are inserted where required.  To get the contents of the unnamed
1184register use @" or @@.  See |registers| for an explanation of the available
1185registers.
1186
1187When using the '=' register you get the expression itself, not what it
1188evaluates to.  Use |eval()| to evaluate it.
1189
1190
1191nesting							*expr-nesting* *E110*
1192-------
1193(expr1)			nested expression
1194
1195
1196environment variable					*expr-env*
1197--------------------
1198$VAR			environment variable
1199
1200The String value of any environment variable.  When it is not defined, the
1201result is an empty string.
1202						*expr-env-expand*
1203Note that there is a difference between using $VAR directly and using
1204expand("$VAR").  Using it directly will only expand environment variables that
1205are known inside the current Vim session.  Using expand() will first try using
1206the environment variables known inside the current Vim session.  If that
1207fails, a shell will be used to expand the variable.  This can be slow, but it
1208does expand all variables that the shell knows about.  Example: >
1209	:echo $shell
1210	:echo expand("$shell")
1211The first one probably doesn't echo anything, the second echoes the $shell
1212variable (if your shell supports it).
1213
1214
1215internal variable					*expr-variable*
1216-----------------
1217variable		internal variable
1218See below |internal-variables|.
1219
1220
1221function call		*expr-function* *E116* *E118* *E119* *E120*
1222-------------
1223function(expr1, ...)	function call
1224See below |functions|.
1225
1226
1227lambda expression				*expr-lambda* *lambda*
1228-----------------
1229{args -> expr1}		lambda expression
1230
1231A lambda expression creates a new unnamed function which returns the result of
1232evaluating |expr1|.  Lambda expressions differ from |user-functions| in
1233the following ways:
1234
12351. The body of the lambda expression is an |expr1| and not a sequence of |Ex|
1236   commands.
12372. The prefix "a:" should not be used for arguments.  E.g.: >
1238	:let F = {arg1, arg2 -> arg1 - arg2}
1239	:echo F(5, 2)
1240<	3
1241
1242The arguments are optional.  Example: >
1243	:let F = {-> 'error function'}
1244	:echo F()
1245<	error function
1246							*closure*
1247Lambda expressions can access outer scope variables and arguments.  This is
1248often called a closure.  Example where "i" and "a:arg" are used in a lambda
1249while they exist in the function scope.  They remain valid even after the
1250function returns: >
1251	:function Foo(arg)
1252	:  let i = 3
1253	:  return {x -> x + i - a:arg}
1254	:endfunction
1255	:let Bar = Foo(4)
1256	:echo Bar(6)
1257<	5
1258
1259See also |:func-closure|.  Lambda and closure support can be checked with: >
1260	if has('lambda')
1261
1262Examples for using a lambda expression with |sort()|, |map()| and |filter()|: >
1263	:echo map([1, 2, 3], {idx, val -> val + 1})
1264<	[2, 3, 4] >
1265	:echo sort([3,7,2,1,4], {a, b -> a - b})
1266<	[1, 2, 3, 4, 7]
1267
1268The lambda expression is also useful for Channel, Job and timer: >
1269	:let timer = timer_start(500,
1270			\ {-> execute("echo 'Handler called'", "")},
1271			\ {'repeat': 3})
1272<	Handler called
1273	Handler called
1274	Handler called
1275
1276Note how execute() is used to execute an Ex command.  That's ugly though.
1277
1278
1279Lambda expressions have internal names like '<lambda>42'.  If you get an error
1280for a lambda expression, you can find what it is with the following command: >
1281	:function {'<lambda>42'}
1282See also: |numbered-function|
1283
1284==============================================================================
12853. Internal variable				*internal-variables* *E461*
1286
1287An internal variable name can be made up of letters, digits and '_'.  But it
1288cannot start with a digit.  It's also possible to use curly braces, see
1289|curly-braces-names|.
1290
1291An internal variable is created with the ":let" command |:let|.
1292An internal variable is explicitly destroyed with the ":unlet" command
1293|:unlet|.
1294Using a name that is not an internal variable or refers to a variable that has
1295been destroyed results in an error.
1296
1297There are several name spaces for variables.  Which one is to be used is
1298specified by what is prepended:
1299
1300		(nothing) In a function: local to a function; otherwise: global
1301|buffer-variable|    b:	  Local to the current buffer.
1302|window-variable|    w:	  Local to the current window.
1303|tabpage-variable|   t:	  Local to the current tab page.
1304|global-variable|    g:	  Global.
1305|local-variable|     l:	  Local to a function.
1306|script-variable|    s:	  Local to a |:source|'ed Vim script.
1307|function-argument|  a:	  Function argument (only inside a function).
1308|vim-variable|       v:	  Global, predefined by Vim.
1309
1310The scope name by itself can be used as a |Dictionary|.  For example, to
1311delete all script-local variables: >
1312	:for k in keys(s:)
1313	:    unlet s:[k]
1314	:endfor
1315<
1316						*buffer-variable* *b:var* *b:*
1317A variable name that is preceded with "b:" is local to the current buffer.
1318Thus you can have several "b:foo" variables, one for each buffer.
1319This kind of variable is deleted when the buffer is wiped out or deleted with
1320|:bdelete|.
1321
1322One local buffer variable is predefined:
1323					*b:changedtick* *changetick*
1324b:changedtick	The total number of changes to the current buffer.  It is
1325		incremented for each change.  An undo command is also a change
1326		in this case.  This can be used to perform an action only when
1327		the buffer has changed.  Example: >
1328		    :if my_changedtick != b:changedtick
1329		    :	let my_changedtick = b:changedtick
1330		    :	call My_Update()
1331		    :endif
1332<		You cannot change or delete the b:changedtick variable.
1333
1334						*window-variable* *w:var* *w:*
1335A variable name that is preceded with "w:" is local to the current window.  It
1336is deleted when the window is closed.
1337
1338						*tabpage-variable* *t:var* *t:*
1339A variable name that is preceded with "t:" is local to the current tab page,
1340It is deleted when the tab page is closed. {not available when compiled
1341without the |+windows| feature}
1342
1343						*global-variable* *g:var* *g:*
1344Inside functions global variables are accessed with "g:".  Omitting this will
1345access a variable local to a function.  But "g:" can also be used in any other
1346place if you like.
1347
1348						*local-variable* *l:var* *l:*
1349Inside functions local variables are accessed without prepending anything.
1350But you can also prepend "l:" if you like.  However, without prepending "l:"
1351you may run into reserved variable names.  For example "count".  By itself it
1352refers to "v:count".  Using "l:count" you can have a local variable with the
1353same name.
1354
1355						*script-variable* *s:var*
1356In a Vim script variables starting with "s:" can be used.  They cannot be
1357accessed from outside of the scripts, thus are local to the script.
1358
1359They can be used in:
1360- commands executed while the script is sourced
1361- functions defined in the script
1362- autocommands defined in the script
1363- functions and autocommands defined in functions and autocommands which were
1364  defined in the script (recursively)
1365- user defined commands defined in the script
1366Thus not in:
1367- other scripts sourced from this one
1368- mappings
1369- menus
1370- etc.
1371
1372Script variables can be used to avoid conflicts with global variable names.
1373Take this example: >
1374
1375	let s:counter = 0
1376	function MyCounter()
1377	  let s:counter = s:counter + 1
1378	  echo s:counter
1379	endfunction
1380	command Tick call MyCounter()
1381
1382You can now invoke "Tick" from any script, and the "s:counter" variable in
1383that script will not be changed, only the "s:counter" in the script where
1384"Tick" was defined is used.
1385
1386Another example that does the same: >
1387
1388	let s:counter = 0
1389	command Tick let s:counter = s:counter + 1 | echo s:counter
1390
1391When calling a function and invoking a user-defined command, the context for
1392script variables is set to the script where the function or command was
1393defined.
1394
1395The script variables are also available when a function is defined inside a
1396function that is defined in a script.  Example: >
1397
1398	let s:counter = 0
1399	function StartCounting(incr)
1400	  if a:incr
1401	    function MyCounter()
1402	      let s:counter = s:counter + 1
1403	    endfunction
1404	  else
1405	    function MyCounter()
1406	      let s:counter = s:counter - 1
1407	    endfunction
1408	  endif
1409	endfunction
1410
1411This defines the MyCounter() function either for counting up or counting down
1412when calling StartCounting().  It doesn't matter from where StartCounting() is
1413called, the s:counter variable will be accessible in MyCounter().
1414
1415When the same script is sourced again it will use the same script variables.
1416They will remain valid as long as Vim is running.  This can be used to
1417maintain a counter: >
1418
1419	if !exists("s:counter")
1420	  let s:counter = 1
1421	  echo "script executed for the first time"
1422	else
1423	  let s:counter = s:counter + 1
1424	  echo "script executed " . s:counter . " times now"
1425	endif
1426
1427Note that this means that filetype plugins don't get a different set of script
1428variables for each buffer.  Use local buffer variables instead |b:var|.
1429
1430
1431Predefined Vim variables:			*vim-variable* *v:var* *v:*
1432
1433					*v:beval_col* *beval_col-variable*
1434v:beval_col	The number of the column, over which the mouse pointer is.
1435		This is the byte index in the |v:beval_lnum| line.
1436		Only valid while evaluating the 'balloonexpr' option.
1437
1438					*v:beval_bufnr* *beval_bufnr-variable*
1439v:beval_bufnr	The number of the buffer, over which the mouse pointer is. Only
1440		valid while evaluating the 'balloonexpr' option.
1441
1442					*v:beval_lnum* *beval_lnum-variable*
1443v:beval_lnum	The number of the line, over which the mouse pointer is. Only
1444		valid while evaluating the 'balloonexpr' option.
1445
1446					*v:beval_text* *beval_text-variable*
1447v:beval_text	The text under or after the mouse pointer.  Usually a word as
1448		it is useful for debugging a C program.  'iskeyword' applies,
1449		but a dot and "->" before the position is included.  When on a
1450		']' the text before it is used, including the matching '[' and
1451		word before it.  When on a Visual area within one line the
1452		highlighted text is used.
1453		Only valid while evaluating the 'balloonexpr' option.
1454
1455					*v:beval_winnr* *beval_winnr-variable*
1456v:beval_winnr	The number of the window, over which the mouse pointer is. Only
1457		valid while evaluating the 'balloonexpr' option.  The first
1458		window has number zero (unlike most other places where a
1459		window gets a number).
1460
1461					*v:beval_winid* *beval_winid-variable*
1462v:beval_winid	The |window-ID| of the window, over which the mouse pointer
1463		is.  Otherwise like v:beval_winnr.
1464
1465					*v:char* *char-variable*
1466v:char		Argument for evaluating 'formatexpr' and used for the typed
1467		character when using <expr> in an abbreviation |:map-<expr>|.
1468		It is also used by the |InsertCharPre| and |InsertEnter| events.
1469
1470			*v:charconvert_from* *charconvert_from-variable*
1471v:charconvert_from
1472		The name of the character encoding of a file to be converted.
1473		Only valid while evaluating the 'charconvert' option.
1474
1475			*v:charconvert_to* *charconvert_to-variable*
1476v:charconvert_to
1477		The name of the character encoding of a file after conversion.
1478		Only valid while evaluating the 'charconvert' option.
1479
1480					*v:cmdarg* *cmdarg-variable*
1481v:cmdarg	This variable is used for two purposes:
1482		1. The extra arguments given to a file read/write command.
1483		   Currently these are "++enc=" and "++ff=".  This variable is
1484		   set before an autocommand event for a file read/write
1485		   command is triggered.  There is a leading space to make it
1486		   possible to append this variable directly after the
1487		   read/write command.  Note: The "+cmd" argument isn't
1488		   included here, because it will be executed anyway.
1489		2. When printing a PostScript file with ":hardcopy" this is
1490		   the argument for the ":hardcopy" command.  This can be used
1491		   in 'printexpr'.
1492
1493					*v:cmdbang* *cmdbang-variable*
1494v:cmdbang	Set like v:cmdarg for a file read/write command.  When a "!"
1495		was used the value is 1, otherwise it is 0.  Note that this
1496		can only be used in autocommands.  For user commands |<bang>|
1497		can be used.
1498
1499				*v:completed_item* *completed_item-variable*
1500v:completed_item
1501		|Dictionary| containing the |complete-items| for the most
1502		recently completed word after |CompleteDone|.  The
1503		|Dictionary| is empty if the completion failed.
1504
1505					*v:count* *count-variable*
1506v:count		The count given for the last Normal mode command.  Can be used
1507		to get the count before a mapping.  Read-only.  Example: >
1508	:map _x :<C-U>echo "the count is " . v:count<CR>
1509<		Note: The <C-U> is required to remove the line range that you
1510		get when typing ':' after a count.
1511		When there are two counts, as in "3d2w", they are multiplied,
1512		just like what happens in the command, "d6w" for the example.
1513		Also used for evaluating the 'formatexpr' option.
1514		"count" also works, for backwards compatibility.
1515
1516					*v:count1* *count1-variable*
1517v:count1	Just like "v:count", but defaults to one when no count is
1518		used.
1519
1520						*v:ctype* *ctype-variable*
1521v:ctype		The current locale setting for characters of the runtime
1522		environment.  This allows Vim scripts to be aware of the
1523		current locale encoding.  Technical: it's the value of
1524		LC_CTYPE.  When not using a locale the value is "C".
1525		This variable can not be set directly, use the |:language|
1526		command.
1527		See |multi-lang|.
1528
1529					*v:dying* *dying-variable*
1530v:dying		Normally zero.  When a deadly signal is caught it's set to
1531		one.  When multiple signals are caught the number increases.
1532		Can be used in an autocommand to check if Vim didn't
1533		terminate normally. {only works on Unix}
1534		Example: >
1535	:au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif
1536<		Note: if another deadly signal is caught when v:dying is one,
1537		VimLeave autocommands will not be executed.
1538
1539					*v:errmsg* *errmsg-variable*
1540v:errmsg	Last given error message.  It's allowed to set this variable.
1541		Example: >
1542	:let v:errmsg = ""
1543	:silent! next
1544	:if v:errmsg != ""
1545	:  ... handle error
1546<		"errmsg" also works, for backwards compatibility.
1547
1548					*v:errors* *errors-variable*
1549v:errors	Errors found by assert functions, such as |assert_true()|.
1550		This is a list of strings.
1551		The assert functions append an item when an assert fails.
1552		To remove old results make it empty: >
1553	:let v:errors = []
1554<		If v:errors is set to anything but a list it is made an empty
1555		list by the assert function.
1556
1557					*v:exception* *exception-variable*
1558v:exception	The value of the exception most recently caught and not
1559		finished.  See also |v:throwpoint| and |throw-variables|.
1560		Example: >
1561	:try
1562	:  throw "oops"
1563	:catch /.*/
1564	:  echo "caught" v:exception
1565	:endtry
1566<		Output: "caught oops".
1567
1568					*v:false* *false-variable*
1569v:false		A Number with value zero. Used to put "false" in JSON.  See
1570		|json_encode()|.
1571		When used as a string this evaluates to "v:false". >
1572			echo v:false
1573<			v:false ~
1574		That is so that eval() can parse the string back to the same
1575		value.  Read-only.
1576
1577					*v:fcs_reason* *fcs_reason-variable*
1578v:fcs_reason	The reason why the |FileChangedShell| event was triggered.
1579		Can be used in an autocommand to decide what to do and/or what
1580		to set v:fcs_choice to.  Possible values:
1581			deleted		file no longer exists
1582			conflict	file contents, mode or timestamp was
1583					changed and buffer is modified
1584			changed		file contents has changed
1585			mode		mode of file changed
1586			time		only file timestamp changed
1587
1588					*v:fcs_choice* *fcs_choice-variable*
1589v:fcs_choice	What should happen after a |FileChangedShell| event was
1590		triggered.  Can be used in an autocommand to tell Vim what to
1591		do with the affected buffer:
1592			reload		Reload the buffer (does not work if
1593					the file was deleted).
1594			ask		Ask the user what to do, as if there
1595					was no autocommand.  Except that when
1596					only the timestamp changed nothing
1597					will happen.
1598			<empty>		Nothing, the autocommand should do
1599					everything that needs to be done.
1600		The default is empty.  If another (invalid) value is used then
1601		Vim behaves like it is empty, there is no warning message.
1602
1603					*v:fname_in* *fname_in-variable*
1604v:fname_in	The name of the input file.  Valid while evaluating:
1605			option		used for ~
1606			'charconvert'	file to be converted
1607			'diffexpr'	original file
1608			'patchexpr'	original file
1609			'printexpr'	file to be printed
1610		And set to the swap file name for |SwapExists|.
1611
1612					*v:fname_out* *fname_out-variable*
1613v:fname_out	The name of the output file.  Only valid while
1614		evaluating:
1615			option		used for ~
1616			'charconvert'	resulting converted file (*)
1617			'diffexpr'	output of diff
1618			'patchexpr'	resulting patched file
1619		(*) When doing conversion for a write command (e.g., ":w
1620		file") it will be equal to v:fname_in.  When doing conversion
1621		for a read command (e.g., ":e file") it will be a temporary
1622		file and different from v:fname_in.
1623
1624					*v:fname_new* *fname_new-variable*
1625v:fname_new	The name of the new version of the file.  Only valid while
1626		evaluating 'diffexpr'.
1627
1628					*v:fname_diff* *fname_diff-variable*
1629v:fname_diff	The name of the diff (patch) file.  Only valid while
1630		evaluating 'patchexpr'.
1631
1632					*v:folddashes* *folddashes-variable*
1633v:folddashes	Used for 'foldtext': dashes representing foldlevel of a closed
1634		fold.
1635		Read-only in the |sandbox|. |fold-foldtext|
1636
1637					*v:foldlevel* *foldlevel-variable*
1638v:foldlevel	Used for 'foldtext': foldlevel of closed fold.
1639		Read-only in the |sandbox|. |fold-foldtext|
1640
1641					*v:foldend* *foldend-variable*
1642v:foldend	Used for 'foldtext': last line of closed fold.
1643		Read-only in the |sandbox|. |fold-foldtext|
1644
1645					*v:foldstart* *foldstart-variable*
1646v:foldstart	Used for 'foldtext': first line of closed fold.
1647		Read-only in the |sandbox|. |fold-foldtext|
1648
1649					*v:hlsearch* *hlsearch-variable*
1650v:hlsearch	Variable that indicates whether search highlighting is on.
1651		Setting it makes sense only if 'hlsearch' is enabled which
1652		requires |+extra_search|. Setting this variable to zero acts
1653		like the |:nohlsearch| command, setting it to one acts like >
1654			let &hlsearch = &hlsearch
1655<		Note that the value is restored when returning from a
1656		function. |function-search-undo|.
1657
1658					*v:insertmode* *insertmode-variable*
1659v:insertmode	Used for the |InsertEnter| and |InsertChange| autocommand
1660		events.  Values:
1661			i	Insert mode
1662			r	Replace mode
1663			v	Virtual Replace mode
1664
1665						*v:key* *key-variable*
1666v:key		Key of the current item of a |Dictionary|.  Only valid while
1667		evaluating the expression used with |map()| and |filter()|.
1668		Read-only.
1669
1670						*v:lang* *lang-variable*
1671v:lang		The current locale setting for messages of the runtime
1672		environment.  This allows Vim scripts to be aware of the
1673		current language.  Technical: it's the value of LC_MESSAGES.
1674		The value is system dependent.
1675		This variable can not be set directly, use the |:language|
1676		command.
1677		It can be different from |v:ctype| when messages are desired
1678		in a different language than what is used for character
1679		encoding.  See |multi-lang|.
1680
1681						*v:lc_time* *lc_time-variable*
1682v:lc_time	The current locale setting for time messages of the runtime
1683		environment.  This allows Vim scripts to be aware of the
1684		current language.  Technical: it's the value of LC_TIME.
1685		This variable can not be set directly, use the |:language|
1686		command.  See |multi-lang|.
1687
1688						*v:lnum* *lnum-variable*
1689v:lnum		Line number for the 'foldexpr' |fold-expr|, 'formatexpr' and
1690		'indentexpr' expressions, tab page number for 'guitablabel'
1691		and 'guitabtooltip'.  Only valid while one of these
1692		expressions is being evaluated.  Read-only when in the
1693		|sandbox|.
1694
1695					*v:mouse_win* *mouse_win-variable*
1696v:mouse_win	Window number for a mouse click obtained with |getchar()|.
1697		First window has number 1, like with |winnr()|.  The value is
1698		zero when there was no mouse button click.
1699
1700					*v:mouse_winid* *mouse_winid-variable*
1701v:mouse_winid	Window ID for a mouse click obtained with |getchar()|.
1702		The value is zero when there was no mouse button click.
1703
1704					*v:mouse_lnum* *mouse_lnum-variable*
1705v:mouse_lnum	Line number for a mouse click obtained with |getchar()|.
1706		This is the text line number, not the screen line number.  The
1707		value is zero when there was no mouse button click.
1708
1709					*v:mouse_col* *mouse_col-variable*
1710v:mouse_col	Column number for a mouse click obtained with |getchar()|.
1711		This is the screen column number, like with |virtcol()|.  The
1712		value is zero when there was no mouse button click.
1713
1714					*v:none* *none-variable*
1715v:none		An empty String. Used to put an empty item in JSON.  See
1716		|json_encode()|.
1717		When used as a number this evaluates to zero.
1718		When used as a string this evaluates to "v:none". >
1719			echo v:none
1720<			v:none ~
1721		That is so that eval() can parse the string back to the same
1722		value.  Read-only.
1723
1724					*v:null* *null-variable*
1725v:null		An empty String. Used to put "null" in JSON.  See
1726		|json_encode()|.
1727		When used as a number this evaluates to zero.
1728		When used as a string this evaluates to "v:null". >
1729			echo v:null
1730<			v:null ~
1731		That is so that eval() can parse the string back to the same
1732		value.  Read-only.
1733
1734					*v:oldfiles* *oldfiles-variable*
1735v:oldfiles	List of file names that is loaded from the |viminfo| file on
1736		startup.  These are the files that Vim remembers marks for.
1737		The length of the List is limited by the ' argument of the
1738		'viminfo' option (default is 100).
1739		When the |viminfo| file is not used the List is empty.
1740		Also see |:oldfiles| and |c_#<|.
1741		The List can be modified, but this has no effect on what is
1742		stored in the |viminfo| file later.  If you use values other
1743		than String this will cause trouble.
1744		{only when compiled with the |+viminfo| feature}
1745
1746						    *v:option_new*
1747v:option_new    New value of the option. Valid while executing an |OptionSet|
1748		autocommand.
1749						    *v:option_old*
1750v:option_old    Old value of the option. Valid while executing an |OptionSet|
1751		autocommand.
1752						    *v:option_type*
1753v:option_type   Scope of the set command. Valid while executing an
1754		|OptionSet| autocommand. Can be either "global" or "local"
1755					*v:operator* *operator-variable*
1756v:operator	The last operator given in Normal mode.  This is a single
1757		character except for commands starting with <g> or <z>,
1758		in which case it is two characters.  Best used alongside
1759		|v:prevcount| and |v:register|.  Useful if you want to cancel
1760		Operator-pending mode and then use the operator, e.g.: >
1761			:omap O <Esc>:call MyMotion(v:operator)<CR>
1762<		The value remains set until another operator is entered, thus
1763		don't expect it to be empty.
1764		v:operator is not set for |:delete|, |:yank| or other Ex
1765		commands.
1766		Read-only.
1767
1768					*v:prevcount* *prevcount-variable*
1769v:prevcount	The count given for the last but one Normal mode command.
1770		This is the v:count value of the previous command.  Useful if
1771		you want to cancel Visual or Operator-pending mode and then
1772		use the count, e.g.: >
1773			:vmap % <Esc>:call MyFilter(v:prevcount)<CR>
1774<		Read-only.
1775
1776					*v:profiling* *profiling-variable*
1777v:profiling	Normally zero.  Set to one after using ":profile start".
1778		See |profiling|.
1779
1780					*v:progname* *progname-variable*
1781v:progname	Contains the name (with path removed) with which Vim was
1782		invoked.  Allows you to do special initialisations for |view|,
1783		|evim| etc., or any other name you might symlink to Vim.
1784		Read-only.
1785
1786					*v:progpath* *progpath-variable*
1787v:progpath	Contains the command with which Vim was invoked, including the
1788		path.  Useful if you want to message a Vim server using a
1789		|--remote-expr|.
1790		To get the full path use: >
1791			echo exepath(v:progpath)
1792<		If the path is relative it will be expanded to the full path,
1793		so that it still works after `:cd`. Thus starting "./vim"
1794		results in "/home/user/path/to/vim/src/vim".
1795		On MS-Windows the executable may be called "vim.exe", but the
1796		".exe" is not added to v:progpath.
1797		Read-only.
1798
1799					*v:register* *register-variable*
1800v:register	The name of the register in effect for the current normal mode
1801		command (regardless of whether that command actually used a
1802		register).  Or for the currently executing normal mode mapping
1803		(use this in custom commands that take a register).
1804		If none is supplied it is the default register '"', unless
1805		'clipboard' contains "unnamed" or "unnamedplus", then it is
1806		'*' or '+'.
1807		Also see |getreg()| and |setreg()|
1808
1809					*v:scrollstart* *scrollstart-variable*
1810v:scrollstart	String describing the script or function that caused the
1811		screen to scroll up.  It's only set when it is empty, thus the
1812		first reason is remembered.  It is set to "Unknown" for a
1813		typed command.
1814		This can be used to find out why your script causes the
1815		hit-enter prompt.
1816
1817					*v:servername* *servername-variable*
1818v:servername	The resulting registered |client-server-name| if any.
1819		Read-only.
1820
1821
1822v:searchforward			*v:searchforward* *searchforward-variable*
1823		Search direction:  1 after a forward search, 0 after a
1824		backward search.  It is reset to forward when directly setting
1825		the last search pattern, see |quote/|.
1826		Note that the value is restored when returning from a
1827		function. |function-search-undo|.
1828		Read-write.
1829
1830					*v:shell_error* *shell_error-variable*
1831v:shell_error	Result of the last shell command.  When non-zero, the last
1832		shell command had an error.  When zero, there was no problem.
1833		This only works when the shell returns the error code to Vim.
1834		The value -1 is often used when the command could not be
1835		executed.  Read-only.
1836		Example: >
1837	:!mv foo bar
1838	:if v:shell_error
1839	:  echo 'could not rename "foo" to "bar"!'
1840	:endif
1841<		"shell_error" also works, for backwards compatibility.
1842
1843					*v:statusmsg* *statusmsg-variable*
1844v:statusmsg	Last given status message.  It's allowed to set this variable.
1845
1846					*v:swapname* *swapname-variable*
1847v:swapname	Only valid when executing |SwapExists| autocommands: Name of
1848		the swap file found.  Read-only.
1849
1850					*v:swapchoice* *swapchoice-variable*
1851v:swapchoice	|SwapExists| autocommands can set this to the selected choice
1852		for handling an existing swap file:
1853			'o'	Open read-only
1854			'e'	Edit anyway
1855			'r'	Recover
1856			'd'	Delete swapfile
1857			'q'	Quit
1858			'a'	Abort
1859		The value should be a single-character string.  An empty value
1860		results in the user being asked, as would happen when there is
1861		no SwapExists autocommand.  The default is empty.
1862
1863					*v:swapcommand* *swapcommand-variable*
1864v:swapcommand	Normal mode command to be executed after a file has been
1865		opened.  Can be used for a |SwapExists| autocommand to have
1866		another Vim open the file and jump to the right place.  For
1867		example, when jumping to a tag the value is ":tag tagname\r".
1868		For ":edit +cmd file" the value is ":cmd\r".
1869
1870				*v:t_TYPE* *v:t_bool* *t_bool-variable*
1871v:t_bool	Value of Boolean type.  Read-only.  See: |type()|
1872					*v:t_channel* *t_channel-variable*
1873v:t_channel	Value of Channel type.  Read-only.  See: |type()|
1874					*v:t_dict* *t_dict-variable*
1875v:t_dict	Value of Dictionary type.  Read-only.  See: |type()|
1876					*v:t_float* *t_float-variable*
1877v:t_float	Value of Float type.  Read-only.  See: |type()|
1878					*v:t_func* *t_func-variable*
1879v:t_func	Value of Funcref type.  Read-only.  See: |type()|
1880					*v:t_job* *t_job-variable*
1881v:t_job		Value of Job type.  Read-only.  See: |type()|
1882					*v:t_list* *t_list-variable*
1883v:t_list	Value of List type.  Read-only.  See: |type()|
1884					*v:t_none* *t_none-variable*
1885v:t_none	Value of None type.  Read-only.  See: |type()|
1886					*v:t_number* *t_number-variable*
1887v:t_number	Value of Number type.  Read-only.  See: |type()|
1888					*v:t_string* *t_string-variable*
1889v:t_string	Value of String type.  Read-only.  See: |type()|
1890
1891				*v:termresponse* *termresponse-variable*
1892v:termresponse	The escape sequence returned by the terminal for the |t_RV|
1893		termcap entry.  It is set when Vim receives an escape sequence
1894		that starts with ESC [ or CSI and ends in a 'c', with only
1895		digits, ';' and '.' in between.
1896		When this option is set, the TermResponse autocommand event is
1897		fired, so that you can react to the response from the
1898		terminal.
1899		The response from a new xterm is: "<Esc>[ Pp ; Pv ; Pc c".  Pp
1900		is the terminal type: 0 for vt100 and 1 for vt220.  Pv is the
1901		patch level (since this was introduced in patch 95, it's
1902		always 95 or bigger).  Pc is always zero.
1903		{only when compiled with |+termresponse| feature}
1904
1905					*v:testing* *testing-variable*
1906v:testing	Must be set before using `test_garbagecollect_now()`.
1907		Also, when set certain error messages won't be shown for 2
1908		seconds. (e.g. "'dictionary' option is empty")
1909
1910				*v:this_session* *this_session-variable*
1911v:this_session	Full filename of the last loaded or saved session file.  See
1912		|:mksession|.  It is allowed to set this variable.  When no
1913		session file has been saved, this variable is empty.
1914		"this_session" also works, for backwards compatibility.
1915
1916					*v:throwpoint* *throwpoint-variable*
1917v:throwpoint	The point where the exception most recently caught and not
1918		finished was thrown.  Not set when commands are typed.  See
1919		also |v:exception| and |throw-variables|.
1920		Example: >
1921	:try
1922	:  throw "oops"
1923	:catch /.*/
1924	:  echo "Exception from" v:throwpoint
1925	:endtry
1926<		Output: "Exception from test.vim, line 2"
1927
1928						*v:true* *true-variable*
1929v:true		A Number with value one. Used to put "true" in JSON.  See
1930		|json_encode()|.
1931		When used as a string this evaluates to "v:true". >
1932			echo v:true
1933<			v:true ~
1934		That is so that eval() can parse the string back to the same
1935		value.  Read-only.
1936						*v:val* *val-variable*
1937v:val		Value of the current item of a |List| or |Dictionary|.  Only
1938		valid while evaluating the expression used with |map()| and
1939		|filter()|.  Read-only.
1940
1941					*v:version* *version-variable*
1942v:version	Version number of Vim: Major version number times 100 plus
1943		minor version number.  Version 5.0 is 500.  Version 5.1 (5.01)
1944		is 501.  Read-only.  "version" also works, for backwards
1945		compatibility.
1946		Use |has()| to check if a certain patch was included, e.g.: >
1947			if has("patch-7.4.123")
1948<		Note that patch numbers are specific to the version, thus both
1949		version 5.0 and 5.1 may have a patch 123, but these are
1950		completely different.
1951
1952				*v:vim_did_enter* *vim_did_enter-variable*
1953v:vim_did_enter	Zero until most of startup is done.  It is set to one just
1954		before |VimEnter| autocommands are triggered.
1955
1956					*v:warningmsg* *warningmsg-variable*
1957v:warningmsg	Last given warning message.  It's allowed to set this variable.
1958
1959					*v:windowid* *windowid-variable*
1960v:windowid	When any X11 based GUI is running or when running in a
1961		terminal and Vim connects to the X server (|-X|) this will be
1962		set to the window ID.
1963		When an MS-Windows GUI is running this will be set to the
1964		window handle.
1965		Otherwise the value is zero.
1966		Note: for windows inside Vim use |winnr()| or |win_getid()|,
1967		see |window-ID|.
1968
1969==============================================================================
19704. Builtin Functions					*functions*
1971
1972See |function-list| for a list grouped by what the function is used for.
1973
1974(Use CTRL-] on the function name to jump to the full explanation.)
1975
1976USAGE				RESULT	DESCRIPTION	~
1977
1978abs({expr})			Float or Number  absolute value of {expr}
1979acos({expr})			Float	arc cosine of {expr}
1980add({list}, {item})		List	append {item} to |List| {list}
1981and({expr}, {expr})		Number	bitwise AND
1982append({lnum}, {string})	Number	append {string} below line {lnum}
1983append({lnum}, {list})		Number	append lines {list} below line {lnum}
1984argc()				Number	number of files in the argument list
1985argidx()			Number	current index in the argument list
1986arglistid([{winnr} [, {tabnr}]]) Number	argument list id
1987argv({nr})			String	{nr} entry of the argument list
1988argv()				List	the argument list
1989assert_equal({exp}, {act} [, {msg}])
1990				none	assert {exp} is equal to {act}
1991assert_exception({error} [, {msg}])
1992				none	assert {error} is in v:exception
1993assert_fails({cmd} [, {error}])	none	assert {cmd} fails
1994assert_false({actual} [, {msg}])
1995				none	assert {actual} is false
1996assert_inrange({lower}, {upper}, {actual} [, {msg}])
1997				none	assert {actual} is inside the range
1998assert_match({pat}, {text} [, {msg}])
1999				none	assert {pat} matches {text}
2000assert_notequal({exp}, {act} [, {msg}])
2001				none	assert {exp} is not equal {act}
2002assert_notmatch({pat}, {text} [, {msg}])
2003				none	assert {pat} not matches {text}
2004assert_report({msg})		none	report a test failure
2005assert_true({actual} [, {msg}])	none	assert {actual} is true
2006asin({expr})			Float	arc sine of {expr}
2007atan({expr})			Float	arc tangent of {expr}
2008atan2({expr1}, {expr2})		Float	arc tangent of {expr1} / {expr2}
2009balloon_show({msg})		none	show {msg} inside the balloon
2010browse({save}, {title}, {initdir}, {default})
2011				String	put up a file requester
2012browsedir({title}, {initdir})	String	put up a directory requester
2013bufexists({expr})		Number	|TRUE| if buffer {expr} exists
2014buflisted({expr})		Number	|TRUE| if buffer {expr} is listed
2015bufloaded({expr})		Number	|TRUE| if buffer {expr} is loaded
2016bufname({expr})			String	Name of the buffer {expr}
2017bufnr({expr} [, {create}])	Number	Number of the buffer {expr}
2018bufwinid({expr})		Number	window ID of buffer {expr}
2019bufwinnr({expr})		Number	window number of buffer {expr}
2020byte2line({byte})		Number	line number at byte count {byte}
2021byteidx({expr}, {nr})		Number	byte index of {nr}'th char in {expr}
2022byteidxcomp({expr}, {nr})	Number	byte index of {nr}'th char in {expr}
2023call({func}, {arglist} [, {dict}])
2024				any	call {func} with arguments {arglist}
2025ceil({expr})			Float	round {expr} up
2026ch_canread({handle})		Number	check if there is something to read
2027ch_close({handle})		none	close {handle}
2028ch_close_in({handle})		none	close in part of {handle}
2029ch_evalexpr({handle}, {expr} [, {options}])
2030				any	evaluate {expr} on JSON {handle}
2031ch_evalraw({handle}, {string} [, {options}])
2032				any	evaluate {string} on raw {handle}
2033ch_getbufnr({handle}, {what})	Number	get buffer number for {handle}/{what}
2034ch_getjob({channel})		Job	get the Job of {channel}
2035ch_info({handle})		String	info about channel {handle}
2036ch_log({msg} [, {handle}])	none	write {msg} in the channel log file
2037ch_logfile({fname} [, {mode}])	none	start logging channel activity
2038ch_open({address} [, {options}])
2039				Channel	open a channel to {address}
2040ch_read({handle} [, {options}]) String	read from {handle}
2041ch_readraw({handle} [, {options}])
2042				String	read raw from {handle}
2043ch_sendexpr({handle}, {expr} [, {options}])
2044				any	send {expr} over JSON {handle}
2045ch_sendraw({handle}, {string} [, {options}])
2046				any	send {string} over raw {handle}
2047ch_setoptions({handle}, {options})
2048				none	set options for {handle}
2049ch_status({handle} [, {options}])
2050				String	status of channel {handle}
2051changenr()			Number	current change number
2052char2nr({expr}[, {utf8}])	Number	ASCII/UTF8 value of first char in {expr}
2053cindent({lnum})			Number	C indent for line {lnum}
2054clearmatches()			none	clear all matches
2055col({expr})			Number	column nr of cursor or mark
2056complete({startcol}, {matches}) none	set Insert mode completion
2057complete_add({expr})		Number	add completion match
2058complete_check()		Number	check for key typed during completion
2059confirm({msg} [, {choices} [, {default} [, {type}]]])
2060				Number	number of choice picked by user
2061copy({expr})			any	make a shallow copy of {expr}
2062cos({expr})			Float	cosine of {expr}
2063cosh({expr})			Float	hyperbolic cosine of {expr}
2064count({list}, {expr} [, {ic} [, {start}]])
2065				Number	count how many {expr} are in {list}
2066cscope_connection([{num}, {dbpath} [, {prepend}]])
2067				Number	checks existence of cscope connection
2068cursor({lnum}, {col} [, {off}])
2069				Number	move cursor to {lnum}, {col}, {off}
2070cursor({list})			Number	move cursor to position in {list}
2071deepcopy({expr} [, {noref}])	any	make a full copy of {expr}
2072delete({fname} [, {flags}])	Number	delete the file or directory {fname}
2073did_filetype()			Number	|TRUE| if FileType autocmd event used
2074diff_filler({lnum})		Number	diff filler lines about {lnum}
2075diff_hlID({lnum}, {col})	Number	diff highlighting at {lnum}/{col}
2076empty({expr})			Number	|TRUE| if {expr} is empty
2077escape({string}, {chars})	String	escape {chars} in {string} with '\'
2078eval({string})			any	evaluate {string} into its value
2079eventhandler()			Number	|TRUE| if inside an event handler
2080executable({expr})		Number	1 if executable {expr} exists
2081execute({command})		String	execute {command} and get the output
2082exepath({expr})			String	full path of the command {expr}
2083exists({expr})			Number	|TRUE| if {expr} exists
2084extend({expr1}, {expr2} [, {expr3}])
2085				List/Dict insert items of {expr2} into {expr1}
2086exp({expr})			Float	exponential of {expr}
2087expand({expr} [, {nosuf} [, {list}]])
2088				any	expand special keywords in {expr}
2089feedkeys({string} [, {mode}])	Number	add key sequence to typeahead buffer
2090filereadable({file})		Number	|TRUE| if {file} is a readable file
2091filewritable({file})		Number	|TRUE| if {file} is a writable file
2092filter({expr1}, {expr2})	List/Dict  remove items from {expr1} where
2093					{expr2} is 0
2094finddir({name}[, {path}[, {count}]])
2095				String	find directory {name} in {path}
2096findfile({name}[, {path}[, {count}]])
2097				String	find file {name} in {path}
2098float2nr({expr})		Number	convert Float {expr} to a Number
2099floor({expr})			Float	round {expr} down
2100fmod({expr1}, {expr2})		Float	remainder of {expr1} / {expr2}
2101fnameescape({fname})		String	escape special characters in {fname}
2102fnamemodify({fname}, {mods})	String	modify file name
2103foldclosed({lnum})		Number	first line of fold at {lnum} if closed
2104foldclosedend({lnum})		Number	last line of fold at {lnum} if closed
2105foldlevel({lnum})		Number	fold level at {lnum}
2106foldtext()			String	line displayed for closed fold
2107foldtextresult({lnum})		String	text for closed fold at {lnum}
2108foreground()			Number	bring the Vim window to the foreground
2109funcref({name} [, {arglist}] [, {dict}])
2110				Funcref	reference to function {name}
2111function({name} [, {arglist}] [, {dict}])
2112				Funcref	named reference to function {name}
2113garbagecollect([{atexit}])	none	free memory, breaking cyclic references
2114get({list}, {idx} [, {def}])	any	get item {idx} from {list} or {def}
2115get({dict}, {key} [, {def}])	any	get item {key} from {dict} or {def}
2116get({func}, {what})		any	get property of funcref/partial {func}
2117getbufinfo([{expr}])		List	information about buffers
2118getbufline({expr}, {lnum} [, {end}])
2119				List	lines {lnum} to {end} of buffer {expr}
2120getbufvar({expr}, {varname} [, {def}])
2121				any	variable {varname} in buffer {expr}
2122getchar([expr])			Number	get one character from the user
2123getcharmod()			Number	modifiers for the last typed character
2124getcharsearch()			Dict	last character search
2125getcmdline()			String	return the current command-line
2126getcmdpos()			Number	return cursor position in command-line
2127getcmdtype()			String	return current command-line type
2128getcmdwintype()			String	return current command-line window type
2129getcompletion({pat}, {type} [, {filtered}])
2130				List	list of cmdline completion matches
2131getcurpos()			List	position of the cursor
2132getcwd([{winnr} [, {tabnr}]])	String	get the current working directory
2133getfontname([{name}])		String	name of font being used
2134getfperm({fname})		String	file permissions of file {fname}
2135getfsize({fname})		Number	size in bytes of file {fname}
2136getftime({fname})		Number	last modification time of file
2137getftype({fname})		String	description of type of file {fname}
2138getline({lnum})			String	line {lnum} of current buffer
2139getline({lnum}, {end})		List	lines {lnum} to {end} of current buffer
2140getloclist({nr}[, {what}])	List	list of location list items
2141getmatches()			List	list of current matches
2142getpid()			Number	process ID of Vim
2143getpos({expr})			List	position of cursor, mark, etc.
2144getqflist([{what}])		List	list of quickfix items
2145getreg([{regname} [, 1 [, {list}]]])
2146				String or List   contents of register
2147getregtype([{regname}])		String	type of register
2148gettabinfo([{expr}])		List	list of tab pages
2149gettabvar({nr}, {varname} [, {def}])
2150				any	variable {varname} in tab {nr} or {def}
2151gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
2152				any	{name} in {winnr} in tab page {tabnr}
2153getwininfo([{winid}])		List	list of windows
2154getwinposx()			Number	X coord in pixels of GUI Vim window
2155getwinposy()			Number	Y coord in pixels of GUI Vim window
2156getwinvar({nr}, {varname} [, {def}])
2157				any	variable {varname} in window {nr}
2158glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])
2159				any	expand file wildcards in {expr}
2160glob2regpat({expr})		String	convert a glob pat into a search pat
2161globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
2162				String	do glob({expr}) for all dirs in {path}
2163has({feature})			Number	|TRUE| if feature {feature} supported
2164has_key({dict}, {key})		Number	|TRUE| if {dict} has entry {key}
2165haslocaldir([{winnr} [, {tabnr}]])
2166				Number	|TRUE| if the window executed |:lcd|
2167hasmapto({what} [, {mode} [, {abbr}]])
2168				Number	|TRUE| if mapping to {what} exists
2169histadd({history}, {item})	String	add an item to a history
2170histdel({history} [, {item}])	String	remove an item from a history
2171histget({history} [, {index}])	String	get the item {index} from a history
2172histnr({history})		Number	highest index of a history
2173hlexists({name})		Number	|TRUE| if highlight group {name} exists
2174hlID({name})			Number	syntax ID of highlight group {name}
2175hostname()			String	name of the machine Vim is running on
2176iconv({expr}, {from}, {to})	String	convert encoding of {expr}
2177indent({lnum})			Number	indent of line {lnum}
2178index({list}, {expr} [, {start} [, {ic}]])
2179				Number	index in {list} where {expr} appears
2180input({prompt} [, {text} [, {completion}]])
2181				String	get input from the user
2182inputdialog({prompt} [, {text} [, {completion}]])
2183				String	like input() but in a GUI dialog
2184inputlist({textlist})		Number	let the user pick from a choice list
2185inputrestore()			Number	restore typeahead
2186inputsave()			Number	save and clear typeahead
2187inputsecret({prompt} [, {text}]) String	like input() but hiding the text
2188insert({list}, {item} [, {idx}]) List	insert {item} in {list} [before {idx}]
2189invert({expr})			Number	bitwise invert
2190isdirectory({directory})	Number	|TRUE| if {directory} is a directory
2191islocked({expr})		Number	|TRUE| if {expr} is locked
2192isnan({expr})			Number	|TRUE| if {expr} is NaN
2193items({dict})			List	key-value pairs in {dict}
2194job_getchannel({job})		Channel	get the channel handle for {job}
2195job_info({job})			Dict	get information about {job}
2196job_setoptions({job}, {options}) none	set options for {job}
2197job_start({command} [, {options}])
2198				Job	start a job
2199job_status({job})		String	get the status of {job}
2200job_stop({job} [, {how}])	Number	stop {job}
2201join({list} [, {sep}])		String	join {list} items into one String
2202js_decode({string})		any	decode JS style JSON
2203js_encode({expr})		String	encode JS style JSON
2204json_decode({string})		any	decode JSON
2205json_encode({expr})		String	encode JSON
2206keys({dict})			List	keys in {dict}
2207len({expr})			Number	the length of {expr}
2208libcall({lib}, {func}, {arg})	String	call {func} in library {lib} with {arg}
2209libcallnr({lib}, {func}, {arg})	Number	idem, but return a Number
2210line({expr})			Number	line nr of cursor, last line or mark
2211line2byte({lnum})		Number	byte count of line {lnum}
2212lispindent({lnum})		Number	Lisp indent for line {lnum}
2213localtime()			Number	current time
2214log({expr})			Float	natural logarithm (base e) of {expr}
2215log10({expr})			Float	logarithm of Float {expr} to base 10
2216luaeval({expr}[, {expr}])	any	evaluate |Lua| expression
2217map({expr1}, {expr2})		List/Dict  change each item in {expr1} to {expr}
2218maparg({name}[, {mode} [, {abbr} [, {dict}]]])
2219				String or Dict
2220					rhs of mapping {name} in mode {mode}
2221mapcheck({name}[, {mode} [, {abbr}]])
2222				String	check for mappings matching {name}
2223match({expr}, {pat}[, {start}[, {count}]])
2224				Number	position where {pat} matches in {expr}
2225matchadd({group}, {pattern}[, {priority}[, {id} [, {dict}]]])
2226				Number	highlight {pattern} with {group}
2227matchaddpos({group}, {pos}[, {priority}[, {id}[, {dict}]]])
2228				Number	highlight positions with {group}
2229matcharg({nr})			List	arguments of |:match|
2230matchdelete({id})		Number	delete match identified by {id}
2231matchend({expr}, {pat}[, {start}[, {count}]])
2232				Number	position where {pat} ends in {expr}
2233matchlist({expr}, {pat}[, {start}[, {count}]])
2234				List	match and submatches of {pat} in {expr}
2235matchstr({expr}, {pat}[, {start}[, {count}]])
2236				String	{count}'th match of {pat} in {expr}
2237matchstrpos({expr}, {pat}[, {start}[, {count}]])
2238				List	{count}'th match of {pat} in {expr}
2239max({expr})			Number	maximum value of items in {expr}
2240min({expr})			Number	minimum value of items in {expr}
2241mkdir({name} [, {path} [, {prot}]])
2242				Number	create directory {name}
2243mode([expr])			String	current editing mode
2244mzeval({expr})			any	evaluate |MzScheme| expression
2245nextnonblank({lnum})		Number	line nr of non-blank line >= {lnum}
2246nr2char({expr}[, {utf8}])	String	single char with ASCII/UTF8 value {expr}
2247or({expr}, {expr})		Number	bitwise OR
2248pathshorten({expr})		String	shorten directory names in a path
2249perleval({expr})		any	evaluate |Perl| expression
2250pow({x}, {y})			Float	{x} to the power of {y}
2251prevnonblank({lnum})		Number	line nr of non-blank line <= {lnum}
2252printf({fmt}, {expr1}...)	String	format text
2253pumvisible()			Number	whether popup menu is visible
2254pyeval({expr})			any	evaluate |Python| expression
2255py3eval({expr})			any	evaluate |python3| expression
2256pyxeval({expr})			any	evaluate |python_x| expression
2257range({expr} [, {max} [, {stride}]])
2258				List	items from {expr} to {max}
2259readfile({fname} [, {binary} [, {max}]])
2260				List	get list of lines from file {fname}
2261reltime([{start} [, {end}]])	List	get time value
2262reltimefloat({time})		Float	turn the time value into a Float
2263reltimestr({time})		String	turn time value into a String
2264remote_expr({server}, {string} [, {idvar} [, {timeout}]])
2265				String	send expression
2266remote_foreground({server})	Number	bring Vim server to the foreground
2267remote_peek({serverid} [, {retvar}])
2268				Number	check for reply string
2269remote_read({serverid} [, {timeout}])
2270				String	read reply string
2271remote_send({server}, {string} [, {idvar}])
2272				String	send key sequence
2273remote_startserver({name})	none	become server {name}
2274				String	send key sequence
2275remove({list}, {idx} [, {end}])	any	remove items {idx}-{end} from {list}
2276remove({dict}, {key})		any	remove entry {key} from {dict}
2277rename({from}, {to})		Number	rename (move) file from {from} to {to}
2278repeat({expr}, {count})		String	repeat {expr} {count} times
2279resolve({filename})		String	get filename a shortcut points to
2280reverse({list})			List	reverse {list} in-place
2281round({expr})			Float	round off {expr}
2282screenattr({row}, {col})	Number	attribute at screen position
2283screenchar({row}, {col})	Number	character at screen position
2284screencol()			Number	current cursor column
2285screenrow()			Number	current cursor row
2286search({pattern} [, {flags} [, {stopline} [, {timeout}]]])
2287				Number	search for {pattern}
2288searchdecl({name} [, {global} [, {thisblock}]])
2289				Number	search for variable declaration
2290searchpair({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
2291				Number	search for other end of start/end pair
2292searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
2293				List	search for other end of start/end pair
2294searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]])
2295				List	search for {pattern}
2296server2client({clientid}, {string})
2297				Number	send reply string
2298serverlist()			String	get a list of available servers
2299setbufvar({expr}, {varname}, {val})
2300				none	set {varname} in buffer {expr} to {val}
2301setcharsearch({dict})		Dict	set character search from {dict}
2302setcmdpos({pos})		Number	set cursor position in command-line
2303setfperm({fname}, {mode})	Number	set {fname} file permissions to {mode}
2304setline({lnum}, {line})		Number	set line {lnum} to {line}
2305setloclist({nr}, {list}[, {action}[, {what}]])
2306				Number	modify location list using {list}
2307setmatches({list})		Number	restore a list of matches
2308setpos({expr}, {list})		Number	set the {expr} position to {list}
2309setqflist({list}[, {action}[, {what}]])
2310				Number	modify quickfix list using {list}
2311setreg({n}, {v}[, {opt}])	Number	set register to value and type
2312settabvar({nr}, {varname}, {val}) none	set {varname} in tab page {nr} to {val}
2313settabwinvar({tabnr}, {winnr}, {varname}, {val})
2314				none	set {varname} in window {winnr} in tab
2315					page {tabnr} to {val}
2316setwinvar({nr}, {varname}, {val}) none	set {varname} in window {nr} to {val}
2317sha256({string})		String	SHA256 checksum of {string}
2318shellescape({string} [, {special}])
2319				String	escape {string} for use as shell
2320					command argument
2321shiftwidth()			Number	effective value of 'shiftwidth'
2322simplify({filename})		String	simplify filename as much as possible
2323sin({expr})			Float	sine of {expr}
2324sinh({expr})			Float	hyperbolic sine of {expr}
2325sort({list} [, {func} [, {dict}]])
2326				List	sort {list}, using {func} to compare
2327soundfold({word})		String	sound-fold {word}
2328spellbadword()			String	badly spelled word at cursor
2329spellsuggest({word} [, {max} [, {capital}]])
2330				List	spelling suggestions
2331split({expr} [, {pat} [, {keepempty}]])
2332				List	make |List| from {pat} separated {expr}
2333sqrt({expr})			Float	square root of {expr}
2334str2float({expr})		Float	convert String to Float
2335str2nr({expr} [, {base}])	Number	convert String to Number
2336strchars({expr} [, {skipcc}])	Number	character length of the String {expr}
2337strcharpart({str}, {start}[, {len}])
2338				String	{len} characters of {str} at {start}
2339strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
2340strftime({format}[, {time}])	String	time in specified format
2341strgetchar({str}, {index})	Number	get char {index} from {str}
2342stridx({haystack}, {needle}[, {start}])
2343				Number	index of {needle} in {haystack}
2344string({expr})			String	String representation of {expr} value
2345strlen({expr})			Number	length of the String {expr}
2346strpart({str}, {start}[, {len}])
2347				String	{len} characters of {str} at {start}
2348strridx({haystack}, {needle} [, {start}])
2349				Number	last index of {needle} in {haystack}
2350strtrans({expr})		String	translate string to make it printable
2351strwidth({expr})		Number	display cell length of the String {expr}
2352submatch({nr}[, {list}])	String or List
2353					specific match in ":s" or substitute()
2354substitute({expr}, {pat}, {sub}, {flags})
2355				String	all {pat} in {expr} replaced with {sub}
2356synID({lnum}, {col}, {trans})	Number	syntax ID at {lnum} and {col}
2357synIDattr({synID}, {what} [, {mode}])
2358				String	attribute {what} of syntax ID {synID}
2359synIDtrans({synID})		Number	translated syntax ID of {synID}
2360synconcealed({lnum}, {col})	List	info about concealing
2361synstack({lnum}, {col})		List	stack of syntax IDs at {lnum} and {col}
2362system({expr} [, {input}])	String	output of shell command/filter {expr}
2363systemlist({expr} [, {input}])	List	output of shell command/filter {expr}
2364tabpagebuflist([{arg}])		List	list of buffer numbers in tab page
2365tabpagenr([{arg}])		Number	number of current or last tab page
2366tabpagewinnr({tabarg}[, {arg}]) Number	number of current window in tab page
2367taglist({expr}[, {filename}])	List	list of tags matching {expr}
2368tagfiles()			List	tags files used
2369tan({expr})			Float	tangent of {expr}
2370tanh({expr})			Float	hyperbolic tangent of {expr}
2371tempname()			String	name for a temporary file
2372term_getattr({attr}, {what}	Number	get the value of attribute {what}
2373term_getcursor({buf})		List	get the cursor position of a terminal
2374term_getjob({buf})		Job	get the job associated with a terminal
2375term_getline({buf}, {row})	String	get a line of text from a terminal
2376term_getsize({buf})		List	get the size of a terminal
2377term_getstatus({buf})		String	get the status of a terminal
2378term_gettitle({buf})		String	get the title of a terminal
2379term_gettty({buf})		String	get the tty name of a terminal
2380term_list()			List	get the list of terminal buffers
2381term_scrape({buf}, {row})	List	get row of a terminal screen
2382term_sendkeys({buf}, {keys})	none	send keystrokes to a terminal
2383term_start({cmd}, {options})	Job	open a terminal window and run a job
2384term_wait({buf})		Number  wait for screen to be updated
2385test_alloc_fail({id}, {countdown}, {repeat})
2386				none	make memory allocation fail
2387test_autochdir()		none	enable 'autochdir' during startup
2388test_garbagecollect_now()	none	free memory right now for testing
2389test_ignore_error({expr})	none	ignore a specific error
2390test_null_channel()		Channel	null value for testing
2391test_null_dict()		Dict	null value for testing
2392test_null_job()			Job	null value for testing
2393test_null_list()		List	null value for testing
2394test_null_partial()		Funcref	null value for testing
2395test_null_string()		String	null value for testing
2396test_override({expr}, {val})    none	test with Vim internal overrides
2397test_settime({expr})		none	set current time for testing
2398timer_info([{id}])		List	information about timers
2399timer_pause({id}, {pause})	none	pause or unpause a timer
2400timer_start({time}, {callback} [, {options}])
2401				Number	create a timer
2402timer_stop({timer})		none	stop a timer
2403timer_stopall()			none	stop all timers
2404tolower({expr})			String	the String {expr} switched to lowercase
2405toupper({expr})			String	the String {expr} switched to uppercase
2406tr({src}, {fromstr}, {tostr})	String	translate chars of {src} in {fromstr}
2407					to chars in {tostr}
2408trunc({expr})			Float	truncate Float {expr}
2409type({name})			Number	type of variable {name}
2410undofile({name})		String	undo file name for {name}
2411undotree()			List	undo file tree
2412uniq({list} [, {func} [, {dict}]])
2413				List	remove adjacent duplicates from a list
2414values({dict})			List	values in {dict}
2415virtcol({expr})			Number	screen column of cursor or mark
2416visualmode([expr])		String	last visual mode used
2417wildmenumode()			Number	whether 'wildmenu' mode is active
2418win_findbuf({bufnr})		List	find windows containing {bufnr}
2419win_getid([{win} [, {tab}]])	Number	get window ID for {win} in {tab}
2420win_gotoid({expr})		Number	go to window with ID {expr}
2421win_id2tabwin({expr})		List	get tab and window nr from window ID
2422win_id2win({expr})		Number	get window nr from window ID
2423winbufnr({nr})			Number	buffer number of window {nr}
2424wincol()			Number	window column of the cursor
2425winheight({nr})			Number	height of window {nr}
2426winline()			Number	window line of the cursor
2427winnr([{expr}])			Number	number of current window
2428winrestcmd()			String	returns command to restore window sizes
2429winrestview({dict})		none	restore view of current window
2430winsaveview()			Dict	save view of current window
2431winwidth({nr})			Number	width of window {nr}
2432wordcount()			Dict	get byte/char/word statistics
2433writefile({list}, {fname} [, {flags}])
2434				Number	write list of lines to file {fname}
2435xor({expr}, {expr})		Number	bitwise XOR
2436
2437
2438abs({expr})							*abs()*
2439		Return the absolute value of {expr}.  When {expr} evaluates to
2440		a |Float| abs() returns a |Float|.  When {expr} can be
2441		converted to a |Number| abs() returns a |Number|.  Otherwise
2442		abs() gives an error message and returns -1.
2443		Examples: >
2444			echo abs(1.456)
2445<			1.456  >
2446			echo abs(-5.456)
2447<			5.456  >
2448			echo abs(-4)
2449<			4
2450		{only available when compiled with the |+float| feature}
2451
2452
2453acos({expr})							*acos()*
2454		Return the arc cosine of {expr} measured in radians, as a
2455		|Float| in the range of [0, pi].
2456		{expr} must evaluate to a |Float| or a |Number| in the range
2457		[-1, 1].
2458		Examples: >
2459			:echo acos(0)
2460<			1.570796 >
2461			:echo acos(-0.5)
2462<			2.094395
2463		{only available when compiled with the |+float| feature}
2464
2465
2466add({list}, {expr})					*add()*
2467		Append the item {expr} to |List| {list}.  Returns the
2468		resulting |List|.  Examples: >
2469			:let alist = add([1, 2, 3], item)
2470			:call add(mylist, "woodstock")
2471<		Note that when {expr} is a |List| it is appended as a single
2472		item.  Use |extend()| to concatenate |Lists|.
2473		Use |insert()| to add an item at another position.
2474
2475
2476and({expr}, {expr})					*and()*
2477		Bitwise AND on the two arguments.  The arguments are converted
2478		to a number.  A List, Dict or Float argument causes an error.
2479		Example: >
2480			:let flag = and(bits, 0x80)
2481
2482
2483append({lnum}, {expr})					*append()*
2484		When {expr} is a |List|: Append each item of the |List| as a
2485		text line below line {lnum} in the current buffer.
2486		Otherwise append {expr} as one text line below line {lnum} in
2487		the current buffer.
2488		{lnum} can be zero to insert a line before the first one.
2489		Returns 1 for failure ({lnum} out of range or out of memory),
2490		0 for success.  Example: >
2491			:let failed = append(line('$'), "# THE END")
2492			:let failed = append(0, ["Chapter 1", "the beginning"])
2493<
2494							*argc()*
2495argc()		The result is the number of files in the argument list of the
2496		current window.  See |arglist|.
2497
2498							*argidx()*
2499argidx()	The result is the current index in the argument list.  0 is
2500		the first file.  argc() - 1 is the last one.  See |arglist|.
2501
2502							*arglistid()*
2503arglistid([{winnr} [, {tabnr}]])
2504		Return the argument list ID.  This is a number which
2505		identifies the argument list being used.  Zero is used for the
2506		global argument list.  See |arglist|.
2507		Return -1 if the arguments are invalid.
2508
2509		Without arguments use the current window.
2510		With {winnr} only use this window in the current tab page.
2511		With {winnr} and {tabnr} use the window in the specified tab
2512		page.
2513		{winnr} can be the window number or the |window-ID|.
2514
2515							*argv()*
2516argv([{nr}])	The result is the {nr}th file in the argument list of the
2517		current window.  See |arglist|.  "argv(0)" is the first one.
2518		Example: >
2519	:let i = 0
2520	:while i < argc()
2521	:  let f = escape(fnameescape(argv(i)), '.')
2522	:  exe 'amenu Arg.' . f . ' :e ' . f . '<CR>'
2523	:  let i = i + 1
2524	:endwhile
2525<		Without the {nr} argument a |List| with the whole |arglist| is
2526		returned.
2527
2528							*assert_equal()*
2529assert_equal({expected}, {actual} [, {msg}])
2530		When {expected} and {actual} are not equal an error message is
2531		added to |v:errors|.
2532		There is no automatic conversion, the String "4" is different
2533		from the Number 4.  And the number 4 is different from the
2534		Float 4.0.  The value of 'ignorecase' is not used here, case
2535		always matters.
2536		When {msg} is omitted an error in the form "Expected
2537		{expected} but got {actual}" is produced.
2538		Example: >
2539	assert_equal('foo', 'bar')
2540<		Will result in a string to be added to |v:errors|:
2541	test.vim line 12: Expected 'foo' but got 'bar' ~
2542
2543assert_exception({error} [, {msg}])			*assert_exception()*
2544		When v:exception does not contain the string {error} an error
2545		message is added to |v:errors|.
2546		This can be used to assert that a command throws an exception.
2547		Using the error number, followed by a colon, avoids problems
2548		with translations: >
2549			try
2550			  commandthatfails
2551			  call assert_false(1, 'command should have failed')
2552			catch
2553			  call assert_exception('E492:')
2554			endtry
2555
2556assert_fails({cmd} [, {error}])					*assert_fails()*
2557		Run {cmd} and add an error message to |v:errors| if it does
2558		NOT produce an error.
2559		When {error} is given it must match in |v:errmsg|.
2560
2561assert_false({actual} [, {msg}])				*assert_false()*
2562		When {actual} is not false an error message is added to
2563		|v:errors|, like with |assert_equal()|.
2564		A value is false when it is zero. When {actual} is not a
2565		number the assert fails.
2566		When {msg} is omitted an error in the form
2567		"Expected False but got {actual}" is produced.
2568
2569assert_inrange({lower}, {upper}, {actual} [, {msg}])	 *assert_inrange()*
2570		This asserts number values.  When {actual}  is lower than
2571		{lower} or higher than {upper} an error message is added to
2572		|v:errors|.
2573		When {msg} is omitted an error in the form
2574		"Expected range {lower} - {upper}, but got {actual}" is
2575		produced.
2576
2577								*assert_match()*
2578assert_match({pattern}, {actual} [, {msg}])
2579		When {pattern} does not match {actual} an error message is
2580		added to |v:errors|.
2581
2582		{pattern} is used as with |=~|: The matching is always done
2583		like 'magic' was set and 'cpoptions' is empty, no matter what
2584		the actual value of 'magic' or 'cpoptions' is.
2585
2586		{actual} is used as a string, automatic conversion applies.
2587		Use "^" and "$" to match with the start and end of the text.
2588		Use both to match the whole text.
2589
2590		When {msg} is omitted an error in the form
2591		"Pattern {pattern} does not match {actual}" is produced.
2592		Example: >
2593	assert_match('^f.*o$', 'foobar')
2594<		Will result in a string to be added to |v:errors|:
2595	test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
2596
2597							*assert_notequal()*
2598assert_notequal({expected}, {actual} [, {msg}])
2599		The opposite of `assert_equal()`: add an error message to
2600		|v:errors| when {expected} and {actual} are equal.
2601
2602							*assert_notmatch()*
2603assert_notmatch({pattern}, {actual} [, {msg}])
2604		The opposite of `assert_match()`: add an error message to
2605		|v:errors| when {pattern} matches {actual}.
2606
2607assert_report({msg})					*assert_report()*
2608		Report a test failure directly, using {msg}.
2609
2610assert_true({actual} [, {msg}])				*assert_true()*
2611		When {actual} is not true an error message is added to
2612		|v:errors|, like with |assert_equal()|.
2613		A value is TRUE when it is a non-zero number.  When {actual}
2614		is not a number the assert fails.
2615		When {msg} is omitted an error in the form "Expected True but
2616		got {actual}" is produced.
2617
2618asin({expr})						*asin()*
2619		Return the arc sine of {expr} measured in radians, as a |Float|
2620		in the range of [-pi/2, pi/2].
2621		{expr} must evaluate to a |Float| or a |Number| in the range
2622		[-1, 1].
2623		Examples: >
2624			:echo asin(0.8)
2625<			0.927295 >
2626			:echo asin(-0.5)
2627<			-0.523599
2628		{only available when compiled with the |+float| feature}
2629
2630
2631atan({expr})						*atan()*
2632		Return the principal value of the arc tangent of {expr}, in
2633		the range [-pi/2, +pi/2] radians, as a |Float|.
2634		{expr} must evaluate to a |Float| or a |Number|.
2635		Examples: >
2636			:echo atan(100)
2637<			1.560797 >
2638			:echo atan(-4.01)
2639<			-1.326405
2640		{only available when compiled with the |+float| feature}
2641
2642
2643atan2({expr1}, {expr2})					*atan2()*
2644		Return the arc tangent of {expr1} / {expr2}, measured in
2645		radians, as a |Float| in the range [-pi, pi].
2646		{expr1} and {expr2} must evaluate to a |Float| or a |Number|.
2647		Examples: >
2648			:echo atan2(-1, 1)
2649<			-0.785398 >
2650			:echo atan2(1, -1)
2651<			2.356194
2652		{only available when compiled with the |+float| feature}
2653
2654balloon_show({msg})					*balloon_show()*
2655		Show {msg} inside the balloon.
2656		Example: >
2657			func GetBalloonContent()
2658			   " initiate getting the content
2659			   return ''
2660			endfunc
2661			set balloonexpr=GetBalloonContent()
2662
2663			func BalloonCallback(result)
2664			  call balloon_show(a:result)
2665			endfunc
2666<
2667		The intended use is that fetching the content of the balloon
2668		is initiated from 'balloonexpr'.  It will invoke an
2669		asynchronous method, in which a callback invokes
2670		balloon_show().  The 'balloonexpr' itself can return an
2671		empty string or a placeholder.
2672
2673		When showing a balloon is not possible nothing happens, no
2674		error message.
2675		{only available when compiled with the +balloon_eval feature}
2676
2677							*browse()*
2678browse({save}, {title}, {initdir}, {default})
2679		Put up a file requester.  This only works when "has("browse")"
2680		returns |TRUE| (only in some GUI versions).
2681		The input fields are:
2682		    {save}	when |TRUE|, select file to write
2683		    {title}	title for the requester
2684		    {initdir}	directory to start browsing in
2685		    {default}	default file name
2686		When the "Cancel" button is hit, something went wrong, or
2687		browsing is not possible, an empty string is returned.
2688
2689							*browsedir()*
2690browsedir({title}, {initdir})
2691		Put up a directory requester.  This only works when
2692		"has("browse")" returns |TRUE| (only in some GUI versions).
2693		On systems where a directory browser is not supported a file
2694		browser is used.  In that case: select a file in the directory
2695		to be used.
2696		The input fields are:
2697		    {title}	title for the requester
2698		    {initdir}	directory to start browsing in
2699		When the "Cancel" button is hit, something went wrong, or
2700		browsing is not possible, an empty string is returned.
2701
2702bufexists({expr})					*bufexists()*
2703		The result is a Number, which is |TRUE| if a buffer called
2704		{expr} exists.
2705		If the {expr} argument is a number, buffer numbers are used.
2706		If the {expr} argument is a string it must match a buffer name
2707		exactly.  The name can be:
2708		- Relative to the current directory.
2709		- A full path.
2710		- The name of a buffer with 'buftype' set to "nofile".
2711		- A URL name.
2712		Unlisted buffers will be found.
2713		Note that help files are listed by their short name in the
2714		output of |:buffers|, but bufexists() requires using their
2715		long name to be able to find them.
2716		bufexists() may report a buffer exists, but to use the name
2717		with a |:buffer| command you may need to use |expand()|.  Esp
2718		for MS-Windows 8.3 names in the form "c:\DOCUME~1"
2719		Use "bufexists(0)" to test for the existence of an alternate
2720		file name.
2721							*buffer_exists()*
2722		Obsolete name: buffer_exists().
2723
2724buflisted({expr})					*buflisted()*
2725		The result is a Number, which is |TRUE| if a buffer called
2726		{expr} exists and is listed (has the 'buflisted' option set).
2727		The {expr} argument is used like with |bufexists()|.
2728
2729bufloaded({expr})					*bufloaded()*
2730		The result is a Number, which is |TRUE| if a buffer called
2731		{expr} exists and is loaded (shown in a window or hidden).
2732		The {expr} argument is used like with |bufexists()|.
2733
2734bufname({expr})						*bufname()*
2735		The result is the name of a buffer, as it is displayed by the
2736		":ls" command.
2737		If {expr} is a Number, that buffer number's name is given.
2738		Number zero is the alternate buffer for the current window.
2739		If {expr} is a String, it is used as a |file-pattern| to match
2740		with the buffer names.  This is always done like 'magic' is
2741		set and 'cpoptions' is empty.  When there is more than one
2742		match an empty string is returned.
2743		"" or "%" can be used for the current buffer, "#" for the
2744		alternate buffer.
2745		A full match is preferred, otherwise a match at the start, end
2746		or middle of the buffer name is accepted.  If you only want a
2747		full match then put "^" at the start and "$" at the end of the
2748		pattern.
2749		Listed buffers are found first.  If there is a single match
2750		with a listed buffer, that one is returned.  Next unlisted
2751		buffers are searched for.
2752		If the {expr} is a String, but you want to use it as a buffer
2753		number, force it to be a Number by adding zero to it: >
2754			:echo bufname("3" + 0)
2755<		If the buffer doesn't exist, or doesn't have a name, an empty
2756		string is returned. >
2757	bufname("#")		alternate buffer name
2758	bufname(3)		name of buffer 3
2759	bufname("%")		name of current buffer
2760	bufname("file2")	name of buffer where "file2" matches.
2761<							*buffer_name()*
2762		Obsolete name: buffer_name().
2763
2764							*bufnr()*
2765bufnr({expr} [, {create}])
2766		The result is the number of a buffer, as it is displayed by
2767		the ":ls" command.  For the use of {expr}, see |bufname()|
2768		above.
2769		If the buffer doesn't exist, -1 is returned.  Or, if the
2770		{create} argument is present and not zero, a new, unlisted,
2771		buffer is created and its number is returned.
2772		bufnr("$") is the last buffer: >
2773	:let last_buffer = bufnr("$")
2774<		The result is a Number, which is the highest buffer number
2775		of existing buffers.  Note that not all buffers with a smaller
2776		number necessarily exist, because ":bwipeout" may have removed
2777		them.  Use bufexists() to test for the existence of a buffer.
2778							*buffer_number()*
2779		Obsolete name: buffer_number().
2780							*last_buffer_nr()*
2781		Obsolete name for bufnr("$"): last_buffer_nr().
2782
2783bufwinid({expr})					*bufwinid()*
2784		The result is a Number, which is the |window-ID| of the first
2785		window associated with buffer {expr}.  For the use of {expr},
2786		see |bufname()| above.  If buffer {expr} doesn't exist or
2787		there is no such window, -1 is returned.  Example: >
2788
2789	echo "A window containing buffer 1 is " . (bufwinid(1))
2790<
2791		Only deals with the current tab page.
2792
2793bufwinnr({expr})					*bufwinnr()*
2794		The result is a Number, which is the number of the first
2795		window associated with buffer {expr}.  For the use of {expr},
2796		see |bufname()| above.  If buffer {expr} doesn't exist or
2797		there is no such window, -1 is returned.  Example: >
2798
2799	echo "A window containing buffer 1 is " . (bufwinnr(1))
2800
2801<		The number can be used with |CTRL-W_w| and ":wincmd w"
2802		|:wincmd|.
2803		Only deals with the current tab page.
2804
2805byte2line({byte})					*byte2line()*
2806		Return the line number that contains the character at byte
2807		count {byte} in the current buffer.  This includes the
2808		end-of-line character, depending on the 'fileformat' option
2809		for the current buffer.  The first character has byte count
2810		one.
2811		Also see |line2byte()|, |go| and |:goto|.
2812		{not available when compiled without the |+byte_offset|
2813		feature}
2814
2815byteidx({expr}, {nr})					*byteidx()*
2816		Return byte index of the {nr}'th character in the string
2817		{expr}.  Use zero for the first character, it returns zero.
2818		This function is only useful when there are multibyte
2819		characters, otherwise the returned value is equal to {nr}.
2820		Composing characters are not counted separately, their byte
2821		length is added to the preceding base character.  See
2822		|byteidxcomp()| below for counting composing characters
2823		separately.
2824		Example : >
2825			echo matchstr(str, ".", byteidx(str, 3))
2826<		will display the fourth character.  Another way to do the
2827		same: >
2828			let s = strpart(str, byteidx(str, 3))
2829			echo strpart(s, 0, byteidx(s, 1))
2830<		Also see |strgetchar()| and |strcharpart()|.
2831
2832		If there are less than {nr} characters -1 is returned.
2833		If there are exactly {nr} characters the length of the string
2834		in bytes is returned.
2835
2836byteidxcomp({expr}, {nr})					*byteidxcomp()*
2837		Like byteidx(), except that a composing character is counted
2838		as a separate character.  Example: >
2839			let s = 'e' . nr2char(0x301)
2840			echo byteidx(s, 1)
2841			echo byteidxcomp(s, 1)
2842			echo byteidxcomp(s, 2)
2843<		The first and third echo result in 3 ('e' plus composing
2844		character is 3 bytes), the second echo results in 1 ('e' is
2845		one byte).
2846		Only works different from byteidx() when 'encoding' is set to
2847		a Unicode encoding.
2848
2849call({func}, {arglist} [, {dict}])			*call()* *E699*
2850		Call function {func} with the items in |List| {arglist} as
2851		arguments.
2852		{func} can either be a |Funcref| or the name of a function.
2853		a:firstline and a:lastline are set to the cursor line.
2854		Returns the return value of the called function.
2855		{dict} is for functions with the "dict" attribute.  It will be
2856		used to set the local variable "self". |Dictionary-function|
2857
2858ceil({expr})							*ceil()*
2859		Return the smallest integral value greater than or equal to
2860		{expr} as a |Float| (round up).
2861		{expr} must evaluate to a |Float| or a |Number|.
2862		Examples: >
2863			echo ceil(1.456)
2864<			2.0  >
2865			echo ceil(-5.456)
2866<			-5.0  >
2867			echo ceil(4.0)
2868<			4.0
2869		{only available when compiled with the |+float| feature}
2870
2871ch_canread({handle})						*ch_canread()*
2872		Return non-zero when there is something to read from {handle}.
2873		{handle} can be a Channel or a Job that has a Channel.
2874
2875		This is useful to read from a channel at a convenient time,
2876		e.g. from a timer.
2877
2878		Note that messages are dropped when the channel does not have
2879		a callback.  Add a close callback to avoid that.
2880
2881		{only available when compiled with the |+channel| feature}
2882
2883ch_close({handle})						*ch_close()*
2884		Close {handle}.  See |channel-close|.
2885		{handle} can be a Channel or a Job that has a Channel.
2886		A close callback is not invoked.
2887
2888		{only available when compiled with the |+channel| feature}
2889
2890ch_close_in({handle})						*ch_close_in()*
2891		Close the "in" part of {handle}.  See |channel-close-in|.
2892		{handle} can be a Channel or a Job that has a Channel.
2893		A close callback is not invoked.
2894
2895		{only available when compiled with the |+channel| feature}
2896
2897ch_evalexpr({handle}, {expr} [, {options}])			*ch_evalexpr()*
2898		Send {expr} over {handle}.  The {expr} is encoded
2899		according to the type of channel.  The function cannot be used
2900		with a raw channel.  See |channel-use|.
2901		{handle} can be a Channel or a Job that has a Channel.
2902								*E917*
2903		{options} must be a Dictionary.  It must not have a "callback"
2904		entry.  It can have a "timeout" entry to specify the timeout
2905		for this specific request.
2906
2907		ch_evalexpr() waits for a response and returns the decoded
2908		expression.  When there is an error or timeout it returns an
2909		empty string.
2910
2911		{only available when compiled with the |+channel| feature}
2912
2913ch_evalraw({handle}, {string} [, {options}])		*ch_evalraw()*
2914		Send {string} over {handle}.
2915		{handle} can be a Channel or a Job that has a Channel.
2916
2917		Works like |ch_evalexpr()|, but does not encode the request or
2918		decode the response.  The caller is responsible for the
2919		correct contents.  Also does not add a newline for a channel
2920		in NL mode, the caller must do that.  The NL in the response
2921		is removed.
2922		See |channel-use|.
2923
2924		{only available when compiled with the |+channel| feature}
2925
2926ch_getbufnr({handle}, {what})				 *ch_getbufnr()*
2927		Get the buffer number that {handle} is using for {what}.
2928		{handle} can be a Channel or a Job that has a Channel.
2929		{what} can be "err" for stderr, "out" for stdout or empty for
2930		socket output.
2931		Returns -1 when there is no buffer.
2932		{only available when compiled with the |+channel| feature}
2933
2934ch_getjob({channel})						*ch_getjob()*
2935		Get the Job associated with {channel}.
2936		If there is no job calling |job_status()| on the returned Job
2937		will result in "fail".
2938
2939		{only available when compiled with the |+channel| and
2940		|+job| features}
2941
2942ch_info({handle})						*ch_info()*
2943		Returns a Dictionary with information about {handle}.  The
2944		items are:
2945		   "id"		  number of the channel
2946		   "status"	  "open", "buffered" or "closed", like
2947				  ch_status()
2948		When opened with ch_open():
2949		   "hostname"	  the hostname of the address
2950		   "port"	  the port of the address
2951		   "sock_status"  "open" or "closed"
2952		   "sock_mode"	  "NL", "RAW", "JSON" or "JS"
2953		   "sock_io"	  "socket"
2954		   "sock_timeout" timeout in msec
2955		When opened with job_start():
2956		   "out_status"	  "open", "buffered" or "closed"
2957		   "out_mode"	  "NL", "RAW", "JSON" or "JS"
2958		   "out_io"	  "null", "pipe", "file" or "buffer"
2959		   "out_timeout"  timeout in msec
2960		   "err_status"	  "open", "buffered" or "closed"
2961		   "err_mode"	  "NL", "RAW", "JSON" or "JS"
2962		   "err_io"	  "out", "null", "pipe", "file" or "buffer"
2963		   "err_timeout"  timeout in msec
2964		   "in_status"	  "open" or "closed"
2965		   "in_mode"	  "NL", "RAW", "JSON" or "JS"
2966		   "in_io"	  "null", "pipe", "file" or "buffer"
2967		   "in_timeout"	  timeout in msec
2968
2969ch_log({msg} [, {handle}])					*ch_log()*
2970		Write {msg} in the channel log file, if it was opened with
2971		|ch_logfile()|.
2972		When {handle} is passed the channel number is used for the
2973		message.
2974		{handle} can be a Channel or a Job that has a Channel.  The
2975		Channel must be open for the channel number to be used.
2976
2977ch_logfile({fname} [, {mode}])					*ch_logfile()*
2978		Start logging channel activity to {fname}.
2979		When {fname} is an empty string: stop logging.
2980
2981		When {mode} is omitted or "a" append to the file.
2982		When {mode} is "w" start with an empty file.
2983
2984		The file is flushed after every message, on Unix you can use
2985		"tail -f" to see what is going on in real time.
2986
2987
2988ch_open({address} [, {options}])				*ch_open()*
2989		Open a channel to {address}.  See |channel|.
2990		Returns a Channel.  Use |ch_status()| to check for failure.
2991
2992		{address} has the form "hostname:port", e.g.,
2993		"localhost:8765".
2994
2995		If {options} is given it must be a |Dictionary|.
2996		See |channel-open-options|.
2997
2998		{only available when compiled with the |+channel| feature}
2999
3000ch_read({handle} [, {options}])					*ch_read()*
3001		Read from {handle} and return the received message.
3002		{handle} can be a Channel or a Job that has a Channel.
3003		See |channel-more|.
3004		{only available when compiled with the |+channel| feature}
3005
3006ch_readraw({handle} [, {options}])			*ch_readraw()*
3007		Like ch_read() but for a JS and JSON channel does not decode
3008		the message.  See |channel-more|.
3009		{only available when compiled with the |+channel| feature}
3010
3011ch_sendexpr({handle}, {expr} [, {options}])			*ch_sendexpr()*
3012		Send {expr} over {handle}.  The {expr} is encoded
3013		according to the type of channel.  The function cannot be used
3014		with a raw channel.
3015		See |channel-use|.				*E912*
3016		{handle} can be a Channel or a Job that has a Channel.
3017
3018		{only available when compiled with the |+channel| feature}
3019
3020ch_sendraw({handle}, {string} [, {options}])		*ch_sendraw()*
3021		Send {string} over {handle}.
3022		Works like |ch_sendexpr()|, but does not encode the request or
3023		decode the response.  The caller is responsible for the
3024		correct contents.  Also does not add a newline for a channel
3025		in NL mode, the caller must do that.  The NL in the response
3026		is removed.
3027		See |channel-use|.
3028
3029		{only available when compiled with the |+channel| feature}
3030
3031ch_setoptions({handle}, {options})			*ch_setoptions()*
3032		Set options on {handle}:
3033			"callback"	the channel callback
3034			"timeout"	default read timeout in msec
3035			"mode"		mode for the whole channel
3036		See |ch_open()| for more explanation.
3037		{handle} can be a Channel or a Job that has a Channel.
3038
3039		Note that changing the mode may cause queued messages to be
3040		lost.
3041
3042		These options cannot be changed:
3043			"waittime"	only applies to |ch_open()|
3044
3045ch_status({handle} [, {options}])				*ch_status()*
3046		Return the status of {handle}:
3047			"fail"		failed to open the channel
3048			"open"		channel can be used
3049			"buffered"	channel can be read, not written to
3050			"closed"	channel can not be used
3051		{handle} can be a Channel or a Job that has a Channel.
3052		"buffered" is used when the channel was closed but there is
3053		still data that can be obtained with |ch_read()|.
3054
3055		If {options} is given it can contain a "part" entry to specify
3056		the part of the channel to return the status for: "out" or
3057		"err".  For example, to get the error status: >
3058			ch_status(job, {"part": "err"})
3059<
3060changenr()						*changenr()*
3061		Return the number of the most recent change.  This is the same
3062		number as what is displayed with |:undolist| and can be used
3063		with the |:undo| command.
3064		When a change was made it is the number of that change.  After
3065		redo it is the number of the redone change.  After undo it is
3066		one less than the number of the undone change.
3067
3068char2nr({expr}[, {utf8}])					*char2nr()*
3069		Return number value of the first char in {expr}.  Examples: >
3070			char2nr(" ")		returns 32
3071			char2nr("ABC")		returns 65
3072<		When {utf8} is omitted or zero, the current 'encoding' is used.
3073		Example for "utf-8": >
3074			char2nr("�")		returns 225
3075			char2nr("�"[0])		returns 195
3076<		With {utf8} set to 1, always treat as utf-8 characters.
3077		A combining character is a separate character.
3078		|nr2char()| does the opposite.
3079
3080cindent({lnum})						*cindent()*
3081		Get the amount of indent for line {lnum} according the C
3082		indenting rules, as with 'cindent'.
3083		The indent is counted in spaces, the value of 'tabstop' is
3084		relevant.  {lnum} is used just like in |getline()|.
3085		When {lnum} is invalid or Vim was not compiled the |+cindent|
3086		feature, -1 is returned.
3087		See |C-indenting|.
3088
3089clearmatches()						*clearmatches()*
3090		Clears all matches previously defined by |matchadd()| and the
3091		|:match| commands.
3092
3093							*col()*
3094col({expr})	The result is a Number, which is the byte index of the column
3095		position given with {expr}.  The accepted positions are:
3096		    .	    the cursor position
3097		    $	    the end of the cursor line (the result is the
3098			    number of bytes in the cursor line plus one)
3099		    'x	    position of mark x (if the mark is not set, 0 is
3100			    returned)
3101		    v       In Visual mode: the start of the Visual area (the
3102			    cursor is the end).  When not in Visual mode
3103			    returns the cursor position.  Differs from |'<| in
3104			    that it's updated right away.
3105		Additionally {expr} can be [lnum, col]: a |List| with the line
3106		and column number. Most useful when the column is "$", to get
3107		the last column of a specific line.  When "lnum" or "col" is
3108		out of range then col() returns zero.
3109		To get the line number use |line()|.  To get both use
3110		|getpos()|.
3111		For the screen column position use |virtcol()|.
3112		Note that only marks in the current file can be used.
3113		Examples: >
3114			col(".")		column of cursor
3115			col("$")		length of cursor line plus one
3116			col("'t")		column of mark t
3117			col("'" . markname)	column of mark markname
3118<		The first column is 1.  0 is returned for an error.
3119		For an uppercase mark the column may actually be in another
3120		buffer.
3121		For the cursor position, when 'virtualedit' is active, the
3122		column is one higher if the cursor is after the end of the
3123		line.  This can be used to obtain the column in Insert mode: >
3124			:imap <F2> <C-O>:let save_ve = &ve<CR>
3125				\<C-O>:set ve=all<CR>
3126				\<C-O>:echo col(".") . "\n" <Bar>
3127				\let &ve = save_ve<CR>
3128<
3129
3130complete({startcol}, {matches})			*complete()* *E785*
3131		Set the matches for Insert mode completion.
3132		Can only be used in Insert mode.  You need to use a mapping
3133		with CTRL-R = (see |i_CTRL-R|).  It does not work after CTRL-O
3134		or with an expression mapping.
3135		{startcol} is the byte offset in the line where the completed
3136		text start.  The text up to the cursor is the original text
3137		that will be replaced by the matches.  Use col('.') for an
3138		empty string.  "col('.') - 1" will replace one character by a
3139		match.
3140		{matches} must be a |List|.  Each |List| item is one match.
3141		See |complete-items| for the kind of items that are possible.
3142		Note that the after calling this function you need to avoid
3143		inserting anything that would cause completion to stop.
3144		The match can be selected with CTRL-N and CTRL-P as usual with
3145		Insert mode completion.  The popup menu will appear if
3146		specified, see |ins-completion-menu|.
3147		Example: >
3148	inoremap <F5> <C-R>=ListMonths()<CR>
3149
3150	func! ListMonths()
3151	  call complete(col('.'), ['January', 'February', 'March',
3152		\ 'April', 'May', 'June', 'July', 'August', 'September',
3153		\ 'October', 'November', 'December'])
3154	  return ''
3155	endfunc
3156<		This isn't very useful, but it shows how it works.  Note that
3157		an empty string is returned to avoid a zero being inserted.
3158
3159complete_add({expr})				*complete_add()*
3160		Add {expr} to the list of matches.  Only to be used by the
3161		function specified with the 'completefunc' option.
3162		Returns 0 for failure (empty string or out of memory),
3163		1 when the match was added, 2 when the match was already in
3164		the list.
3165		See |complete-functions| for an explanation of {expr}.  It is
3166		the same as one item in the list that 'omnifunc' would return.
3167
3168complete_check()				*complete_check()*
3169		Check for a key typed while looking for completion matches.
3170		This is to be used when looking for matches takes some time.
3171		Returns |TRUE| when searching for matches is to be aborted,
3172		zero otherwise.
3173		Only to be used by the function specified with the
3174		'completefunc' option.
3175
3176						*confirm()*
3177confirm({msg} [, {choices} [, {default} [, {type}]]])
3178		Confirm() offers the user a dialog, from which a choice can be
3179		made.  It returns the number of the choice.  For the first
3180		choice this is 1.
3181		Note: confirm() is only supported when compiled with dialog
3182		support, see |+dialog_con| and |+dialog_gui|.
3183
3184		{msg} is displayed in a |dialog| with {choices} as the
3185		alternatives.  When {choices} is missing or empty, "&OK" is
3186		used (and translated).
3187		{msg} is a String, use '\n' to include a newline.  Only on
3188		some systems the string is wrapped when it doesn't fit.
3189
3190		{choices} is a String, with the individual choices separated
3191		by '\n', e.g. >
3192			confirm("Save changes?", "&Yes\n&No\n&Cancel")
3193<		The letter after the '&' is the shortcut key for that choice.
3194		Thus you can type 'c' to select "Cancel".  The shortcut does
3195		not need to be the first letter: >
3196			confirm("file has been modified", "&Save\nSave &All")
3197<		For the console, the first letter of each choice is used as
3198		the default shortcut key.
3199
3200		The optional {default} argument is the number of the choice
3201		that is made if the user hits <CR>.  Use 1 to make the first
3202		choice the default one.  Use 0 to not set a default.  If
3203		{default} is omitted, 1 is used.
3204
3205		The optional {type} argument gives the type of dialog.  This
3206		is only used for the icon of the GTK, Mac, Motif and Win32
3207		GUI.  It can be one of these values: "Error", "Question",
3208		"Info", "Warning" or "Generic".  Only the first character is
3209		relevant.  When {type} is omitted, "Generic" is used.
3210
3211		If the user aborts the dialog by pressing <Esc>, CTRL-C,
3212		or another valid interrupt key, confirm() returns 0.
3213
3214		An example: >
3215   :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2)
3216   :if choice == 0
3217   :	echo "make up your mind!"
3218   :elseif choice == 3
3219   :	echo "tasteful"
3220   :else
3221   :	echo "I prefer bananas myself."
3222   :endif
3223<		In a GUI dialog, buttons are used.  The layout of the buttons
3224		depends on the 'v' flag in 'guioptions'.  If it is included,
3225		the buttons are always put vertically.  Otherwise,  confirm()
3226		tries to put the buttons in one horizontal line.  If they
3227		don't fit, a vertical layout is used anyway.  For some systems
3228		the horizontal layout is always used.
3229
3230							*copy()*
3231copy({expr})	Make a copy of {expr}.  For Numbers and Strings this isn't
3232		different from using {expr} directly.
3233		When {expr} is a |List| a shallow copy is created.  This means
3234		that the original |List| can be changed without changing the
3235		copy, and vice versa.  But the items are identical, thus
3236		changing an item changes the contents of both |Lists|.
3237		A |Dictionary| is copied in a similar way as a |List|.
3238		Also see |deepcopy()|.
3239
3240cos({expr})						*cos()*
3241		Return the cosine of {expr}, measured in radians, as a |Float|.
3242		{expr} must evaluate to a |Float| or a |Number|.
3243		Examples: >
3244			:echo cos(100)
3245<			0.862319 >
3246			:echo cos(-4.01)
3247<			-0.646043
3248		{only available when compiled with the |+float| feature}
3249
3250
3251cosh({expr})						*cosh()*
3252		Return the hyperbolic cosine of {expr} as a |Float| in the range
3253		[1, inf].
3254		{expr} must evaluate to a |Float| or a |Number|.
3255		Examples: >
3256			:echo cosh(0.5)
3257<			1.127626 >
3258			:echo cosh(-0.5)
3259<			-1.127626
3260		{only available when compiled with the |+float| feature}
3261
3262
3263count({comp}, {expr} [, {ic} [, {start}]])			*count()*
3264		Return the number of times an item with value {expr} appears
3265		in |String|, |List| or |Dictionary| {comp}.
3266
3267		If {start} is given then start with the item with this index.
3268		{start} can only be used with a |List|.
3269
3270		When {ic} is given and it's |TRUE| then case is ignored.
3271
3272		When {comp} is a string then the number of not overlapping
3273		occurences of {expr} is returned.
3274
3275
3276							*cscope_connection()*
3277cscope_connection([{num} , {dbpath} [, {prepend}]])
3278		Checks for the existence of a |cscope| connection.  If no
3279		parameters are specified, then the function returns:
3280			0, if cscope was not available (not compiled in), or
3281			   if there are no cscope connections;
3282			1, if there is at least one cscope connection.
3283
3284		If parameters are specified, then the value of {num}
3285		determines how existence of a cscope connection is checked:
3286
3287		{num}	Description of existence check
3288		-----	------------------------------
3289		0	Same as no parameters (e.g., "cscope_connection()").
3290		1	Ignore {prepend}, and use partial string matches for
3291			{dbpath}.
3292		2	Ignore {prepend}, and use exact string matches for
3293			{dbpath}.
3294		3	Use {prepend}, use partial string matches for both
3295			{dbpath} and {prepend}.
3296		4	Use {prepend}, use exact string matches for both
3297			{dbpath} and {prepend}.
3298
3299		Note: All string comparisons are case sensitive!
3300
3301		Examples.  Suppose we had the following (from ":cs show"): >
3302
3303  # pid    database name			prepend path
3304  0 27664  cscope.out				/usr/local
3305<
3306		Invocation					Return Val ~
3307		----------					---------- >
3308		cscope_connection()					1
3309		cscope_connection(1, "out")				1
3310		cscope_connection(2, "out")				0
3311		cscope_connection(3, "out")				0
3312		cscope_connection(3, "out", "local")			1
3313		cscope_connection(4, "out")				0
3314		cscope_connection(4, "out", "local")			0
3315		cscope_connection(4, "cscope.out", "/usr/local")	1
3316<
3317cursor({lnum}, {col} [, {off}])				*cursor()*
3318cursor({list})
3319		Positions the cursor at the column (byte count) {col} in the
3320		line {lnum}.  The first column is one.
3321
3322		When there is one argument {list} this is used as a |List|
3323		with two, three or four item:
3324			[{lnum}, {col}]
3325			[{lnum}, {col}, {off}]
3326			[{lnum}, {col}, {off}, {curswant}]
3327		This is like the return value of |getpos()| or |getcurpos()|,
3328		but without the first item.
3329
3330		Does not change the jumplist.
3331		If {lnum} is greater than the number of lines in the buffer,
3332		the cursor will be positioned at the last line in the buffer.
3333		If {lnum} is zero, the cursor will stay in the current line.
3334		If {col} is greater than the number of bytes in the line,
3335		the cursor will be positioned at the last character in the
3336		line.
3337		If {col} is zero, the cursor will stay in the current column.
3338		If {curswant} is given it is used to set the preferred column
3339		for vertical movement.  Otherwise {col} is used.
3340
3341		When 'virtualedit' is used {off} specifies the offset in
3342		screen columns from the start of the character.  E.g., a
3343		position within a <Tab> or after the last character.
3344		Returns 0 when the position could be set, -1 otherwise.
3345
3346
3347deepcopy({expr}[, {noref}])				*deepcopy()* *E698*
3348		Make a copy of {expr}.  For Numbers and Strings this isn't
3349		different from using {expr} directly.
3350		When {expr} is a |List| a full copy is created.  This means
3351		that the original |List| can be changed without changing the
3352		copy, and vice versa.  When an item is a |List| or
3353		|Dictionary|, a copy for it is made, recursively.  Thus
3354		changing an item in the copy does not change the contents of
3355		the original |List|.
3356		A |Dictionary| is copied in a similar way as a |List|.
3357		When {noref} is omitted or zero a contained |List| or
3358		|Dictionary| is only copied once.  All references point to
3359		this single copy.  With {noref} set to 1 every occurrence of a
3360		|List| or |Dictionary| results in a new copy.  This also means
3361		that a cyclic reference causes deepcopy() to fail.
3362								*E724*
3363		Nesting is possible up to 100 levels.  When there is an item
3364		that refers back to a higher level making a deep copy with
3365		{noref} set to 1 will fail.
3366		Also see |copy()|.
3367
3368delete({fname} [, {flags}])					*delete()*
3369		Without {flags} or with {flags} empty: Deletes the file by the
3370		name {fname}.  This also works when {fname} is a symbolic link.
3371
3372		When {flags} is "d": Deletes the directory by the name
3373		{fname}.  This fails when directory {fname} is not empty.
3374
3375		When {flags} is "rf": Deletes the directory by the name
3376		{fname} and everything in it, recursively.  BE CAREFUL!
3377		Note: on MS-Windows it is not possible to delete a directory
3378		that is being used.
3379
3380		A symbolic link itself is deleted, not what it points to.
3381
3382		The result is a Number, which is 0 if the delete operation was
3383		successful and -1 when the deletion failed or partly failed.
3384
3385		Use |remove()| to delete an item from a |List|.
3386		To delete a line from the buffer use |:delete|.  Use |:exe|
3387		when the line number is in a variable.
3388
3389							*did_filetype()*
3390did_filetype()	Returns |TRUE| when autocommands are being executed and the
3391		FileType event has been triggered at least once.  Can be used
3392		to avoid triggering the FileType event again in the scripts
3393		that detect the file type. |FileType|
3394		Returns |FALSE| when `:setf FALLBACK` was used.
3395		When editing another file, the counter is reset, thus this
3396		really checks if the FileType event has been triggered for the
3397		current buffer.  This allows an autocommand that starts
3398		editing another buffer to set 'filetype' and load a syntax
3399		file.
3400
3401diff_filler({lnum})					*diff_filler()*
3402		Returns the number of filler lines above line {lnum}.
3403		These are the lines that were inserted at this point in
3404		another diff'ed window.  These filler lines are shown in the
3405		display but don't exist in the buffer.
3406		{lnum} is used like with |getline()|.  Thus "." is the current
3407		line, "'m" mark m, etc.
3408		Returns 0 if the current window is not in diff mode.
3409
3410diff_hlID({lnum}, {col})				*diff_hlID()*
3411		Returns the highlight ID for diff mode at line {lnum} column
3412		{col} (byte index).  When the current line does not have a
3413		diff change zero is returned.
3414		{lnum} is used like with |getline()|.  Thus "." is the current
3415		line, "'m" mark m, etc.
3416		{col} is 1 for the leftmost column, {lnum} is 1 for the first
3417		line.
3418		The highlight ID can be used with |synIDattr()| to obtain
3419		syntax information about the highlighting.
3420
3421empty({expr})						*empty()*
3422		Return the Number 1 if {expr} is empty, zero otherwise.
3423		- A |List| or |Dictionary| is empty when it does not have any
3424		  items.
3425		- A Number and Float is empty when its value is zero.
3426		- |v:false|, |v:none| and |v:null| are empty, |v:true| is not.
3427		- A Job is empty when it failed to start.
3428		- A Channel is empty when it is closed.
3429
3430		For a long |List| this is much faster than comparing the
3431		length with zero.
3432
3433escape({string}, {chars})				*escape()*
3434		Escape the characters in {chars} that occur in {string} with a
3435		backslash.  Example: >
3436			:echo escape('c:\program files\vim', ' \')
3437<		results in: >
3438			c:\\program\ files\\vim
3439<		Also see |shellescape()|.
3440
3441							*eval()*
3442eval({string})	Evaluate {string} and return the result.  Especially useful to
3443		turn the result of |string()| back into the original value.
3444		This works for Numbers, Floats, Strings and composites of
3445		them.  Also works for |Funcref|s that refer to existing
3446		functions.
3447
3448eventhandler()						*eventhandler()*
3449		Returns 1 when inside an event handler.  That is that Vim got
3450		interrupted while waiting for the user to type a character,
3451		e.g., when dropping a file on Vim.  This means interactive
3452		commands cannot be used.  Otherwise zero is returned.
3453
3454executable({expr})					*executable()*
3455		This function checks if an executable with the name {expr}
3456		exists.  {expr} must be the name of the program without any
3457		arguments.
3458		executable() uses the value of $PATH and/or the normal
3459		searchpath for programs.		*PATHEXT*
3460		On MS-DOS and MS-Windows the ".exe", ".bat", etc. can
3461		optionally be included.  Then the extensions in $PATHEXT are
3462		tried.  Thus if "foo.exe" does not exist, "foo.exe.bat" can be
3463		found.  If $PATHEXT is not set then ".exe;.com;.bat;.cmd" is
3464		used.  A dot by itself can be used in $PATHEXT to try using
3465		the name without an extension.  When 'shell' looks like a
3466		Unix shell, then the name is also tried without adding an
3467		extension.
3468		On MS-DOS and MS-Windows it only checks if the file exists and
3469		is not a directory, not if it's really executable.
3470		On MS-Windows an executable in the same directory as Vim is
3471		always found.  Since this directory is added to $PATH it
3472		should also work to execute it |win32-PATH|.
3473		The result is a Number:
3474			1	exists
3475			0	does not exist
3476			-1	not implemented on this system
3477
3478execute({command} [, {silent}])					*execute()*
3479		Execute an Ex command or commands and return the output as a
3480		string.
3481		{command} can be a string or a List.  In case of a List the
3482		lines are executed one by one.
3483		This is equivalent to: >
3484			redir => var
3485			{command}
3486			redir END
3487<
3488		The optional {silent} argument can have these values:
3489			""		no `:silent` used
3490			"silent"	`:silent` used
3491			"silent!"	`:silent!` used
3492		The default is "silent".  Note that with "silent!", unlike
3493		`:redir`, error messages are dropped.  When using an external
3494		command the screen may be messed up, use `system()` instead.
3495							*E930*
3496		It is not possible to use `:redir` anywhere in {command}.
3497
3498		To get a list of lines use |split()| on the result: >
3499			split(execute('args'), "\n")
3500
3501<		When used recursively the output of the recursive call is not
3502		included in the output of the higher level call.
3503
3504exepath({expr})						*exepath()*
3505		If {expr} is an executable and is either an absolute path, a
3506		relative path or found in $PATH, return the full path.
3507		Note that the current directory is used when {expr} starts
3508		with "./", which may be a problem for Vim: >
3509			echo exepath(v:progpath)
3510<		If {expr} cannot be found in $PATH or is not executable then
3511		an empty string is returned.
3512
3513							*exists()*
3514exists({expr})	The result is a Number, which is |TRUE| if {expr} is defined,
3515		zero otherwise.
3516
3517		For checking for a supported feature use |has()|.
3518		For checking if a file exists use |filereadable()|.
3519
3520		The {expr} argument is a string, which contains one of these:
3521			&option-name	Vim option (only checks if it exists,
3522					not if it really works)
3523			+option-name	Vim option that works.
3524			$ENVNAME	environment variable (could also be
3525					done by comparing with an empty
3526					string)
3527			*funcname	built-in function (see |functions|)
3528					or user defined function (see
3529					|user-functions|). Also works for a
3530					variable that is a Funcref.
3531			varname		internal variable (see
3532					|internal-variables|).  Also works
3533					for |curly-braces-names|, |Dictionary|
3534					entries, |List| items, etc.  Beware
3535					that evaluating an index may cause an
3536					error message for an invalid
3537					expression.  E.g.: >
3538					   :let l = [1, 2, 3]
3539					   :echo exists("l[5]")
3540<					   0 >
3541					   :echo exists("l[xx]")
3542<					   E121: Undefined variable: xx
3543					   0
3544			:cmdname	Ex command: built-in command, user
3545					command or command modifier |:command|.
3546					Returns:
3547					1  for match with start of a command
3548					2  full match with a command
3549					3  matches several user commands
3550					To check for a supported command
3551					always check the return value to be 2.
3552			:2match		The |:2match| command.
3553			:3match		The |:3match| command.
3554			#event		autocommand defined for this event
3555			#event#pattern	autocommand defined for this event and
3556					pattern (the pattern is taken
3557					literally and compared to the
3558					autocommand patterns character by
3559					character)
3560			#group		autocommand group exists
3561			#group#event	autocommand defined for this group and
3562					event.
3563			#group#event#pattern
3564					autocommand defined for this group,
3565					event and pattern.
3566			##event		autocommand for this event is
3567					supported.
3568
3569		Examples: >
3570			exists("&shortname")
3571			exists("$HOSTNAME")
3572			exists("*strftime")
3573			exists("*s:MyFunc")
3574			exists("bufcount")
3575			exists(":Make")
3576			exists("#CursorHold")
3577			exists("#BufReadPre#*.gz")
3578			exists("#filetypeindent")
3579			exists("#filetypeindent#FileType")
3580			exists("#filetypeindent#FileType#*")
3581			exists("##ColorScheme")
3582<		There must be no space between the symbol (&/$/*/#) and the
3583		name.
3584		There must be no extra characters after the name, although in
3585		a few cases this is ignored.  That may become more strict in
3586		the future, thus don't count on it!
3587		Working example: >
3588			exists(":make")
3589<		NOT working example: >
3590			exists(":make install")
3591
3592<		Note that the argument must be a string, not the name of the
3593		variable itself.  For example: >
3594			exists(bufcount)
3595<		This doesn't check for existence of the "bufcount" variable,
3596		but gets the value of "bufcount", and checks if that exists.
3597
3598exp({expr})						*exp()*
3599		Return the exponential of {expr} as a |Float| in the range
3600		[0, inf].
3601		{expr} must evaluate to a |Float| or a |Number|.
3602		Examples: >
3603			:echo exp(2)
3604<			7.389056 >
3605			:echo exp(-1)
3606<			0.367879
3607		{only available when compiled with the |+float| feature}
3608
3609
3610expand({expr} [, {nosuf} [, {list}]])				*expand()*
3611		Expand wildcards and the following special keywords in {expr}.
3612		'wildignorecase' applies.
3613
3614		If {list} is given and it is |TRUE|, a List will be returned.
3615		Otherwise the result is a String and when there are several
3616		matches, they are separated by <NL> characters.  [Note: in
3617		version 5.0 a space was used, which caused problems when a
3618		file name contains a space]
3619
3620		If the expansion fails, the result is an empty string.  A name
3621		for a non-existing file is not included, unless {expr} does
3622		not start with '%', '#' or '<', see below.
3623
3624		When {expr} starts with '%', '#' or '<', the expansion is done
3625		like for the |cmdline-special| variables with their associated
3626		modifiers.  Here is a short overview:
3627
3628			%		current file name
3629			#		alternate file name
3630			#n		alternate file name n
3631			<cfile>		file name under the cursor
3632			<afile>		autocmd file name
3633			<abuf>		autocmd buffer number (as a String!)
3634			<amatch>	autocmd matched name
3635			<sfile>		sourced script file or function name
3636			<slnum>		sourced script file line number
3637			<cword>		word under the cursor
3638			<cWORD>		WORD under the cursor
3639			<client>	the {clientid} of the last received
3640					message |server2client()|
3641		Modifiers:
3642			:p		expand to full path
3643			:h		head (last path component removed)
3644			:t		tail (last path component only)
3645			:r		root (one extension removed)
3646			:e		extension only
3647
3648		Example: >
3649			:let &tags = expand("%:p:h") . "/tags"
3650<		Note that when expanding a string that starts with '%', '#' or
3651		'<', any following text is ignored.  This does NOT work: >
3652			:let doesntwork = expand("%:h.bak")
3653<		Use this: >
3654			:let doeswork = expand("%:h") . ".bak"
3655<		Also note that expanding "<cfile>" and others only returns the
3656		referenced file name without further expansion.  If "<cfile>"
3657		is "~/.cshrc", you need to do another expand() to have the
3658		"~/" expanded into the path of the home directory: >
3659			:echo expand(expand("<cfile>"))
3660<
3661		There cannot be white space between the variables and the
3662		following modifier.  The |fnamemodify()| function can be used
3663		to modify normal file names.
3664
3665		When using '%' or '#', and the current or alternate file name
3666		is not defined, an empty string is used.  Using "%:p" in a
3667		buffer with no name, results in the current directory, with a
3668		'/' added.
3669
3670		When {expr} does not start with '%', '#' or '<', it is
3671		expanded like a file name is expanded on the command line.
3672		'suffixes' and 'wildignore' are used, unless the optional
3673		{nosuf} argument is given and it is |TRUE|.
3674		Names for non-existing files are included.  The "**" item can
3675		be used to search in a directory tree.  For example, to find
3676		all "README" files in the current directory and below: >
3677			:echo expand("**/README")
3678<
3679		Expand() can also be used to expand variables and environment
3680		variables that are only known in a shell.  But this can be
3681		slow, because a shell may be used to do the expansion.  See
3682		|expr-env-expand|.
3683		The expanded variable is still handled like a list of file
3684		names.  When an environment variable cannot be expanded, it is
3685		left unchanged.  Thus ":echo expand('$FOOBAR')" results in
3686		"$FOOBAR".
3687
3688		See |glob()| for finding existing files.  See |system()| for
3689		getting the raw output of an external command.
3690
3691extend({expr1}, {expr2} [, {expr3}])			*extend()*
3692		{expr1} and {expr2} must be both |Lists| or both
3693		|Dictionaries|.
3694
3695		If they are |Lists|: Append {expr2} to {expr1}.
3696		If {expr3} is given insert the items of {expr2} before item
3697		{expr3} in {expr1}.  When {expr3} is zero insert before the
3698		first item.  When {expr3} is equal to len({expr1}) then
3699		{expr2} is appended.
3700		Examples: >
3701			:echo sort(extend(mylist, [7, 5]))
3702			:call extend(mylist, [2, 3], 1)
3703<		When {expr1} is the same List as {expr2} then the number of
3704		items copied is equal to the original length of the List.
3705		E.g., when {expr3} is 1 you get N new copies of the first item
3706		(where N is the original length of the List).
3707		Use |add()| to concatenate one item to a list.  To concatenate
3708		two lists into a new list use the + operator: >
3709			:let newlist = [1, 2, 3] + [4, 5]
3710<
3711		If they are |Dictionaries|:
3712		Add all entries from {expr2} to {expr1}.
3713		If a key exists in both {expr1} and {expr2} then {expr3} is
3714		used to decide what to do:
3715		{expr3} = "keep": keep the value of {expr1}
3716		{expr3} = "force": use the value of {expr2}
3717		{expr3} = "error": give an error message		*E737*
3718		When {expr3} is omitted then "force" is assumed.
3719
3720		{expr1} is changed when {expr2} is not empty.  If necessary
3721		make a copy of {expr1} first.
3722		{expr2} remains unchanged.
3723		When {expr1} is locked and {expr2} is not empty the operation
3724		fails.
3725		Returns {expr1}.
3726
3727
3728feedkeys({string} [, {mode}])				*feedkeys()*
3729		Characters in {string} are queued for processing as if they
3730		come from a mapping or were typed by the user.
3731		By default the string is added to the end of the typeahead
3732		buffer, thus if a mapping is still being executed the
3733		characters come after them.  Use the 'i' flag to insert before
3734		other characters, they will be executed next, before any
3735		characters from a mapping.
3736		The function does not wait for processing of keys contained in
3737		{string}.
3738		To include special keys into {string}, use double-quotes
3739		and "\..." notation |expr-quote|. For example,
3740		feedkeys("\<CR>") simulates pressing of the <Enter> key. But
3741		feedkeys('\<CR>') pushes 5 characters.
3742		If {mode} is absent, keys are remapped.
3743		{mode} is a String, which can contain these character flags:
3744		'm'	Remap keys. This is default.
3745		'n'	Do not remap keys.
3746		't'	Handle keys as if typed; otherwise they are handled as
3747			if coming from a mapping.  This matters for undo,
3748			opening folds, etc.
3749		'i'	Insert the string instead of appending (see above).
3750		'x'	Execute commands until typeahead is empty.  This is
3751			similar to using ":normal!".  You can call feedkeys()
3752			several times without 'x' and then one time with 'x'
3753			(possibly with an empty {string}) to execute all the
3754			typeahead.  Note that when Vim ends in Insert mode it
3755			will behave as if <Esc> is typed, to avoid getting
3756			stuck, waiting for a character to be typed before the
3757			script continues.
3758		'!'	When used with 'x' will not end Insert mode. Can be
3759			used in a test when a timer is set to exit Insert mode
3760			a little later.  Useful for testing CursorHoldI.
3761
3762		Return value is always 0.
3763
3764filereadable({file})					*filereadable()*
3765		The result is a Number, which is |TRUE| when a file with the
3766		name {file} exists, and can be read.  If {file} doesn't exist,
3767		or is a directory, the result is |FALSE|.  {file} is any
3768		expression, which is used as a String.
3769		If you don't care about the file being readable you can use
3770		|glob()|.
3771							*file_readable()*
3772		Obsolete name: file_readable().
3773
3774
3775filewritable({file})					*filewritable()*
3776		The result is a Number, which is 1 when a file with the
3777		name {file} exists, and can be written.  If {file} doesn't
3778		exist, or is not writable, the result is 0.  If {file} is a
3779		directory, and we can write to it, the result is 2.
3780
3781
3782filter({expr1}, {expr2})				*filter()*
3783		{expr1} must be a |List| or a |Dictionary|.
3784		For each item in {expr1} evaluate {expr2} and when the result
3785		is zero remove the item from the |List| or |Dictionary|.
3786		{expr2} must be a |string| or |Funcref|.
3787
3788		If {expr2} is a |string|, inside {expr2} |v:val| has the value
3789		of the current item.  For a |Dictionary| |v:key| has the key
3790		of the current item and for a |List| |v:key| has the index of
3791		the current item.
3792		Examples: >
3793			call filter(mylist, 'v:val !~ "OLD"')
3794<		Removes the items where "OLD" appears. >
3795			call filter(mydict, 'v:key >= 8')
3796<		Removes the items with a key below 8. >
3797			call filter(var, 0)
3798<		Removes all the items, thus clears the |List| or |Dictionary|.
3799
3800		Note that {expr2} is the result of expression and is then
3801		used as an expression again.  Often it is good to use a
3802		|literal-string| to avoid having to double backslashes.
3803
3804		If {expr2} is a |Funcref| it must take two arguments:
3805			1. the key or the index of the current item.
3806			2. the value of the current item.
3807		The function must return |TRUE| if the item should be kept.
3808		Example that keeps the odd items of a list: >
3809			func Odd(idx, val)
3810			  return a:idx % 2 == 1
3811			endfunc
3812			call filter(mylist, function('Odd'))
3813<		It is shorter when using a |lambda|: >
3814			call filter(myList, {idx, val -> idx * val <= 42})
3815<		If you do not use "val" you can leave it out: >
3816			call filter(myList, {idx -> idx % 2 == 1})
3817<
3818		The operation is done in-place.  If you want a |List| or
3819		|Dictionary| to remain unmodified make a copy first: >
3820			:let l = filter(copy(mylist), 'v:val =~ "KEEP"')
3821
3822<		Returns {expr1}, the |List| or |Dictionary| that was filtered.
3823		When an error is encountered while evaluating {expr2} no
3824		further items in {expr1} are processed.  When {expr2} is a
3825		Funcref errors inside a function are ignored, unless it was
3826		defined with the "abort" flag.
3827
3828
3829finddir({name}[, {path}[, {count}]])				*finddir()*
3830		Find directory {name} in {path}.  Supports both downwards and
3831		upwards recursive directory searches.  See |file-searching|
3832		for the syntax of {path}.
3833		Returns the path of the first found match.  When the found
3834		directory is below the current directory a relative path is
3835		returned.  Otherwise a full path is returned.
3836		If {path} is omitted or empty then 'path' is used.
3837		If the optional {count} is given, find {count}'s occurrence of
3838		{name} in {path} instead of the first one.
3839		When {count} is negative return all the matches in a |List|.
3840		This is quite similar to the ex-command |:find|.
3841		{only available when compiled with the |+file_in_path|
3842		feature}
3843
3844findfile({name}[, {path}[, {count}]])				*findfile()*
3845		Just like |finddir()|, but find a file instead of a directory.
3846		Uses 'suffixesadd'.
3847		Example: >
3848			:echo findfile("tags.vim", ".;")
3849<		Searches from the directory of the current file upwards until
3850		it finds the file "tags.vim".
3851
3852float2nr({expr})					*float2nr()*
3853		Convert {expr} to a Number by omitting the part after the
3854		decimal point.
3855		{expr} must evaluate to a |Float| or a Number.
3856		When the value of {expr} is out of range for a |Number| the
3857		result is truncated to 0x7fffffff or -0x7fffffff (or when
3858		64-bit Number support is enabled, 0x7fffffffffffffff or
3859		-0x7fffffffffffffff.  NaN results in -0x80000000 (or when
3860		64-bit Number support is enabled, -0x8000000000000000).
3861		Examples: >
3862			echo float2nr(3.95)
3863<			3  >
3864			echo float2nr(-23.45)
3865<			-23  >
3866			echo float2nr(1.0e100)
3867<			2147483647  (or 9223372036854775807) >
3868			echo float2nr(-1.0e150)
3869<			-2147483647 (or -9223372036854775807) >
3870			echo float2nr(1.0e-100)
3871<			0
3872		{only available when compiled with the |+float| feature}
3873
3874
3875floor({expr})							*floor()*
3876		Return the largest integral value less than or equal to
3877		{expr} as a |Float| (round down).
3878		{expr} must evaluate to a |Float| or a |Number|.
3879		Examples: >
3880			echo floor(1.856)
3881<			1.0  >
3882			echo floor(-5.456)
3883<			-6.0  >
3884			echo floor(4.0)
3885<			4.0
3886		{only available when compiled with the |+float| feature}
3887
3888
3889fmod({expr1}, {expr2})					*fmod()*
3890		Return the remainder of {expr1} / {expr2}, even if the
3891		division is not representable.  Returns {expr1} - i * {expr2}
3892		for some integer i such that if {expr2} is non-zero, the
3893		result has the same sign as {expr1} and magnitude less than
3894		the magnitude of {expr2}.  If {expr2} is zero, the value
3895		returned is zero.  The value returned is a |Float|.
3896		{expr1} and {expr2} must evaluate to a |Float| or a |Number|.
3897		Examples: >
3898			:echo fmod(12.33, 1.22)
3899<			0.13 >
3900			:echo fmod(-12.33, 1.22)
3901<			-0.13
3902		{only available when compiled with |+float| feature}
3903
3904
3905fnameescape({string})					*fnameescape()*
3906		Escape {string} for use as file name command argument.  All
3907		characters that have a special meaning, such as '%' and '|'
3908		are escaped with a backslash.
3909		For most systems the characters escaped are
3910		" \t\n*?[{`$\\%#'\"|!<".  For systems where a backslash
3911		appears in a filename, it depends on the value of 'isfname'.
3912		A leading '+' and '>' is also escaped (special after |:edit|
3913		and |:write|).  And a "-" by itself (special after |:cd|).
3914		Example: >
3915			:let fname = '+some str%nge|name'
3916			:exe "edit " . fnameescape(fname)
3917<		results in executing: >
3918			edit \+some\ str\%nge\|name
3919
3920fnamemodify({fname}, {mods})				*fnamemodify()*
3921		Modify file name {fname} according to {mods}.  {mods} is a
3922		string of characters like it is used for file names on the
3923		command line.  See |filename-modifiers|.
3924		Example: >
3925			:echo fnamemodify("main.c", ":p:h")
3926<		results in: >
3927			/home/mool/vim/vim/src
3928<		Note: Environment variables don't work in {fname}, use
3929		|expand()| first then.
3930
3931foldclosed({lnum})					*foldclosed()*
3932		The result is a Number.  If the line {lnum} is in a closed
3933		fold, the result is the number of the first line in that fold.
3934		If the line {lnum} is not in a closed fold, -1 is returned.
3935
3936foldclosedend({lnum})					*foldclosedend()*
3937		The result is a Number.  If the line {lnum} is in a closed
3938		fold, the result is the number of the last line in that fold.
3939		If the line {lnum} is not in a closed fold, -1 is returned.
3940
3941foldlevel({lnum})					*foldlevel()*
3942		The result is a Number, which is the foldlevel of line {lnum}
3943		in the current buffer.  For nested folds the deepest level is
3944		returned.  If there is no fold at line {lnum}, zero is
3945		returned.  It doesn't matter if the folds are open or closed.
3946		When used while updating folds (from 'foldexpr') -1 is
3947		returned for lines where folds are still to be updated and the
3948		foldlevel is unknown.  As a special case the level of the
3949		previous line is usually available.
3950
3951							*foldtext()*
3952foldtext()	Returns a String, to be displayed for a closed fold.  This is
3953		the default function used for the 'foldtext' option and should
3954		only be called from evaluating 'foldtext'.  It uses the
3955		|v:foldstart|, |v:foldend| and |v:folddashes| variables.
3956		The returned string looks like this: >
3957			+-- 45 lines: abcdef
3958<		The number of leading dashes depends on the foldlevel.  The
3959		"45" is the number of lines in the fold.  "abcdef" is the text
3960		in the first non-blank line of the fold.  Leading white space,
3961		"//" or "/*" and the text from the 'foldmarker' and
3962		'commentstring' options is removed.
3963		When used to draw the actual foldtext, the rest of the line
3964		will be filled with the fold char from the 'fillchars'
3965		setting.
3966		{not available when compiled without the |+folding| feature}
3967
3968foldtextresult({lnum})					*foldtextresult()*
3969		Returns the text that is displayed for the closed fold at line
3970		{lnum}.  Evaluates 'foldtext' in the appropriate context.
3971		When there is no closed fold at {lnum} an empty string is
3972		returned.
3973		{lnum} is used like with |getline()|.  Thus "." is the current
3974		line, "'m" mark m, etc.
3975		Useful when exporting folded text, e.g., to HTML.
3976		{not available when compiled without the |+folding| feature}
3977
3978							*foreground()*
3979foreground()	Move the Vim window to the foreground.  Useful when sent from
3980		a client to a Vim server. |remote_send()|
3981		On Win32 systems this might not work, the OS does not always
3982		allow a window to bring itself to the foreground.  Use
3983		|remote_foreground()| instead.
3984		{only in the Win32, Athena, Motif and GTK GUI versions and the
3985		Win32 console version}
3986
3987						*funcref()*
3988funcref({name} [, {arglist}] [, {dict}])
3989		Just like |function()|, but the returned Funcref will lookup
3990		the function by reference, not by name.  This matters when the
3991		function {name} is redefined later.
3992
3993		Unlike |function()|, {name} must be an existing user function.
3994		Also for autoloaded functions. {name} cannot be a builtin
3995		function.
3996
3997					*function()* *E700* *E922* *E923*
3998function({name} [, {arglist}] [, {dict}])
3999		Return a |Funcref| variable that refers to function {name}.
4000		{name} can be the name of a user defined function or an
4001		internal function.
4002
4003		{name} can also be a Funcref or a partial.  When it is a
4004		partial the dict stored in it will be used and the {dict}
4005		argument is not allowed. E.g.: >
4006			let FuncWithArg = function(dict.Func, [arg])
4007			let Broken = function(dict.Func, [arg], dict)
4008<
4009		When using the Funcref the function will be found by {name},
4010		also when it was redefined later.  Use |funcref()| to keep the
4011		same function.
4012
4013		When {arglist} or {dict} is present this creates a partial.
4014		That means the argument list and/or the dictionary is stored in
4015		the Funcref and will be used when the Funcref is called.
4016
4017		The arguments are passed to the function in front of other
4018		arguments.  Example: >
4019			func Callback(arg1, arg2, name)
4020			...
4021			let Func = function('Callback', ['one', 'two'])
4022			...
4023			call Func('name')
4024<		Invokes the function as with: >
4025			call Callback('one', 'two', 'name')
4026
4027<		The function() call can be nested to add more arguments to the
4028		Funcref.  The extra arguments are appended to the list of
4029		arguments.  Example: >
4030			func Callback(arg1, arg2, name)
4031			...
4032			let Func = function('Callback', ['one'])
4033			let Func2 = function(Func, ['two'])
4034			...
4035			call Func2('name')
4036<		Invokes the function as with: >
4037			call Callback('one', 'two', 'name')
4038
4039<		The Dictionary is only useful when calling a "dict" function.
4040		In that case the {dict} is passed in as "self". Example: >
4041			function Callback() dict
4042			   echo "called for " . self.name
4043			endfunction
4044			...
4045			let context = {"name": "example"}
4046			let Func = function('Callback', context)
4047			...
4048			call Func()	" will echo: called for example
4049<		The use of function() is not needed when there are no extra
4050		arguments, these two are equivalent: >
4051			let Func = function('Callback', context)
4052			let Func = context.Callback
4053
4054<		The argument list and the Dictionary can be combined: >
4055			function Callback(arg1, count) dict
4056			...
4057			let context = {"name": "example"}
4058			let Func = function('Callback', ['one'], context)
4059			...
4060			call Func(500)
4061<		Invokes the function as with: >
4062			call context.Callback('one', 500)
4063
4064
4065garbagecollect([{atexit}])				*garbagecollect()*
4066		Cleanup unused |Lists|, |Dictionaries|, |Channels| and |Jobs|
4067		that have circular references.
4068
4069		There is hardly ever a need to invoke this function, as it is
4070		automatically done when Vim runs out of memory or is waiting
4071		for the user to press a key after 'updatetime'.  Items without
4072		circular references are always freed when they become unused.
4073		This is useful if you have deleted a very big |List| and/or
4074		|Dictionary| with circular references in a script that runs
4075		for a long time.
4076
4077		When the optional {atexit} argument is one, garbage
4078		collection will also be done when exiting Vim, if it wasn't
4079		done before.  This is useful when checking for memory leaks.
4080
4081		The garbage collection is not done immediately but only when
4082		it's safe to perform.  This is when waiting for the user to
4083		type a character.  To force garbage collection immediately use
4084		|test_garbagecollect_now()|.
4085
4086get({list}, {idx} [, {default}])			*get()*
4087		Get item {idx} from |List| {list}.  When this item is not
4088		available return {default}.  Return zero when {default} is
4089		omitted.
4090get({dict}, {key} [, {default}])
4091		Get item with key {key} from |Dictionary| {dict}.  When this
4092		item is not available return {default}.  Return zero when
4093		{default} is omitted.
4094get({func}, {what})
4095		Get an item with from Funcref {func}.  Possible values for
4096		{what} are:
4097			"name"	The function name
4098			"func"	The function
4099			"dict"	The dictionary
4100			"args"	The list with arguments
4101
4102							*getbufinfo()*
4103getbufinfo([{expr}])
4104getbufinfo([{dict}])
4105		Get information about buffers as a List of Dictionaries.
4106
4107		Without an argument information about all the buffers is
4108		returned.
4109
4110		When the argument is a Dictionary only the buffers matching
4111		the specified criteria are returned.  The following keys can
4112		be specified in {dict}:
4113			buflisted	include only listed buffers.
4114			bufloaded	include only loaded buffers.
4115
4116		Otherwise, {expr} specifies a particular buffer to return
4117		information for.  For the use of {expr}, see |bufname()|
4118		above.  If the buffer is found the returned List has one item.
4119		Otherwise the result is an empty list.
4120
4121		Each returned List item is a dictionary with the following
4122		entries:
4123			bufnr		buffer number.
4124			changed		TRUE if the buffer is modified.
4125			changedtick	number of changes made to the buffer.
4126			hidden		TRUE if the buffer is hidden.
4127			listed		TRUE if the buffer is listed.
4128			lnum		current line number in buffer.
4129			loaded		TRUE if the buffer is loaded.
4130			name		full path to the file in the buffer.
4131			signs		list of signs placed in the buffer.
4132					Each list item is a dictionary with
4133					the following fields:
4134					    id	  sign identifier
4135					    lnum  line number
4136					    name  sign name
4137			variables	a reference to the dictionary with
4138					buffer-local variables.
4139			windows		list of |window-ID|s that display this
4140					buffer
4141
4142		Examples: >
4143			for buf in getbufinfo()
4144			    echo buf.name
4145			endfor
4146			for buf in getbufinfo({'buflisted':1})
4147			    if buf.changed
4148				....
4149			    endif
4150			endfor
4151<
4152		To get buffer-local options use: >
4153			getbufvar({bufnr}, '&')
4154
4155<
4156							*getbufline()*
4157getbufline({expr}, {lnum} [, {end}])
4158		Return a |List| with the lines starting from {lnum} to {end}
4159		(inclusive) in the buffer {expr}.  If {end} is omitted, a
4160		|List| with only the line {lnum} is returned.
4161
4162		For the use of {expr}, see |bufname()| above.
4163
4164		For {lnum} and {end} "$" can be used for the last line of the
4165		buffer.  Otherwise a number must be used.
4166
4167		When {lnum} is smaller than 1 or bigger than the number of
4168		lines in the buffer, an empty |List| is returned.
4169
4170		When {end} is greater than the number of lines in the buffer,
4171		it is treated as {end} is set to the number of lines in the
4172		buffer.  When {end} is before {lnum} an empty |List| is
4173		returned.
4174
4175		This function works only for loaded buffers.  For unloaded and
4176		non-existing buffers, an empty |List| is returned.
4177
4178		Example: >
4179			:let lines = getbufline(bufnr("myfile"), 1, "$")
4180
4181getbufvar({expr}, {varname} [, {def}])				*getbufvar()*
4182		The result is the value of option or local buffer variable
4183		{varname} in buffer {expr}.  Note that the name without "b:"
4184		must be used.
4185		When {varname} is empty returns a dictionary with all the
4186		buffer-local variables.
4187		When {varname} is equal to "&" returns a dictionary with all
4188		the buffer-local options.
4189		Otherwise, when {varname} starts with "&" returns the value of
4190		a buffer-local option.
4191		This also works for a global or buffer-local option, but it
4192		doesn't work for a global variable, window-local variable or
4193		window-local option.
4194		For the use of {expr}, see |bufname()| above.
4195		When the buffer or variable doesn't exist {def} or an empty
4196		string is returned, there is no error message.
4197		Examples: >
4198			:let bufmodified = getbufvar(1, "&mod")
4199			:echo "todo myvar = " . getbufvar("todo", "myvar")
4200<
4201getchar([expr])						*getchar()*
4202		Get a single character from the user or input stream.
4203		If [expr] is omitted, wait until a character is available.
4204		If [expr] is 0, only get a character when one is available.
4205			Return zero otherwise.
4206		If [expr] is 1, only check if a character is available, it is
4207			not consumed.  Return zero if no character available.
4208
4209		Without [expr] and when [expr] is 0 a whole character or
4210		special key is returned.  If it is a single character, the
4211		result is a number.  Use nr2char() to convert it to a String.
4212		Otherwise a String is returned with the encoded character.
4213		For a special key it's a String with a sequence of bytes
4214		starting with 0x80 (decimal: 128).  This is the same value as
4215		the String "\<Key>", e.g., "\<Left>".  The returned value is
4216		also a String when a modifier (shift, control, alt) was used
4217		that is not included in the character.
4218
4219		When [expr] is 0 and Esc is typed, there will be a short delay
4220		while Vim waits to see if this is the start of an escape
4221		sequence.
4222
4223		When [expr] is 1 only the first byte is returned.  For a
4224		one-byte character it is the character itself as a number.
4225		Use nr2char() to convert it to a String.
4226
4227		Use getcharmod() to obtain any additional modifiers.
4228
4229		When the user clicks a mouse button, the mouse event will be
4230		returned.  The position can then be found in |v:mouse_col|,
4231		|v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|.  This
4232		example positions the mouse as it would normally happen: >
4233			let c = getchar()
4234			if c == "\<LeftMouse>" && v:mouse_win > 0
4235			  exe v:mouse_win . "wincmd w"
4236			  exe v:mouse_lnum
4237			  exe "normal " . v:mouse_col . "|"
4238			endif
4239<
4240		When using bracketed paste only the first character is
4241		returned, the rest of the pasted text is dropped.
4242		|xterm-bracketed-paste|.
4243
4244		There is no prompt, you will somehow have to make clear to the
4245		user that a character has to be typed.
4246		There is no mapping for the character.
4247		Key codes are replaced, thus when the user presses the <Del>
4248		key you get the code for the <Del> key, not the raw character
4249		sequence.  Examples: >
4250			getchar() == "\<Del>"
4251			getchar() == "\<S-Left>"
4252<		This example redefines "f" to ignore case: >
4253			:nmap f :call FindChar()<CR>
4254			:function FindChar()
4255			:  let c = nr2char(getchar())
4256			:  while col('.') < col('$') - 1
4257			:    normal l
4258			:    if getline('.')[col('.') - 1] ==? c
4259			:      break
4260			:    endif
4261			:  endwhile
4262			:endfunction
4263<
4264		You may also receive synthetic characters, such as
4265		|<CursorHold>|. Often you will want to ignore this and get
4266		another character: >
4267			:function GetKey()
4268			:  let c = getchar()
4269			:  while c == "\<CursorHold>"
4270			:    let c = getchar()
4271			:  endwhile
4272			:  return c
4273			:endfunction
4274
4275getcharmod()						*getcharmod()*
4276		The result is a Number which is the state of the modifiers for
4277		the last obtained character with getchar() or in another way.
4278		These values are added together:
4279			2	shift
4280			4	control
4281			8	alt (meta)
4282			16	meta (when it's different from ALT)
4283			32	mouse double click
4284			64	mouse triple click
4285			96	mouse quadruple click (== 32 + 64)
4286			128	command (Macintosh only)
4287		Only the modifiers that have not been included in the
4288		character itself are obtained.  Thus Shift-a results in "A"
4289		without a modifier.
4290
4291getcharsearch()						*getcharsearch()*
4292		Return the current character search information as a {dict}
4293		with the following entries:
4294
4295		    char	character previously used for a character
4296				search (|t|, |f|, |T|, or |F|); empty string
4297				if no character search has been performed
4298		    forward	direction of character search; 1 for forward,
4299				0 for backward
4300		    until	type of character search; 1 for a |t| or |T|
4301				character search, 0 for an |f| or |F|
4302				character search
4303
4304		This can be useful to always have |;| and |,| search
4305		forward/backward regardless of the direction of the previous
4306		character search: >
4307			:nnoremap <expr> ; getcharsearch().forward ? ';' : ','
4308			:nnoremap <expr> , getcharsearch().forward ? ',' : ';'
4309<		Also see |setcharsearch()|.
4310
4311getcmdline()						*getcmdline()*
4312		Return the current command-line.  Only works when the command
4313		line is being edited, thus requires use of |c_CTRL-\_e| or
4314		|c_CTRL-R_=|.
4315		Example: >
4316			:cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
4317<		Also see |getcmdtype()|, |getcmdpos()| and |setcmdpos()|.
4318
4319getcmdpos()						*getcmdpos()*
4320		Return the position of the cursor in the command line as a
4321		byte count.  The first column is 1.
4322		Only works when editing the command line, thus requires use of
4323		|c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
4324		Returns 0 otherwise.
4325		Also see |getcmdtype()|, |setcmdpos()| and |getcmdline()|.
4326
4327getcmdtype()						*getcmdtype()*
4328		Return the current command-line type. Possible return values
4329		are:
4330		    :	normal Ex command
4331		    >	debug mode command |debug-mode|
4332		    /	forward search command
4333		    ?	backward search command
4334		    @	|input()| command
4335		    -	|:insert| or |:append| command
4336		    =	|i_CTRL-R_=|
4337		Only works when editing the command line, thus requires use of
4338		|c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
4339		Returns an empty string otherwise.
4340		Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
4341
4342getcmdwintype()						*getcmdwintype()*
4343		Return the current |command-line-window| type. Possible return
4344		values are the same as |getcmdtype()|. Returns an empty string
4345		when not in the command-line window.
4346
4347getcompletion({pat}, {type} [, {filtered}])		*getcompletion()*
4348		Return a list of command-line completion matches. {type}
4349		specifies what for.  The following completion types are
4350		supported:
4351
4352		augroup		autocmd groups
4353		buffer		buffer names
4354		behave		:behave suboptions
4355		color		color schemes
4356		command		Ex command (and arguments)
4357		compiler	compilers
4358		cscope		|:cscope| suboptions
4359		dir		directory names
4360		environment	environment variable names
4361		event		autocommand events
4362		expression	Vim expression
4363		file		file and directory names
4364		file_in_path	file and directory names in |'path'|
4365		filetype	filetype names |'filetype'|
4366		function	function name
4367		help		help subjects
4368		highlight	highlight groups
4369		history		:history suboptions
4370		locale		locale names (as output of locale -a)
4371		mapclear        buffer argument
4372		mapping		mapping name
4373		menu		menus
4374		messages	|:messages| suboptions
4375		option		options
4376		packadd		optional package |pack-add| names
4377		shellcmd	Shell command
4378		sign		|:sign| suboptions
4379		syntax		syntax file names |'syntax'|
4380		syntime		|:syntime| suboptions
4381		tag		tags
4382		tag_listfiles	tags, file names
4383		user		user names
4384		var		user variables
4385
4386		If {pat} is an empty string, then all the matches are returned.
4387		Otherwise only items matching {pat} are returned. See
4388		|wildcards| for the use of special characters in {pat}.
4389
4390		If the optional {filtered} flag is set to 1, then 'wildignore'
4391		is applied to filter the results.  Otherwise all the matches
4392		are returned. The 'wildignorecase' option always applies.
4393
4394		If there are no matches, an empty list is returned.  An
4395		invalid value for {type} produces an error.
4396
4397							*getcurpos()*
4398getcurpos()	Get the position of the cursor.  This is like getpos('.'), but
4399		includes an extra item in the list:
4400		    [bufnum, lnum, col, off, curswant] ~
4401		The "curswant" number is the preferred column when moving the
4402		cursor vertically.  Also see |getpos()|.
4403
4404		This can be used to save and restore the cursor position: >
4405			let save_cursor = getcurpos()
4406			MoveTheCursorAround
4407			call setpos('.', save_cursor)
4408<		Note that this only works within the window.  See
4409		|winrestview()| for restoring more state.
4410							*getcwd()*
4411getcwd([{winnr} [, {tabnr}]])
4412		The result is a String, which is the name of the current
4413		working directory.
4414		Without arguments, for the current window.
4415
4416		With {winnr} return the local current directory of this window
4417		in the current tab page.
4418		With {winnr} and {tabnr} return the local current directory of
4419		the window in the specified tab page.
4420		{winnr} can be the window number or the |window-ID|.
4421		Return an empty string if the arguments are invalid.
4422
4423getfsize({fname})					*getfsize()*
4424		The result is a Number, which is the size in bytes of the
4425		given file {fname}.
4426		If {fname} is a directory, 0 is returned.
4427		If the file {fname} can't be found, -1 is returned.
4428		If the size of {fname} is too big to fit in a Number then -2
4429		is returned.
4430
4431getfontname([{name}])					*getfontname()*
4432		Without an argument returns the name of the normal font being
4433		used.  Like what is used for the Normal highlight group
4434		|hl-Normal|.
4435		With an argument a check is done whether {name} is a valid
4436		font name.  If not then an empty string is returned.
4437		Otherwise the actual font name is returned, or {name} if the
4438		GUI does not support obtaining the real name.
4439		Only works when the GUI is running, thus not in your vimrc or
4440		gvimrc file.  Use the |GUIEnter| autocommand to use this
4441		function just after the GUI has started.
4442		Note that the GTK GUI accepts any font name, thus checking for
4443		a valid name does not work.
4444
4445getfperm({fname})					*getfperm()*
4446		The result is a String, which is the read, write, and execute
4447		permissions of the given file {fname}.
4448		If {fname} does not exist or its directory cannot be read, an
4449		empty string is returned.
4450		The result is of the form "rwxrwxrwx", where each group of
4451		"rwx" flags represent, in turn, the permissions of the owner
4452		of the file, the group the file belongs to, and other users.
4453		If a user does not have a given permission the flag for this
4454		is replaced with the string "-".  Examples: >
4455			:echo getfperm("/etc/passwd")
4456			:echo getfperm(expand("~/.vimrc"))
4457<		This will hopefully (from a security point of view) display
4458		the string "rw-r--r--" or even "rw-------".
4459
4460		For setting permissions use |setfperm()|.
4461
4462getftime({fname})					*getftime()*
4463		The result is a Number, which is the last modification time of
4464		the given file {fname}.  The value is measured as seconds
4465		since 1st Jan 1970, and may be passed to strftime().  See also
4466		|localtime()| and |strftime()|.
4467		If the file {fname} can't be found -1 is returned.
4468
4469getftype({fname})					*getftype()*
4470		The result is a String, which is a description of the kind of
4471		file of the given file {fname}.
4472		If {fname} does not exist an empty string is returned.
4473		Here is a table over different kinds of files and their
4474		results:
4475			Normal file		"file"
4476			Directory		"dir"
4477			Symbolic link		"link"
4478			Block device		"bdev"
4479			Character device	"cdev"
4480			Socket			"socket"
4481			FIFO			"fifo"
4482			All other		"other"
4483		Example: >
4484			getftype("/home")
4485<		Note that a type such as "link" will only be returned on
4486		systems that support it.  On some systems only "dir" and
4487		"file" are returned.  On MS-Windows a symbolic link to a
4488		directory returns "dir" instead of "link".
4489
4490							*getline()*
4491getline({lnum} [, {end}])
4492		Without {end} the result is a String, which is line {lnum}
4493		from the current buffer.  Example: >
4494			getline(1)
4495<		When {lnum} is a String that doesn't start with a
4496		digit, line() is called to translate the String into a Number.
4497		To get the line under the cursor: >
4498			getline(".")
4499<		When {lnum} is smaller than 1 or bigger than the number of
4500		lines in the buffer, an empty string is returned.
4501
4502		When {end} is given the result is a |List| where each item is
4503		a line from the current buffer in the range {lnum} to {end},
4504		including line {end}.
4505		{end} is used in the same way as {lnum}.
4506		Non-existing lines are silently omitted.
4507		When {end} is before {lnum} an empty |List| is returned.
4508		Example: >
4509			:let start = line('.')
4510			:let end = search("^$") - 1
4511			:let lines = getline(start, end)
4512
4513<		To get lines from another buffer see |getbufline()|
4514
4515getloclist({nr}[, {what}])				*getloclist()*
4516		Returns a list with all the entries in the location list for
4517		window {nr}.  {nr} can be the window number or the |window-ID|.
4518		When {nr} is zero the current window is used.
4519
4520		For a location list window, the displayed location list is
4521		returned.  For an invalid window number {nr}, an empty list is
4522		returned. Otherwise, same as |getqflist()|.
4523
4524		If the optional {what} dictionary argument is supplied, then
4525		returns the items listed in {what} as a dictionary. Refer to
4526		|getqflist()| for the supported items in {what}.
4527
4528getmatches()						*getmatches()*
4529		Returns a |List| with all matches previously defined by
4530		|matchadd()| and the |:match| commands.  |getmatches()| is
4531		useful in combination with |setmatches()|, as |setmatches()|
4532		can restore a list of matches saved by |getmatches()|.
4533		Example: >
4534			:echo getmatches()
4535<			[{'group': 'MyGroup1', 'pattern': 'TODO',
4536			'priority': 10, 'id': 1}, {'group': 'MyGroup2',
4537			'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
4538			:let m = getmatches()
4539			:call clearmatches()
4540			:echo getmatches()
4541<			[] >
4542			:call setmatches(m)
4543			:echo getmatches()
4544<			[{'group': 'MyGroup1', 'pattern': 'TODO',
4545			'priority': 10, 'id': 1}, {'group': 'MyGroup2',
4546			'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
4547			:unlet m
4548<
4549							*getpid()*
4550getpid()	Return a Number which is the process ID of the Vim process.
4551		On Unix and MS-Windows this is a unique number, until Vim
4552		exits.  On MS-DOS it's always zero.
4553
4554							*getpos()*
4555getpos({expr})	Get the position for {expr}.  For possible values of {expr}
4556		see |line()|.  For getting the cursor position see
4557		|getcurpos()|.
4558		The result is a |List| with four numbers:
4559		    [bufnum, lnum, col, off]
4560		"bufnum" is zero, unless a mark like '0 or 'A is used, then it
4561		is the buffer number of the mark.
4562		"lnum" and "col" are the position in the buffer.  The first
4563		column is 1.
4564		The "off" number is zero, unless 'virtualedit' is used.  Then
4565		it is the offset in screen columns from the start of the
4566		character.  E.g., a position within a <Tab> or after the last
4567		character.
4568		Note that for '< and '> Visual mode matters: when it is "V"
4569		(visual line mode) the column of '< is zero and the column of
4570		'> is a large number.
4571		This can be used to save and restore the position of a mark: >
4572			let save_a_mark = getpos("'a")
4573			...
4574			call setpos("'a", save_a_mark)
4575<		Also see |getcurpos()| and |setpos()|.
4576
4577
4578getqflist([{what}])					*getqflist()*
4579		Returns a list with all the current quickfix errors.  Each
4580		list item is a dictionary with these entries:
4581			bufnr	number of buffer that has the file name, use
4582				bufname() to get the name
4583			lnum	line number in the buffer (first line is 1)
4584			col	column number (first column is 1)
4585			vcol	|TRUE|: "col" is visual column
4586				|FALSE|: "col" is byte index
4587			nr	error number
4588			pattern	search pattern used to locate the error
4589			text	description of the error
4590			type	type of the error, 'E', '1', etc.
4591			valid	|TRUE|: recognized error message
4592
4593		When there is no error list or it's empty, an empty list is
4594		returned. Quickfix list entries with non-existing buffer
4595		number are returned with "bufnr" set to zero.
4596
4597		Useful application: Find pattern matches in multiple files and
4598		do something with them: >
4599			:vimgrep /theword/jg *.c
4600			:for d in getqflist()
4601			:   echo bufname(d.bufnr) ':' d.lnum '=' d.text
4602			:endfor
4603<
4604		If the optional {what} dictionary argument is supplied, then
4605		returns only the items listed in {what} as a dictionary. The
4606		following string items are supported in {what}:
4607			context	get the context stored with |setqflist()|
4608			items	quickfix list entries
4609			nr	get information for this quickfix list; zero
4610				means the current quickfix list and '$' means
4611				the last quickfix list
4612			title	get the list title
4613			winid	get the |window-ID| (if opened)
4614			all	all of the above quickfix properties
4615		Non-string items in {what} are ignored.
4616		If "nr" is not present then the current quickfix list is used.
4617		To get the number of lists in the quickfix stack, set 'nr' to
4618		'$' in {what}. The 'nr' value in the returned dictionary
4619		contains the quickfix stack size.
4620		In case of error processing {what}, an empty dictionary is
4621		returned.
4622
4623		The returned dictionary contains the following entries:
4624			context	context information stored with |setqflist()|
4625			items	quickfix list entries
4626			nr	quickfix list number
4627			title	quickfix list title text
4628			winid	quickfix |window-ID| (if opened)
4629
4630		Examples: >
4631			:echo getqflist({'all': 1})
4632			:echo getqflist({'nr': 2, 'title': 1})
4633<
4634
4635getreg([{regname} [, 1 [, {list}]]])			*getreg()*
4636		The result is a String, which is the contents of register
4637		{regname}.  Example: >
4638			:let cliptext = getreg('*')
4639<		When {regname} was not set the result is an empty string.
4640
4641		getreg('=') returns the last evaluated value of the expression
4642		register.  (For use in maps.)
4643		getreg('=', 1) returns the expression itself, so that it can
4644		be restored with |setreg()|.  For other registers the extra
4645		argument is ignored, thus you can always give it.
4646
4647		If {list} is present and |TRUE|, the result type is changed
4648		to |List|. Each list item is one text line. Use it if you care
4649		about zero bytes possibly present inside register: without
4650		third argument both NLs and zero bytes are represented as NLs
4651		(see |NL-used-for-Nul|).
4652		When the register was not set an empty list is returned.
4653
4654		If {regname} is not specified, |v:register| is used.
4655
4656
4657getregtype([{regname}])					*getregtype()*
4658		The result is a String, which is type of register {regname}.
4659		The value will be one of:
4660		    "v"			for |characterwise| text
4661		    "V"			for |linewise| text
4662		    "<CTRL-V>{width}"	for |blockwise-visual| text
4663		    ""			for an empty or unknown register
4664		<CTRL-V> is one character with value 0x16.
4665		If {regname} is not specified, |v:register| is used.
4666
4667gettabinfo([{arg}])					*gettabinfo()*
4668		If {arg} is not specified, then information about all the tab
4669		pages is returned as a List. Each List item is a Dictionary.
4670		Otherwise, {arg} specifies the tab page number and information
4671		about that one is returned.  If the tab page does not exist an
4672		empty List is returned.
4673
4674		Each List item is a Dictionary with the following entries:
4675			tabnr		tab page number.
4676			variables	a reference to the dictionary with
4677					tabpage-local variables
4678			windows		List of |window-ID|s in the tag page.
4679
4680gettabvar({tabnr}, {varname} [, {def}])				*gettabvar()*
4681		Get the value of a tab-local variable {varname} in tab page
4682		{tabnr}. |t:var|
4683		Tabs are numbered starting with one.
4684		When {varname} is empty a dictionary with all tab-local
4685		variables is returned.
4686		Note that the name without "t:" must be used.
4687		When the tab or variable doesn't exist {def} or an empty
4688		string is returned, there is no error message.
4689
4690gettabwinvar({tabnr}, {winnr}, {varname} [, {def}])		*gettabwinvar()*
4691		Get the value of window-local variable {varname} in window
4692		{winnr} in tab page {tabnr}.
4693		When {varname} is empty a dictionary with all window-local
4694		variables is returned.
4695		When {varname} is equal to "&" get the values of all
4696		window-local options in a Dictionary.
4697		Otherwise, when {varname} starts with "&" get the value of a
4698		window-local option.
4699		Note that {varname} must be the name without "w:".
4700		Tabs are numbered starting with one.  For the current tabpage
4701		use |getwinvar()|.
4702		{winnr} can be the window number or the |window-ID|.
4703		When {winnr} is zero the current window is used.
4704		This also works for a global option, buffer-local option and
4705		window-local option, but it doesn't work for a global variable
4706		or buffer-local variable.
4707		When the tab, window or variable doesn't exist {def} or an
4708		empty string is returned, there is no error message.
4709		Examples: >
4710			:let list_is_on = gettabwinvar(1, 2, '&list')
4711			:echo "myvar = " . gettabwinvar(3, 1, 'myvar')
4712<
4713							*getwinposx()*
4714getwinposx()	The result is a Number, which is the X coordinate in pixels of
4715		the left hand side of the GUI Vim window. Also works for an
4716		xterm.
4717		The result will be -1 if the information is not available.
4718		The value can be used with `:winpos`.
4719
4720							*getwinposy()*
4721getwinposy()	The result is a Number, which is the Y coordinate in pixels of
4722		the top of the GUI Vim window.  Also works for an xterm.
4723		The result will be -1 if the information is not available.
4724		The value can be used with `:winpos`.
4725
4726getwininfo([{winid}])					*getwininfo()*
4727		Returns information about windows as a List with Dictionaries.
4728
4729		If {winid} is given Information about the window with that ID
4730		is returned.  If the window does not exist the result is an
4731		empty list.
4732
4733		Without {winid} information about all the windows in all the
4734		tab pages is returned.
4735
4736		Each List item is a Dictionary with the following entries:
4737			bufnr		number of buffer in the window
4738			height		window height
4739			loclist		1 if showing a location list
4740					{only with the +quickfix feature}
4741			quickfix	1 if quickfix or location list window
4742					{only with the +quickfix feature}
4743			tabnr		tab page number
4744			variables	a reference to the dictionary with
4745					window-local variables
4746			width		window width
4747			winid		|window-ID|
4748			winnr		window number
4749
4750		To obtain all window-local variables use: >
4751			gettabwinvar({tabnr}, {winnr}, '&')
4752
4753getwinvar({winnr}, {varname} [, {def}])				*getwinvar()*
4754		Like |gettabwinvar()| for the current tabpage.
4755		Examples: >
4756			:let list_is_on = getwinvar(2, '&list')
4757			:echo "myvar = " . getwinvar(1, 'myvar')
4758<
4759glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])		*glob()*
4760		Expand the file wildcards in {expr}.  See |wildcards| for the
4761		use of special characters.
4762
4763		Unless the optional {nosuf} argument is given and is |TRUE|,
4764		the 'suffixes' and 'wildignore' options apply: Names matching
4765		one of the patterns in 'wildignore' will be skipped and
4766		'suffixes' affect the ordering of matches.
4767		'wildignorecase' always applies.
4768
4769		When {list} is present and it is |TRUE| the result is a List
4770		with all matching files. The advantage of using a List is,
4771		you also get filenames containing newlines correctly.
4772		Otherwise the result is a String and when there are several
4773		matches, they are separated by <NL> characters.
4774
4775		If the expansion fails, the result is an empty String or List.
4776
4777		A name for a non-existing file is not included.  A symbolic
4778		link is only included if it points to an existing file.
4779		However, when the {alllinks} argument is present and it is
4780		|TRUE| then all symbolic links are included.
4781
4782		For most systems backticks can be used to get files names from
4783		any external command.  Example: >
4784			:let tagfiles = glob("`find . -name tags -print`")
4785			:let &tags = substitute(tagfiles, "\n", ",", "g")
4786<		The result of the program inside the backticks should be one
4787		item per line.  Spaces inside an item are allowed.
4788
4789		See |expand()| for expanding special Vim variables.  See
4790		|system()| for getting the raw output of an external command.
4791
4792glob2regpat({expr})					 *glob2regpat()*
4793		Convert a file pattern, as used by glob(), into a search
4794		pattern.  The result can be used to match with a string that
4795		is a file name.  E.g. >
4796			if filename =~ glob2regpat('Make*.mak')
4797<		This is equivalent to: >
4798			if filename =~ '^Make.*\.mak$'
4799<		When {expr} is an empty string the result is "^$", match an
4800		empty string.
4801		Note that the result depends on the system.  On MS-Windows
4802		a backslash usually means a path separator.
4803
4804								*globpath()*
4805globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
4806		Perform glob() on all directories in {path} and concatenate
4807		the results.  Example: >
4808			:echo globpath(&rtp, "syntax/c.vim")
4809<
4810		{path} is a comma-separated list of directory names.  Each
4811		directory name is prepended to {expr} and expanded like with
4812		|glob()|.  A path separator is inserted when needed.
4813		To add a comma inside a directory name escape it with a
4814		backslash.  Note that on MS-Windows a directory may have a
4815		trailing backslash, remove it if you put a comma after it.
4816		If the expansion fails for one of the directories, there is no
4817		error message.
4818
4819		Unless the optional {nosuf} argument is given and is |TRUE|,
4820		the 'suffixes' and 'wildignore' options apply: Names matching
4821		one of the patterns in 'wildignore' will be skipped and
4822		'suffixes' affect the ordering of matches.
4823
4824		When {list} is present and it is |TRUE| the result is a List
4825		with all matching files. The advantage of using a List is, you
4826		also get filenames containing newlines correctly. Otherwise
4827		the result is a String and when there are several matches,
4828		they are separated by <NL> characters.  Example: >
4829			:echo globpath(&rtp, "syntax/c.vim", 0, 1)
4830<
4831		{alllinks} is used as with |glob()|.
4832
4833		The "**" item can be used to search in a directory tree.
4834		For example, to find all "README.txt" files in the directories
4835		in 'runtimepath' and below: >
4836			:echo globpath(&rtp, "**/README.txt")
4837<		Upwards search and limiting the depth of "**" is not
4838		supported, thus using 'path' will not always work properly.
4839
4840							*has()*
4841has({feature})	The result is a Number, which is 1 if the feature {feature} is
4842		supported, zero otherwise.  The {feature} argument is a
4843		string.  See |feature-list| below.
4844		Also see |exists()|.
4845
4846
4847has_key({dict}, {key})					*has_key()*
4848		The result is a Number, which is 1 if |Dictionary| {dict} has
4849		an entry with key {key}.  Zero otherwise.
4850
4851haslocaldir([{winnr} [, {tabnr}]])			*haslocaldir()*
4852		The result is a Number, which is 1 when the window has set a
4853		local path via |:lcd|, and 0 otherwise.
4854
4855		Without arguments use the current window.
4856		With {winnr} use this window in the current tab page.
4857		With {winnr} and {tabnr} use the window in the specified tab
4858		page.
4859		{winnr} can be the window number or the |window-ID|.
4860		Return 0 if the arguments are invalid.
4861
4862hasmapto({what} [, {mode} [, {abbr}]])			*hasmapto()*
4863		The result is a Number, which is 1 if there is a mapping that
4864		contains {what} in somewhere in the rhs (what it is mapped to)
4865		and this mapping exists in one of the modes indicated by
4866		{mode}.
4867		When {abbr} is there and it is |TRUE| use abbreviations
4868		instead of mappings.  Don't forget to specify Insert and/or
4869		Command-line mode.
4870		Both the global mappings and the mappings local to the current
4871		buffer are checked for a match.
4872		If no matching mapping is found 0 is returned.
4873		The following characters are recognized in {mode}:
4874			n	Normal mode
4875			v	Visual mode
4876			o	Operator-pending mode
4877			i	Insert mode
4878			l	Language-Argument ("r", "f", "t", etc.)
4879			c	Command-line mode
4880		When {mode} is omitted, "nvo" is used.
4881
4882		This function is useful to check if a mapping already exists
4883		to a function in a Vim script.  Example: >
4884			:if !hasmapto('\ABCdoit')
4885			:   map <Leader>d \ABCdoit
4886			:endif
4887<		This installs the mapping to "\ABCdoit" only if there isn't
4888		already a mapping to "\ABCdoit".
4889
4890histadd({history}, {item})				*histadd()*
4891		Add the String {item} to the history {history} which can be
4892		one of:					*hist-names*
4893			"cmd"	 or ":"	  command line history
4894			"search" or "/"   search pattern history
4895			"expr"	 or "="   typed expression history
4896			"input"  or "@"	  input line history
4897			"debug"  or ">"   debug command history
4898			empty		  the current or last used history
4899		The {history} string does not need to be the whole name, one
4900		character is sufficient.
4901		If {item} does already exist in the history, it will be
4902		shifted to become the newest entry.
4903		The result is a Number: 1 if the operation was successful,
4904		otherwise 0 is returned.
4905
4906		Example: >
4907			:call histadd("input", strftime("%Y %b %d"))
4908			:let date=input("Enter date: ")
4909<		This function is not available in the |sandbox|.
4910
4911histdel({history} [, {item}])				*histdel()*
4912		Clear {history}, i.e. delete all its entries.  See |hist-names|
4913		for the possible values of {history}.
4914
4915		If the parameter {item} evaluates to a String, it is used as a
4916		regular expression.  All entries matching that expression will
4917		be removed from the history (if there are any).
4918		Upper/lowercase must match, unless "\c" is used |/\c|.
4919		If {item} evaluates to a Number, it will be interpreted as
4920		an index, see |:history-indexing|.  The respective entry will
4921		be removed if it exists.
4922
4923		The result is a Number: 1 for a successful operation,
4924		otherwise 0 is returned.
4925
4926		Examples:
4927		Clear expression register history: >
4928			:call histdel("expr")
4929<
4930		Remove all entries starting with "*" from the search history: >
4931			:call histdel("/", '^\*')
4932<
4933		The following three are equivalent: >
4934			:call histdel("search", histnr("search"))
4935			:call histdel("search", -1)
4936			:call histdel("search", '^'.histget("search", -1).'$')
4937<
4938		To delete the last search pattern and use the last-but-one for
4939		the "n" command and 'hlsearch': >
4940			:call histdel("search", -1)
4941			:let @/ = histget("search", -1)
4942
4943histget({history} [, {index}])				*histget()*
4944		The result is a String, the entry with Number {index} from
4945		{history}.  See |hist-names| for the possible values of
4946		{history}, and |:history-indexing| for {index}.  If there is
4947		no such entry, an empty String is returned.  When {index} is
4948		omitted, the most recent item from the history is used.
4949
4950		Examples:
4951		Redo the second last search from history. >
4952			:execute '/' . histget("search", -2)
4953
4954<		Define an Ex command ":H {num}" that supports re-execution of
4955		the {num}th entry from the output of |:history|. >
4956			:command -nargs=1 H execute histget("cmd", 0+<args>)
4957<
4958histnr({history})					*histnr()*
4959		The result is the Number of the current entry in {history}.
4960		See |hist-names| for the possible values of {history}.
4961		If an error occurred, -1 is returned.
4962
4963		Example: >
4964			:let inp_index = histnr("expr")
4965<
4966hlexists({name})					*hlexists()*
4967		The result is a Number, which is non-zero if a highlight group
4968		called {name} exists.  This is when the group has been
4969		defined in some way.  Not necessarily when highlighting has
4970		been defined for it, it may also have been used for a syntax
4971		item.
4972							*highlight_exists()*
4973		Obsolete name: highlight_exists().
4974
4975							*hlID()*
4976hlID({name})	The result is a Number, which is the ID of the highlight group
4977		with name {name}.  When the highlight group doesn't exist,
4978		zero is returned.
4979		This can be used to retrieve information about the highlight
4980		group.  For example, to get the background color of the
4981		"Comment" group: >
4982	:echo synIDattr(synIDtrans(hlID("Comment")), "bg")
4983<							*highlightID()*
4984		Obsolete name: highlightID().
4985
4986hostname()						*hostname()*
4987		The result is a String, which is the name of the machine on
4988		which Vim is currently running.  Machine names greater than
4989		256 characters long are truncated.
4990
4991iconv({expr}, {from}, {to})				*iconv()*
4992		The result is a String, which is the text {expr} converted
4993		from encoding {from} to encoding {to}.
4994		When the conversion completely fails an empty string is
4995		returned.  When some characters could not be converted they
4996		are replaced with "?".
4997		The encoding names are whatever the iconv() library function
4998		can accept, see ":!man 3 iconv".
4999		Most conversions require Vim to be compiled with the |+iconv|
5000		feature.  Otherwise only UTF-8 to latin1 conversion and back
5001		can be done.
5002		This can be used to display messages with special characters,
5003		no matter what 'encoding' is set to.  Write the message in
5004		UTF-8 and use: >
5005			echo iconv(utf8_str, "utf-8", &enc)
5006<		Note that Vim uses UTF-8 for all Unicode encodings, conversion
5007		from/to UCS-2 is automatically changed to use UTF-8.  You
5008		cannot use UCS-2 in a string anyway, because of the NUL bytes.
5009		{only available when compiled with the |+multi_byte| feature}
5010
5011							*indent()*
5012indent({lnum})	The result is a Number, which is indent of line {lnum} in the
5013		current buffer.  The indent is counted in spaces, the value
5014		of 'tabstop' is relevant.  {lnum} is used just like in
5015		|getline()|.
5016		When {lnum} is invalid -1 is returned.
5017
5018
5019index({list}, {expr} [, {start} [, {ic}]])			*index()*
5020		Return the lowest index in |List| {list} where the item has a
5021		value equal to {expr}.  There is no automatic conversion, so
5022		the String "4" is different from the Number 4.  And the number
5023		4 is different from the Float 4.0.  The value of 'ignorecase'
5024		is not used here, case always matters.
5025		If {start} is given then start looking at the item with index
5026		{start} (may be negative for an item relative to the end).
5027		When {ic} is given and it is |TRUE|, ignore case.  Otherwise
5028		case must match.
5029		-1 is returned when {expr} is not found in {list}.
5030		Example: >
5031			:let idx = index(words, "the")
5032			:if index(numbers, 123) >= 0
5033
5034
5035input({prompt} [, {text} [, {completion}]])		*input()*
5036		The result is a String, which is whatever the user typed on
5037		the command-line.  The {prompt} argument is either a prompt
5038		string, or a blank string (for no prompt).  A '\n' can be used
5039		in the prompt to start a new line.
5040		The highlighting set with |:echohl| is used for the prompt.
5041		The input is entered just like a command-line, with the same
5042		editing commands and mappings.  There is a separate history
5043		for lines typed for input().
5044		Example: >
5045			:if input("Coffee or beer? ") == "beer"
5046			:  echo "Cheers!"
5047			:endif
5048<
5049		If the optional {text} argument is present and not empty, this
5050		is used for the default reply, as if the user typed this.
5051		Example: >
5052			:let color = input("Color? ", "white")
5053
5054<		The optional {completion} argument specifies the type of
5055		completion supported for the input.  Without it completion is
5056		not performed.  The supported completion types are the same as
5057		that can be supplied to a user-defined command using the
5058		"-complete=" argument.  Refer to |:command-completion| for
5059		more information.  Example: >
5060			let fname = input("File: ", "", "file")
5061<
5062		NOTE: This function must not be used in a startup file, for
5063		the versions that only run in GUI mode (e.g., the Win32 GUI).
5064		Note: When input() is called from within a mapping it will
5065		consume remaining characters from that mapping, because a
5066		mapping is handled like the characters were typed.
5067		Use |inputsave()| before input() and |inputrestore()|
5068		after input() to avoid that.  Another solution is to avoid
5069		that further characters follow in the mapping, e.g., by using
5070		|:execute| or |:normal|.
5071
5072		Example with a mapping: >
5073			:nmap \x :call GetFoo()<CR>:exe "/" . Foo<CR>
5074			:function GetFoo()
5075			:  call inputsave()
5076			:  let g:Foo = input("enter search pattern: ")
5077			:  call inputrestore()
5078			:endfunction
5079
5080inputdialog({prompt} [, {text} [, {cancelreturn}]])		*inputdialog()*
5081		Like |input()|, but when the GUI is running and text dialogs
5082		are supported, a dialog window pops up to input the text.
5083		Example: >
5084		   :let n = inputdialog("value for shiftwidth", shiftwidth())
5085		   :if n != ""
5086		   :  let &sw = n
5087		   :endif
5088<		When the dialog is cancelled {cancelreturn} is returned.  When
5089		omitted an empty string is returned.
5090		Hitting <Enter> works like pressing the OK button.  Hitting
5091		<Esc> works like pressing the Cancel button.
5092		NOTE: Command-line completion is not supported.
5093
5094inputlist({textlist})					*inputlist()*
5095		{textlist} must be a |List| of strings.  This |List| is
5096		displayed, one string per line.  The user will be prompted to
5097		enter a number, which is returned.
5098		The user can also select an item by clicking on it with the
5099		mouse.  For the first string 0 is returned.  When clicking
5100		above the first item a negative number is returned.  When
5101		clicking on the prompt one more than the length of {textlist}
5102		is returned.
5103		Make sure {textlist} has less than 'lines' entries, otherwise
5104		it won't work.  It's a good idea to put the entry number at
5105		the start of the string.  And put a prompt in the first item.
5106		Example: >
5107			let color = inputlist(['Select color:', '1. red',
5108				\ '2. green', '3. blue'])
5109
5110inputrestore()						*inputrestore()*
5111		Restore typeahead that was saved with a previous |inputsave()|.
5112		Should be called the same number of times inputsave() is
5113		called.  Calling it more often is harmless though.
5114		Returns 1 when there is nothing to restore, 0 otherwise.
5115
5116inputsave()						*inputsave()*
5117		Preserve typeahead (also from mappings) and clear it, so that
5118		a following prompt gets input from the user.  Should be
5119		followed by a matching inputrestore() after the prompt.  Can
5120		be used several times, in which case there must be just as
5121		many inputrestore() calls.
5122		Returns 1 when out of memory, 0 otherwise.
5123
5124inputsecret({prompt} [, {text}])			*inputsecret()*
5125		This function acts much like the |input()| function with but
5126		two exceptions:
5127		a) the user's response will be displayed as a sequence of
5128		asterisks ("*") thereby keeping the entry secret, and
5129		b) the user's response will not be recorded on the input
5130		|history| stack.
5131		The result is a String, which is whatever the user actually
5132		typed on the command-line in response to the issued prompt.
5133		NOTE: Command-line completion is not supported.
5134
5135insert({list}, {item} [, {idx}])			*insert()*
5136		Insert {item} at the start of |List| {list}.
5137		If {idx} is specified insert {item} before the item with index
5138		{idx}.  If {idx} is zero it goes before the first item, just
5139		like omitting {idx}.  A negative {idx} is also possible, see
5140		|list-index|.  -1 inserts just before the last item.
5141		Returns the resulting |List|.  Examples: >
5142			:let mylist = insert([2, 3, 5], 1)
5143			:call insert(mylist, 4, -1)
5144			:call insert(mylist, 6, len(mylist))
5145<		The last example can be done simpler with |add()|.
5146		Note that when {item} is a |List| it is inserted as a single
5147		item.  Use |extend()| to concatenate |Lists|.
5148
5149invert({expr})						*invert()*
5150		Bitwise invert.  The argument is converted to a number.  A
5151		List, Dict or Float argument causes an error.  Example: >
5152			:let bits = invert(bits)
5153
5154isdirectory({directory})				*isdirectory()*
5155		The result is a Number, which is |TRUE| when a directory
5156		with the name {directory} exists.  If {directory} doesn't
5157		exist, or isn't a directory, the result is |FALSE|.  {directory}
5158		is any expression, which is used as a String.
5159
5160islocked({expr})					*islocked()* *E786*
5161		The result is a Number, which is |TRUE| when {expr} is the
5162		name of a locked variable.
5163		{expr} must be the name of a variable, |List| item or
5164		|Dictionary| entry, not the variable itself!  Example: >
5165			:let alist = [0, ['a', 'b'], 2, 3]
5166			:lockvar 1 alist
5167			:echo islocked('alist')		" 1
5168			:echo islocked('alist[1]')	" 0
5169
5170<		When {expr} is a variable that does not exist you get an error
5171		message.  Use |exists()| to check for existence.
5172
5173isnan({expr})						*isnan()*
5174		Return |TRUE| if {expr} is a float with value NaN. >
5175			echo isnan(0.0 / 0.0)
5176<			1 ~
5177
5178		{only available when compiled with the |+float| feature}
5179
5180items({dict})						*items()*
5181		Return a |List| with all the key-value pairs of {dict}.  Each
5182		|List| item is a list with two items: the key of a {dict}
5183		entry and the value of this entry.  The |List| is in arbitrary
5184		order.
5185
5186job_getchannel({job})					 *job_getchannel()*
5187		Get the channel handle that {job} is using.
5188		To check if the job has no channel: >
5189			if string(job_getchannel()) == 'channel fail'
5190<
5191		{only available when compiled with the |+job| feature}
5192
5193job_info({job})						*job_info()*
5194		Returns a Dictionary with information about {job}:
5195		   "status"	what |job_status()| returns
5196		   "channel"	what |job_getchannel()| returns
5197		   "process"	process ID
5198		   "tty"	controlling terminal name, empty when none
5199		   "exitval"	only valid when "status" is "dead"
5200		   "exit_cb"	function to be called on exit
5201		   "stoponexit"	|job-stoponexit|
5202
5203job_setoptions({job}, {options})			*job_setoptions()*
5204		Change options for {job}.  Supported are:
5205		   "stoponexit"	|job-stoponexit|
5206		   "exit_cb"	|job-exit_cb|
5207
5208job_start({command} [, {options}])			*job_start()*
5209		Start a job and return a Job object.  Unlike |system()| and
5210		|:!cmd| this does not wait for the job to finish.
5211
5212		{command} can be a String.  This works best on MS-Windows.  On
5213		Unix it is split up in white-separated parts to be passed to
5214		execvp().  Arguments in double quotes can contain white space.
5215
5216		{command} can be a List, where the first item is the executable
5217		and further items are the arguments.  All items are converted
5218		to String.  This works best on Unix.
5219
5220		On MS-Windows, job_start() makes a GUI application hidden. If
5221		want to show it, Use |:!start| instead.
5222
5223		The command is executed directly, not through a shell, the
5224		'shell' option is not used.  To use the shell: >
5225	let job = job_start(["/bin/sh", "-c", "echo hello"])
5226<		Or: >
5227	let job = job_start('/bin/sh -c "echo hello"')
5228<		Note that this will start two processes, the shell and the
5229		command it executes.  If you don't want this use the "exec"
5230		shell command.
5231
5232		On Unix $PATH is used to search for the executable only when
5233		the command does not contain a slash.
5234
5235		The job will use the same terminal as Vim.  If it reads from
5236		stdin the job and Vim will be fighting over input, that
5237		doesn't work.  Redirect stdin and stdout to avoid problems: >
5238	let job = job_start(['sh', '-c', "myserver </dev/null >/dev/null"])
5239<
5240		The returned Job object can be used to get the status with
5241		|job_status()| and stop the job with |job_stop()|.
5242
5243		{options} must be a Dictionary.  It can contain many optional
5244		items, see |job-options|.
5245
5246		{only available when compiled with the |+job| feature}
5247
5248job_status({job})					*job_status()* *E916*
5249		Returns a String with the status of {job}:
5250			"run"	job is running
5251			"fail"	job failed to start
5252			"dead"	job died or was stopped after running
5253
5254		On Unix a non-existing command results in "dead" instead of
5255		"fail", because a fork happens before the failure can be
5256		detected.
5257
5258		If an exit callback was set with the "exit_cb" option and the
5259		job is now detected to be "dead" the callback will be invoked.
5260
5261		For more information see |job_info()|.
5262
5263		{only available when compiled with the |+job| feature}
5264
5265job_stop({job} [, {how}])					*job_stop()*
5266		Stop the {job}.  This can also be used to signal the job.
5267
5268		When {how} is omitted or is "term" the job will be terminated.
5269		For Unix SIGTERM is sent.  On MS-Windows the job will be
5270		terminated forcedly (there is no "gentle" way).
5271		This goes to the process group, thus children may also be
5272		affected.
5273
5274		Effect for Unix:
5275			"term"	 SIGTERM (default)
5276			"hup"	 SIGHUP
5277			"quit"	 SIGQUIT
5278			"int"	 SIGINT
5279			"kill"	 SIGKILL (strongest way to stop)
5280			number	 signal with that number
5281
5282		Effect for MS-Windows:
5283			"term"	 terminate process forcedly (default)
5284			"hup"	 CTRL_BREAK
5285			"quit"	 CTRL_BREAK
5286			"int"	 CTRL_C
5287			"kill"	 terminate process forcedly
5288			Others	 CTRL_BREAK
5289
5290		On Unix the signal is sent to the process group.  This means
5291		that when the job is "sh -c command" it affects both the shell
5292		and the command.
5293
5294		The result is a Number: 1 if the operation could be executed,
5295		0 if "how" is not supported on the system.
5296		Note that even when the operation was executed, whether the
5297		job was actually stopped needs to be checked with
5298		|job_status()|.
5299
5300		If the status of the job is "dead", the signal will not be
5301		sent.  This is to avoid to stop the wrong job (esp. on Unix,
5302		where process numbers are recycled).
5303
5304		When using "kill" Vim will assume the job will die and close
5305		the channel.
5306
5307		{only available when compiled with the |+job| feature}
5308
5309join({list} [, {sep}])					*join()*
5310		Join the items in {list} together into one String.
5311		When {sep} is specified it is put in between the items.  If
5312		{sep} is omitted a single space is used.
5313		Note that {sep} is not added at the end.  You might want to
5314		add it there too: >
5315			let lines = join(mylist, "\n") . "\n"
5316<		String items are used as-is.  |Lists| and |Dictionaries| are
5317		converted into a string like with |string()|.
5318		The opposite function is |split()|.
5319
5320js_decode({string})					*js_decode()*
5321		This is similar to |json_decode()| with these differences:
5322		- Object key names do not have to be in quotes.
5323		- Strings can be in single quotes.
5324		- Empty items in an array (between two commas) are allowed and
5325		  result in v:none items.
5326
5327js_encode({expr})					*js_encode()*
5328		This is similar to |json_encode()| with these differences:
5329		- Object key names are not in quotes.
5330		- v:none items in an array result in an empty item between
5331		  commas.
5332		For example, the Vim object:
5333			[1,v:none,{"one":1},v:none] ~
5334		Will be encoded as:
5335			[1,,{one:1},,] ~
5336		While json_encode() would produce:
5337			[1,null,{"one":1},null] ~
5338		This encoding is valid for JavaScript. It is more efficient
5339		than JSON, especially when using an array with optional items.
5340
5341
5342json_decode({string})					*json_decode()*
5343		This parses a JSON formatted string and returns the equivalent
5344		in Vim values.  See |json_encode()| for the relation between
5345		JSON and Vim values.
5346		The decoding is permissive:
5347		- A trailing comma in an array and object is ignored, e.g.
5348		  "[1, 2, ]" is the same as "[1, 2]".
5349		- More floating point numbers are recognized, e.g. "1." for
5350		  "1.0", or "001.2" for "1.2". Special floating point values
5351		  "Infinity" and "NaN" (capitalization ignored) are accepted.
5352		- Leading zeroes in integer numbers are ignored, e.g. "012"
5353		  for "12" or "-012" for "-12".
5354		- Capitalization is ignored in literal names null, true or
5355		  false, e.g. "NULL" for "null", "True" for "true".
5356		- Control characters U+0000 through U+001F which are not
5357		  escaped in strings are accepted, e.g. "	" (tab
5358		  character in string) for "\t".
5359		- Backslash in an invalid 2-character sequence escape is
5360		  ignored, e.g. "\a" is decoded as "a".
5361		- A correct surrogate pair in JSON strings should normally be
5362		  a 12 character sequence such as "\uD834\uDD1E", but
5363		  json_decode() silently accepts truncated surrogate pairs
5364		  such as "\uD834" or "\uD834\u"
5365								*E938*
5366		A duplicate key in an object, valid in rfc7159, is not
5367		accepted by json_decode() as the result must be a valid Vim
5368		type, e.g. this fails: {"a":"b", "a":"c"}
5369
5370
5371json_encode({expr})					*json_encode()*
5372		Encode {expr} as JSON and return this as a string.
5373		The encoding is specified in:
5374		https://tools.ietf.org/html/rfc7159.html
5375		Vim values are converted as follows:
5376		   Number		decimal number
5377		   Float		floating point number
5378		   Float nan		"NaN"
5379		   Float inf		"Infinity"
5380		   String		in double quotes (possibly null)
5381		   Funcref		not possible, error
5382		   List			as an array (possibly null); when
5383					used recursively: []
5384		   Dict			as an object (possibly null); when
5385					used recursively: {}
5386		   v:false		"false"
5387		   v:true		"true"
5388		   v:none		"null"
5389		   v:null		"null"
5390		Note that NaN and Infinity are passed on as values.  This is
5391		missing in the JSON standard, but several implementations do
5392		allow it.  If not then you will get an error.
5393
5394keys({dict})						*keys()*
5395		Return a |List| with all the keys of {dict}.  The |List| is in
5396		arbitrary order.
5397
5398							*len()* *E701*
5399len({expr})	The result is a Number, which is the length of the argument.
5400		When {expr} is a String or a Number the length in bytes is
5401		used, as with |strlen()|.
5402		When {expr} is a |List| the number of items in the |List| is
5403		returned.
5404		When {expr} is a |Dictionary| the number of entries in the
5405		|Dictionary| is returned.
5406		Otherwise an error is given.
5407
5408						*libcall()* *E364* *E368*
5409libcall({libname}, {funcname}, {argument})
5410		Call function {funcname} in the run-time library {libname}
5411		with single argument {argument}.
5412		This is useful to call functions in a library that you
5413		especially made to be used with Vim.  Since only one argument
5414		is possible, calling standard library functions is rather
5415		limited.
5416		The result is the String returned by the function.  If the
5417		function returns NULL, this will appear as an empty string ""
5418		to Vim.
5419		If the function returns a number, use libcallnr()!
5420		If {argument} is a number, it is passed to the function as an
5421		int; if {argument} is a string, it is passed as a
5422		null-terminated string.
5423		This function will fail in |restricted-mode|.
5424
5425		libcall() allows you to write your own 'plug-in' extensions to
5426		Vim without having to recompile the program.  It is NOT a
5427		means to call system functions!  If you try to do so Vim will
5428		very probably crash.
5429
5430		For Win32, the functions you write must be placed in a DLL
5431		and use the normal C calling convention (NOT Pascal which is
5432		used in Windows System DLLs).  The function must take exactly
5433		one parameter, either a character pointer or a long integer,
5434		and must return a character pointer or NULL.  The character
5435		pointer returned must point to memory that will remain valid
5436		after the function has returned (e.g. in static data in the
5437		DLL).  If it points to allocated memory, that memory will
5438		leak away.  Using a static buffer in the function should work,
5439		it's then freed when the DLL is unloaded.
5440
5441		WARNING: If the function returns a non-valid pointer, Vim may
5442		crash!	This also happens if the function returns a number,
5443		because Vim thinks it's a pointer.
5444		For Win32 systems, {libname} should be the filename of the DLL
5445		without the ".DLL" suffix.  A full path is only required if
5446		the DLL is not in the usual places.
5447		For Unix: When compiling your own plugins, remember that the
5448		object code must be compiled as position-independent ('PIC').
5449		{only in Win32 and some Unix versions, when the |+libcall|
5450		feature is present}
5451		Examples: >
5452			:echo libcall("libc.so", "getenv", "HOME")
5453<
5454							*libcallnr()*
5455libcallnr({libname}, {funcname}, {argument})
5456		Just like |libcall()|, but used for a function that returns an
5457		int instead of a string.
5458		{only in Win32 on some Unix versions, when the |+libcall|
5459		feature is present}
5460		Examples: >
5461			:echo libcallnr("/usr/lib/libc.so", "getpid", "")
5462			:call libcallnr("libc.so", "printf", "Hello World!\n")
5463			:call libcallnr("libc.so", "sleep", 10)
5464<
5465							*line()*
5466line({expr})	The result is a Number, which is the line number of the file
5467		position given with {expr}.  The accepted positions are:
5468		    .	    the cursor position
5469		    $	    the last line in the current buffer
5470		    'x	    position of mark x (if the mark is not set, 0 is
5471			    returned)
5472		    w0	    first line visible in current window (one if the
5473			    display isn't updated, e.g. in silent Ex mode)
5474		    w$	    last line visible in current window (this is one
5475			    less than "w0" if no lines are visible)
5476		    v	    In Visual mode: the start of the Visual area (the
5477			    cursor is the end).  When not in Visual mode
5478			    returns the cursor position.  Differs from |'<| in
5479			    that it's updated right away.
5480		Note that a mark in another file can be used.  The line number
5481		then applies to another buffer.
5482		To get the column number use |col()|.  To get both use
5483		|getpos()|.
5484		Examples: >
5485			line(".")		line number of the cursor
5486			line("'t")		line number of mark t
5487			line("'" . marker)	line number of mark marker
5488<							*last-position-jump*
5489		This autocommand jumps to the last known position in a file
5490		just after opening it, if the '" mark is set: >
5491     :au BufReadPost *
5492	 \ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit'
5493	 \ |   exe "normal! g`\""
5494	 \ | endif
5495
5496line2byte({lnum})					*line2byte()*
5497		Return the byte count from the start of the buffer for line
5498		{lnum}.  This includes the end-of-line character, depending on
5499		the 'fileformat' option for the current buffer.  The first
5500		line returns 1. 'encoding' matters, 'fileencoding' is ignored.
5501		This can also be used to get the byte count for the line just
5502		below the last line: >
5503			line2byte(line("$") + 1)
5504<		This is the buffer size plus one.  If 'fileencoding' is empty
5505		it is the file size plus one.
5506		When {lnum} is invalid, or the |+byte_offset| feature has been
5507		disabled at compile time, -1 is returned.
5508		Also see |byte2line()|, |go| and |:goto|.
5509
5510lispindent({lnum})					*lispindent()*
5511		Get the amount of indent for line {lnum} according the lisp
5512		indenting rules, as with 'lisp'.
5513		The indent is counted in spaces, the value of 'tabstop' is
5514		relevant.  {lnum} is used just like in |getline()|.
5515		When {lnum} is invalid or Vim was not compiled the
5516		|+lispindent| feature, -1 is returned.
5517
5518localtime()						*localtime()*
5519		Return the current time, measured as seconds since 1st Jan
5520		1970.  See also |strftime()| and |getftime()|.
5521
5522
5523log({expr})						*log()*
5524		Return the natural logarithm (base e) of {expr} as a |Float|.
5525		{expr} must evaluate to a |Float| or a |Number| in the range
5526		(0, inf].
5527		Examples: >
5528			:echo log(10)
5529<			2.302585 >
5530			:echo log(exp(5))
5531<			5.0
5532		{only available when compiled with the |+float| feature}
5533
5534
5535log10({expr})						*log10()*
5536		Return the logarithm of Float {expr} to base 10 as a |Float|.
5537		{expr} must evaluate to a |Float| or a |Number|.
5538		Examples: >
5539			:echo log10(1000)
5540<			3.0 >
5541			:echo log10(0.01)
5542<			-2.0
5543		{only available when compiled with the |+float| feature}
5544
5545luaeval({expr}[, {expr}])					*luaeval()*
5546		Evaluate Lua expression {expr} and return its result converted
5547		to Vim data structures. Second {expr} may hold additional
5548		argument accessible as _A inside first {expr}.
5549		Strings are returned as they are.
5550		Boolean objects are converted to numbers.
5551		Numbers are converted to |Float| values if vim was compiled
5552		with |+float| and to numbers otherwise.
5553		Dictionaries and lists obtained by vim.eval() are returned
5554		as-is.
5555		Other objects are returned as zero without any errors.
5556		See |lua-luaeval| for more details.
5557		{only available when compiled with the |+lua| feature}
5558
5559map({expr1}, {expr2})					*map()*
5560		{expr1} must be a |List| or a |Dictionary|.
5561		Replace each item in {expr1} with the result of evaluating
5562		{expr2}.  {expr2} must be a |string| or |Funcref|.
5563
5564		If {expr2} is a |string|, inside {expr2} |v:val| has the value
5565		of the current item.  For a |Dictionary| |v:key| has the key
5566		of the current item and for a |List| |v:key| has the index of
5567		the current item.
5568		Example: >
5569			:call map(mylist, '"> " . v:val . " <"')
5570<		This puts "> " before and " <" after each item in "mylist".
5571
5572		Note that {expr2} is the result of an expression and is then
5573		used as an expression again.  Often it is good to use a
5574		|literal-string| to avoid having to double backslashes.  You
5575		still have to double ' quotes
5576
5577		If {expr2} is a |Funcref| it is called with two arguments:
5578			1. The key or the index of the current item.
5579			2. the value of the current item.
5580		The function must return the new value of the item. Example
5581		that changes each value by "key-value": >
5582			func KeyValue(key, val)
5583			  return a:key . '-' . a:val
5584			endfunc
5585			call map(myDict, function('KeyValue'))
5586<		It is shorter when using a |lambda|: >
5587			call map(myDict, {key, val -> key . '-' . val})
5588<		If you do not use "val" you can leave it out: >
5589			call map(myDict, {key -> 'item: ' . key})
5590<
5591		The operation is done in-place.  If you want a |List| or
5592		|Dictionary| to remain unmodified make a copy first: >
5593			:let tlist = map(copy(mylist), ' v:val . "\t"')
5594
5595<		Returns {expr1}, the |List| or |Dictionary| that was filtered.
5596		When an error is encountered while evaluating {expr2} no
5597		further items in {expr1} are processed.  When {expr2} is a
5598		Funcref errors inside a function are ignored, unless it was
5599		defined with the "abort" flag.
5600
5601
5602maparg({name}[, {mode} [, {abbr} [, {dict}]]])			*maparg()*
5603		When {dict} is omitted or zero: Return the rhs of mapping
5604		{name} in mode {mode}.  The returned String has special
5605		characters translated like in the output of the ":map" command
5606		listing.
5607
5608		When there is no mapping for {name}, an empty String is
5609		returned.
5610
5611		The {name} can have special key names, like in the ":map"
5612		command.
5613
5614		{mode} can be one of these strings:
5615			"n"	Normal
5616			"v"	Visual (including Select)
5617			"o"	Operator-pending
5618			"i"	Insert
5619			"c"	Cmd-line
5620			"s"	Select
5621			"x"	Visual
5622			"l"	langmap |language-mapping|
5623			""	Normal, Visual and Operator-pending
5624		When {mode} is omitted, the modes for "" are used.
5625
5626		When {abbr} is there and it is |TRUE| use abbreviations
5627		instead of mappings.
5628
5629		When {dict} is there and it is |TRUE| return a dictionary
5630		containing all the information of the mapping with the
5631		following items:
5632		  "lhs"	     The {lhs} of the mapping.
5633		  "rhs"	     The {rhs} of the mapping as typed.
5634		  "silent"   1 for a |:map-silent| mapping, else 0.
5635		  "noremap"  1 if the {rhs} of the mapping is not remappable.
5636		  "expr"     1 for an expression mapping (|:map-<expr>|).
5637		  "buffer"   1 for a buffer local mapping (|:map-local|).
5638		  "mode"     Modes for which the mapping is defined. In
5639			     addition to the modes mentioned above, these
5640			     characters will be used:
5641			     " "     Normal, Visual and Operator-pending
5642			     "!"     Insert and Commandline mode
5643				     (|mapmode-ic|)
5644		  "sid"	     The script local ID, used for <sid> mappings
5645			     (|<SID>|).
5646		  "nowait"   Do not wait for other, longer mappings.
5647			     (|:map-<nowait>|).
5648
5649		The mappings local to the current buffer are checked first,
5650		then the global mappings.
5651		This function can be used to map a key even when it's already
5652		mapped, and have it do the original mapping too.  Sketch: >
5653			exe 'nnoremap <Tab> ==' . maparg('<Tab>', 'n')
5654
5655
5656mapcheck({name}[, {mode} [, {abbr}]])			*mapcheck()*
5657		Check if there is a mapping that matches with {name} in mode
5658		{mode}.  See |maparg()| for {mode} and special names in
5659		{name}.
5660		When {abbr} is there and it is |TRUE| use abbreviations
5661		instead of mappings.
5662		A match happens with a mapping that starts with {name} and
5663		with a mapping which is equal to the start of {name}.
5664
5665			matches mapping "a"	"ab"	"abc" ~
5666		   mapcheck("a")	yes	yes	 yes
5667		   mapcheck("abc")	yes	yes	 yes
5668		   mapcheck("ax")	yes	no	 no
5669		   mapcheck("b")	no	no	 no
5670
5671		The difference with maparg() is that mapcheck() finds a
5672		mapping that matches with {name}, while maparg() only finds a
5673		mapping for {name} exactly.
5674		When there is no mapping that starts with {name}, an empty
5675		String is returned.  If there is one, the rhs of that mapping
5676		is returned.  If there are several mappings that start with
5677		{name}, the rhs of one of them is returned.
5678		The mappings local to the current buffer are checked first,
5679		then the global mappings.
5680		This function can be used to check if a mapping can be added
5681		without being ambiguous.  Example: >
5682	:if mapcheck("_vv") == ""
5683	:   map _vv :set guifont=7x13<CR>
5684	:endif
5685<		This avoids adding the "_vv" mapping when there already is a
5686		mapping for "_v" or for "_vvv".
5687
5688match({expr}, {pat}[, {start}[, {count}]])			*match()*
5689		When {expr} is a |List| then this returns the index of the
5690		first item where {pat} matches.  Each item is used as a
5691		String, |Lists| and |Dictionaries| are used as echoed.
5692		Otherwise, {expr} is used as a String.  The result is a
5693		Number, which gives the index (byte offset) in {expr} where
5694		{pat} matches.
5695		A match at the first character or |List| item returns zero.
5696		If there is no match -1 is returned.
5697		For getting submatches see |matchlist()|.
5698		Example: >
5699			:echo match("testing", "ing")	" results in 4
5700			:echo match([1, 'x'], '\a')	" results in 1
5701<		See |string-match| for how {pat} is used.
5702								*strpbrk()*
5703		Vim doesn't have a strpbrk() function.  But you can do: >
5704			:let sepidx = match(line, '[.,;: \t]')
5705<								*strcasestr()*
5706		Vim doesn't have a strcasestr() function.  But you can add
5707		"\c" to the pattern to ignore case: >
5708			:let idx = match(haystack, '\cneedle')
5709<
5710		If {start} is given, the search starts from byte index
5711		{start} in a String or item {start} in a |List|.
5712		The result, however, is still the index counted from the
5713		first character/item.  Example: >
5714			:echo match("testing", "ing", 2)
5715<		result is again "4". >
5716			:echo match("testing", "ing", 4)
5717<		result is again "4". >
5718			:echo match("testing", "t", 2)
5719<		result is "3".
5720		For a String, if {start} > 0 then it is like the string starts
5721		{start} bytes later, thus "^" will match at {start}.  Except
5722		when {count} is given, then it's like matches before the
5723		{start} byte are ignored (this is a bit complicated to keep it
5724		backwards compatible).
5725		For a String, if {start} < 0, it will be set to 0.  For a list
5726		the index is counted from the end.
5727		If {start} is out of range ({start} > strlen({expr}) for a
5728		String or {start} > len({expr}) for a |List|) -1 is returned.
5729
5730		When {count} is given use the {count}'th match.  When a match
5731		is found in a String the search for the next one starts one
5732		character further.  Thus this example results in 1: >
5733			echo match("testing", "..", 0, 2)
5734<		In a |List| the search continues in the next item.
5735		Note that when {count} is added the way {start} works changes,
5736		see above.
5737
5738		See |pattern| for the patterns that are accepted.
5739		The 'ignorecase' option is used to set the ignore-caseness of
5740		the pattern.  'smartcase' is NOT used.  The matching is always
5741		done like 'magic' is set and 'cpoptions' is empty.
5742
5743					*matchadd()* *E798* *E799* *E801*
5744matchadd({group}, {pattern}[, {priority}[, {id}[, {dict}]]])
5745		Defines a pattern to be highlighted in the current window (a
5746		"match").  It will be highlighted with {group}.  Returns an
5747		identification number (ID), which can be used to delete the
5748		match using |matchdelete()|.
5749		Matching is case sensitive and magic, unless case sensitivity
5750		or magicness are explicitly overridden in {pattern}.  The
5751		'magic', 'smartcase' and 'ignorecase' options are not used.
5752		The "Conceal" value is special, it causes the match to be
5753		concealed.
5754
5755		The optional {priority} argument assigns a priority to the
5756		match.  A match with a high priority will have its
5757		highlighting overrule that of a match with a lower priority.
5758		A priority is specified as an integer (negative numbers are no
5759		exception).  If the {priority} argument is not specified, the
5760		default priority is 10.  The priority of 'hlsearch' is zero,
5761		hence all matches with a priority greater than zero will
5762		overrule it.  Syntax highlighting (see 'syntax') is a separate
5763		mechanism, and regardless of the chosen priority a match will
5764		always overrule syntax highlighting.
5765
5766		The optional {id} argument allows the request for a specific
5767		match ID.  If a specified ID is already taken, an error
5768		message will appear and the match will not be added.  An ID
5769		is specified as a positive integer (zero excluded).  IDs 1, 2
5770		and 3 are reserved for |:match|, |:2match| and |:3match|,
5771		respectively.  If the {id} argument is not specified or -1,
5772		|matchadd()| automatically chooses a free ID.
5773
5774		The optional {dict} argument allows for further custom
5775		values. Currently this is used to specify a match specific
5776		conceal character that will be shown for |hl-Conceal|
5777		highlighted matches. The dict can have the following members:
5778
5779			conceal	    Special character to show instead of the
5780				    match (only for |hl-Conceal| highlighted
5781				    matches, see |:syn-cchar|)
5782
5783		The number of matches is not limited, as it is the case with
5784		the |:match| commands.
5785
5786		Example: >
5787			:highlight MyGroup ctermbg=green guibg=green
5788			:let m = matchadd("MyGroup", "TODO")
5789<		Deletion of the pattern: >
5790			:call matchdelete(m)
5791
5792<		A list of matches defined by |matchadd()| and |:match| are
5793		available from |getmatches()|.  All matches can be deleted in
5794		one operation by |clearmatches()|.
5795
5796							*matchaddpos()*
5797matchaddpos({group}, {pos}[, {priority}[, {id}[, {dict}]]])
5798		Same as |matchadd()|, but requires a list of positions {pos}
5799		instead of a pattern. This command is faster than |matchadd()|
5800		because it does not require to handle regular expressions and
5801		sets buffer line boundaries to redraw screen. It is supposed
5802		to be used when fast match additions and deletions are
5803		required, for example to highlight matching parentheses.
5804
5805		The list {pos} can contain one of these items:
5806		- A number.  This whole line will be highlighted.  The first
5807		  line has number 1.
5808		- A list with one number, e.g., [23]. The whole line with this
5809		  number will be highlighted.
5810		- A list with two numbers, e.g., [23, 11]. The first number is
5811		  the line number, the second one is the column number (first
5812		  column is 1, the value must correspond to the byte index as
5813		  |col()| would return).  The character at this position will
5814		  be highlighted.
5815		- A list with three numbers, e.g., [23, 11, 3]. As above, but
5816		  the third number gives the length of the highlight in bytes.
5817
5818		The maximum number of positions is 8.
5819
5820		Example: >
5821			:highlight MyGroup ctermbg=green guibg=green
5822			:let m = matchaddpos("MyGroup", [[23, 24], 34])
5823<		Deletion of the pattern: >
5824			:call matchdelete(m)
5825
5826<		Matches added by |matchaddpos()| are returned by
5827		|getmatches()| with an entry "pos1", "pos2", etc., with the
5828		value a list like the {pos} item.
5829		These matches cannot be set via |setmatches()|, however they
5830		can still be deleted by |clearmatches()|.
5831
5832matcharg({nr})							*matcharg()*
5833		Selects the {nr} match item, as set with a |:match|,
5834		|:2match| or |:3match| command.
5835		Return a |List| with two elements:
5836			The name of the highlight group used
5837			The pattern used.
5838		When {nr} is not 1, 2 or 3 returns an empty |List|.
5839		When there is no match item set returns ['', ''].
5840		This is useful to save and restore a |:match|.
5841		Highlighting matches using the |:match| commands are limited
5842		to three matches. |matchadd()| does not have this limitation.
5843
5844matchdelete({id})			       *matchdelete()* *E802* *E803*
5845		Deletes a match with ID {id} previously defined by |matchadd()|
5846		or one of the |:match| commands.  Returns 0 if successful,
5847		otherwise -1.  See example for |matchadd()|.  All matches can
5848		be deleted in one operation by |clearmatches()|.
5849
5850matchend({expr}, {pat}[, {start}[, {count}]])			*matchend()*
5851		Same as |match()|, but return the index of first character
5852		after the match.  Example: >
5853			:echo matchend("testing", "ing")
5854<		results in "7".
5855							*strspn()* *strcspn()*
5856		Vim doesn't have a strspn() or strcspn() function, but you can
5857		do it with matchend(): >
5858			:let span = matchend(line, '[a-zA-Z]')
5859			:let span = matchend(line, '[^a-zA-Z]')
5860<		Except that -1 is returned when there are no matches.
5861
5862		The {start}, if given, has the same meaning as for |match()|. >
5863			:echo matchend("testing", "ing", 2)
5864<		results in "7". >
5865			:echo matchend("testing", "ing", 5)
5866<		result is "-1".
5867		When {expr} is a |List| the result is equal to |match()|.
5868
5869matchlist({expr}, {pat}[, {start}[, {count}]])			*matchlist()*
5870		Same as |match()|, but return a |List|.  The first item in the
5871		list is the matched string, same as what matchstr() would
5872		return.  Following items are submatches, like "\1", "\2", etc.
5873		in |:substitute|.  When an optional submatch didn't match an
5874		empty string is used.  Example: >
5875			echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)')
5876<		Results in: ['acd', 'a', '', 'c', 'd', '', '', '', '', '']
5877		When there is no match an empty list is returned.
5878
5879matchstr({expr}, {pat}[, {start}[, {count}]])			*matchstr()*
5880		Same as |match()|, but return the matched string.  Example: >
5881			:echo matchstr("testing", "ing")
5882<		results in "ing".
5883		When there is no match "" is returned.
5884		The {start}, if given, has the same meaning as for |match()|. >
5885			:echo matchstr("testing", "ing", 2)
5886<		results in "ing". >
5887			:echo matchstr("testing", "ing", 5)
5888<		result is "".
5889		When {expr} is a |List| then the matching item is returned.
5890		The type isn't changed, it's not necessarily a String.
5891
5892matchstrpos({expr}, {pat}[, {start}[, {count}]])		*matchstrpos()*
5893		Same as |matchstr()|, but return the matched string, the start
5894		position and the end position of the match.  Example: >
5895			:echo matchstrpos("testing", "ing")
5896<		results in ["ing", 4, 7].
5897		When there is no match ["", -1, -1] is returned.
5898		The {start}, if given, has the same meaning as for |match()|. >
5899			:echo matchstrpos("testing", "ing", 2)
5900<		results in ["ing", 4, 7]. >
5901			:echo matchstrpos("testing", "ing", 5)
5902<		result is ["", -1, -1].
5903		When {expr} is a |List| then the matching item, the index
5904		of first item where {pat} matches, the start position and the
5905		end position of the match are returned. >
5906			:echo matchstrpos([1, '__x'], '\a')
5907<		result is ["x", 1, 2, 3].
5908		The type isn't changed, it's not necessarily a String.
5909
5910							*max()*
5911max({expr})	Return the maximum value of all items in {expr}.
5912		{expr} can be a list or a dictionary.  For a dictionary,
5913		it returns the maximum of all values in the dictionary.
5914		If {expr} is neither a list nor a dictionary, or one of the
5915		items in {expr} cannot be used as a Number this results in
5916		an error.  An empty |List| or |Dictionary| results in zero.
5917
5918							*min()*
5919min({expr})	Return the minimum value of all items in {expr}.
5920		{expr} can be a list or a dictionary.  For a dictionary,
5921		it returns the minimum of all values in the dictionary.
5922		If {expr} is neither a list nor a dictionary, or one of the
5923		items in {expr} cannot be used as a Number this results in
5924		an error.  An empty |List| or |Dictionary| results in zero.
5925
5926							*mkdir()* *E739*
5927mkdir({name} [, {path} [, {prot}]])
5928		Create directory {name}.
5929		If {path} is "p" then intermediate directories are created as
5930		necessary.  Otherwise it must be "".
5931		If {prot} is given it is used to set the protection bits of
5932		the new directory.  The default is 0755 (rwxr-xr-x: r/w for
5933		the user readable for others).  Use 0700 to make it unreadable
5934		for others.  This is only used for the last part of {name}.
5935		Thus if you create /tmp/foo/bar then /tmp/foo will be created
5936		with 0755.
5937		Example: >
5938			:call mkdir($HOME . "/tmp/foo/bar", "p", 0700)
5939<		This function is not available in the |sandbox|.
5940		Not available on all systems.  To check use: >
5941			:if exists("*mkdir")
5942<
5943							*mode()*
5944mode([expr])	Return a string that indicates the current mode.
5945		If [expr] is supplied and it evaluates to a non-zero Number or
5946		a non-empty String (|non-zero-arg|), then the full mode is
5947		returned, otherwise only the first letter is returned.
5948
5949			n	Normal
5950			no	Operator-pending
5951			v	Visual by character
5952			V	Visual by line
5953			CTRL-V	Visual blockwise
5954			s	Select by character
5955			S	Select by line
5956			CTRL-S	Select blockwise
5957			i	Insert
5958			ic	Insert mode completion |compl-generic|
5959			ix	Insert mode |i_CTRL-X| completion
5960			R	Replace |R|
5961			Rc	Replace mode completion |compl-generic|
5962			Rv	Virtual Replace |gR|
5963			Rx	Replace mode |i_CTRL-X| completion
5964			c	Command-line editing
5965			cv	Vim Ex mode |gQ|
5966			ce	Normal Ex mode |Q|
5967			r	Hit-enter prompt
5968			rm	The -- more -- prompt
5969			r?	A |:confirm| query of some sort
5970			!	Shell or external command is executing
5971		This is useful in the 'statusline' option or when used
5972		with |remote_expr()| In most other places it always returns
5973		"c" or "n".
5974		Also see |visualmode()|.
5975
5976mzeval({expr})							*mzeval()*
5977		Evaluate MzScheme expression {expr} and return its result
5978		converted to Vim data structures.
5979		Numbers and strings are returned as they are.
5980		Pairs (including lists and improper lists) and vectors are
5981		returned as Vim |Lists|.
5982		Hash tables are represented as Vim |Dictionary| type with keys
5983		converted to strings.
5984		All other types are converted to string with display function.
5985		Examples: >
5986		    :mz (define l (list 1 2 3))
5987		    :mz (define h (make-hash)) (hash-set! h "list" l)
5988		    :echo mzeval("l")
5989		    :echo mzeval("h")
5990<
5991		{only available when compiled with the |+mzscheme| feature}
5992
5993nextnonblank({lnum})					*nextnonblank()*
5994		Return the line number of the first line at or below {lnum}
5995		that is not blank.  Example: >
5996			if getline(nextnonblank(1)) =~ "Java"
5997<		When {lnum} is invalid or there is no non-blank line at or
5998		below it, zero is returned.
5999		See also |prevnonblank()|.
6000
6001nr2char({expr}[, {utf8}])				*nr2char()*
6002		Return a string with a single character, which has the number
6003		value {expr}.  Examples: >
6004			nr2char(64)		returns "@"
6005			nr2char(32)		returns " "
6006<		When {utf8} is omitted or zero, the current 'encoding' is used.
6007		Example for "utf-8": >
6008			nr2char(300)		returns I with bow character
6009<		With {utf8} set to 1, always return utf-8 characters.
6010		Note that a NUL character in the file is specified with
6011		nr2char(10), because NULs are represented with newline
6012		characters.  nr2char(0) is a real NUL and terminates the
6013		string, thus results in an empty string.
6014
6015or({expr}, {expr})					*or()*
6016		Bitwise OR on the two arguments.  The arguments are converted
6017		to a number.  A List, Dict or Float argument causes an error.
6018		Example: >
6019			:let bits = or(bits, 0x80)
6020
6021
6022pathshorten({expr})					*pathshorten()*
6023		Shorten directory names in the path {expr} and return the
6024		result.  The tail, the file name, is kept as-is.  The other
6025		components in the path are reduced to single letters.  Leading
6026		'~' and '.' characters are kept.  Example: >
6027			:echo pathshorten('~/.vim/autoload/myfile.vim')
6028<			~/.v/a/myfile.vim ~
6029		It doesn't matter if the path exists or not.
6030
6031perleval({expr})					*perleval()*
6032		Evaluate Perl expression {expr} in scalar context and return
6033		its result converted to Vim data structures. If value can't be
6034		converted, it is returned as a string Perl representation.
6035		Note: If you want an array or hash, {expr} must return a
6036		reference to it.
6037		Example: >
6038			:echo perleval('[1 .. 4]')
6039<			[1, 2, 3, 4]
6040		{only available when compiled with the |+perl| feature}
6041
6042pow({x}, {y})						*pow()*
6043		Return the power of {x} to the exponent {y} as a |Float|.
6044		{x} and {y} must evaluate to a |Float| or a |Number|.
6045		Examples: >
6046			:echo pow(3, 3)
6047<			27.0 >
6048			:echo pow(2, 16)
6049<			65536.0 >
6050			:echo pow(32, 0.20)
6051<			2.0
6052		{only available when compiled with the |+float| feature}
6053
6054prevnonblank({lnum})					*prevnonblank()*
6055		Return the line number of the first line at or above {lnum}
6056		that is not blank.  Example: >
6057			let ind = indent(prevnonblank(v:lnum - 1))
6058<		When {lnum} is invalid or there is no non-blank line at or
6059		above it, zero is returned.
6060		Also see |nextnonblank()|.
6061
6062
6063printf({fmt}, {expr1} ...)				*printf()*
6064		Return a String with {fmt}, where "%" items are replaced by
6065		the formatted form of their respective arguments.  Example: >
6066			printf("%4d: E%d %.30s", lnum, errno, msg)
6067<		May result in:
6068			"  99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~
6069
6070		Often used items are:
6071		  %s	string
6072		  %6S	string right-aligned in 6 display cells
6073		  %6s	string right-aligned in 6 bytes
6074		  %.9s	string truncated to 9 bytes
6075		  %c	single byte
6076		  %d	decimal number
6077		  %5d	decimal number padded with spaces to 5 characters
6078		  %x	hex number
6079		  %04x	hex number padded with zeros to at least 4 characters
6080		  %X	hex number using upper case letters
6081		  %o	octal number
6082		  %08b	binary number padded with zeros to at least 8 chars
6083		  %f	floating point number as 12.23, inf, -inf or nan
6084		  %F	floating point number as 12.23, INF, -INF or NAN
6085		  %e	floating point number as 1.23e3, inf, -inf or nan
6086		  %E	floating point number as 1.23E3, INF, -INF or NAN
6087		  %g	floating point number, as %f or %e depending on value
6088		  %G	floating point number, as %F or %E depending on value
6089		  %%	the % character itself
6090
6091		Conversion specifications start with '%' and end with the
6092		conversion type.  All other characters are copied unchanged to
6093		the result.
6094
6095		The "%" starts a conversion specification.  The following
6096		arguments appear in sequence:
6097
6098			%  [flags]  [field-width]  [.precision]  type
6099
6100		flags
6101			Zero or more of the following flags:
6102
6103		    #	      The value should be converted to an "alternate
6104			      form".  For c, d, and s conversions, this option
6105			      has no effect.  For o conversions, the precision
6106			      of the number is increased to force the first
6107			      character of the output string to a zero (except
6108			      if a zero value is printed with an explicit
6109			      precision of zero).
6110			      For b and B conversions, a non-zero result has
6111			      the string "0b" (or "0B" for B conversions)
6112			      prepended to it.
6113			      For x and X conversions, a non-zero result has
6114			      the string "0x" (or "0X" for X conversions)
6115			      prepended to it.
6116
6117		    0 (zero)  Zero padding.  For all conversions the converted
6118			      value is padded on the left with zeros rather
6119			      than blanks.  If a precision is given with a
6120			      numeric conversion (d, b, B, o, x, and X), the 0
6121			      flag is ignored.
6122
6123		    -	      A negative field width flag; the converted value
6124			      is to be left adjusted on the field boundary.
6125			      The converted value is padded on the right with
6126			      blanks, rather than on the left with blanks or
6127			      zeros.  A - overrides a 0 if both are given.
6128
6129		    ' ' (space)  A blank should be left before a positive
6130			      number produced by a signed conversion (d).
6131
6132		    +	      A sign must always be placed before a number
6133			      produced by a signed conversion.  A + overrides
6134			      a space if both are used.
6135
6136		field-width
6137			An optional decimal digit string specifying a minimum
6138			field width.  If the converted value has fewer bytes
6139			than the field width, it will be padded with spaces on
6140			the left (or right, if the left-adjustment flag has
6141			been given) to fill out the field width.
6142
6143		.precision
6144			An optional precision, in the form of a period '.'
6145			followed by an optional digit string.  If the digit
6146			string is omitted, the precision is taken as zero.
6147			This gives the minimum number of digits to appear for
6148			d, o, x, and X conversions, or the maximum number of
6149			bytes to be printed from a string for s conversions.
6150			For floating point it is the number of digits after
6151			the decimal point.
6152
6153		type
6154			A character that specifies the type of conversion to
6155			be applied, see below.
6156
6157		A field width or precision, or both, may be indicated by an
6158		asterisk '*' instead of a digit string.  In this case, a
6159		Number argument supplies the field width or precision.  A
6160		negative field width is treated as a left adjustment flag
6161		followed by a positive field width; a negative precision is
6162		treated as though it were missing.  Example: >
6163			:echo printf("%d: %.*s", nr, width, line)
6164<		This limits the length of the text used from "line" to
6165		"width" bytes.
6166
6167		The conversion specifiers and their meanings are:
6168
6169				*printf-d* *printf-b* *printf-B* *printf-o*
6170				*printf-x* *printf-X*
6171		dbBoxX	The Number argument is converted to signed decimal
6172			(d), unsigned binary (b and B), unsigned octal (o), or
6173			unsigned hexadecimal (x and X) notation.  The letters
6174			"abcdef" are used for x conversions; the letters
6175			"ABCDEF" are used for X conversions.
6176			The precision, if any, gives the minimum number of
6177			digits that must appear; if the converted value
6178			requires fewer digits, it is padded on the left with
6179			zeros.
6180			In no case does a non-existent or small field width
6181			cause truncation of a numeric field; if the result of
6182			a conversion is wider than the field width, the field
6183			is expanded to contain the conversion result.
6184			The 'h' modifier indicates the argument is 16 bits.
6185			The 'l' modifier indicates the argument is 32 bits.
6186			The 'L' modifier indicates the argument is 64 bits.
6187			Generally, these modifiers are not useful. They are
6188			ignored when type is known from the argument.
6189
6190		i	alias for d
6191		D	alias for ld
6192		U	alias for lu
6193		O	alias for lo
6194
6195							*printf-c*
6196		c	The Number argument is converted to a byte, and the
6197			resulting character is written.
6198
6199							*printf-s*
6200		s	The text of the String argument is used.  If a
6201			precision is specified, no more bytes than the number
6202			specified are used.
6203			If the argument is not a String type, it is
6204			automatically converted to text with the same format
6205			as ":echo".
6206							*printf-S*
6207		S	The text of the String argument is used.  If a
6208			precision is specified, no more display cells than the
6209			number specified are used.  Without the |+multi_byte|
6210			feature works just like 's'.
6211
6212							*printf-f* *E807*
6213		f F	The Float argument is converted into a string of the
6214			form 123.456.  The precision specifies the number of
6215			digits after the decimal point.  When the precision is
6216			zero the decimal point is omitted.  When the precision
6217			is not specified 6 is used.  A really big number
6218			(out of range or dividing by zero) results in "inf"
6219			or "-inf" with %f (INF or -INF with %F).
6220			"0.0 / 0.0" results in "nan" with %f (NAN with %F).
6221			Example: >
6222				echo printf("%.2f", 12.115)
6223<				12.12
6224			Note that roundoff depends on the system libraries.
6225			Use |round()| when in doubt.
6226
6227							*printf-e* *printf-E*
6228		e E	The Float argument is converted into a string of the
6229			form 1.234e+03 or 1.234E+03 when using 'E'.  The
6230			precision specifies the number of digits after the
6231			decimal point, like with 'f'.
6232
6233							*printf-g* *printf-G*
6234		g G	The Float argument is converted like with 'f' if the
6235			value is between 0.001 (inclusive) and 10000000.0
6236			(exclusive).  Otherwise 'e' is used for 'g' and 'E'
6237			for 'G'.  When no precision is specified superfluous
6238			zeroes and '+' signs are removed, except for the zero
6239			immediately after the decimal point.  Thus 10000000.0
6240			results in 1.0e7.
6241
6242							*printf-%*
6243		%	A '%' is written.  No argument is converted.  The
6244			complete conversion specification is "%%".
6245
6246		When a Number argument is expected a String argument is also
6247		accepted and automatically converted.
6248		When a Float or String argument is expected a Number argument
6249		is also accepted and automatically converted.
6250		Any other argument type results in an error message.
6251
6252							*E766* *E767*
6253		The number of {exprN} arguments must exactly match the number
6254		of "%" items.  If there are not sufficient or too many
6255		arguments an error is given.  Up to 18 arguments can be used.
6256
6257
6258pumvisible()						*pumvisible()*
6259		Returns non-zero when the popup menu is visible, zero
6260		otherwise.  See |ins-completion-menu|.
6261		This can be used to avoid some things that would remove the
6262		popup menu.
6263
6264py3eval({expr})						*py3eval()*
6265		Evaluate Python expression {expr} and return its result
6266		converted to Vim data structures.
6267		Numbers and strings are returned as they are (strings are
6268		copied though, Unicode strings are additionally converted to
6269		'encoding').
6270		Lists are represented as Vim |List| type.
6271		Dictionaries are represented as Vim |Dictionary| type with
6272		keys converted to strings.
6273		{only available when compiled with the |+python3| feature}
6274
6275							*E858* *E859*
6276pyeval({expr})						*pyeval()*
6277		Evaluate Python expression {expr} and return its result
6278		converted to Vim data structures.
6279		Numbers and strings are returned as they are (strings are
6280		copied though).
6281		Lists are represented as Vim |List| type.
6282		Dictionaries are represented as Vim |Dictionary| type,
6283		non-string keys result in error.
6284		{only available when compiled with the |+python| feature}
6285
6286pyxeval({expr})						*pyxeval()*
6287		Evaluate Python expression {expr} and return its result
6288		converted to Vim data structures.
6289		Uses Python 2 or 3, see |python_x| and 'pyxversion'.
6290		See also: |pyeval()|, |py3eval()|
6291		{only available when compiled with the |+python| or the
6292		|+python3| feature}
6293
6294							*E726* *E727*
6295range({expr} [, {max} [, {stride}]])				*range()*
6296		Returns a |List| with Numbers:
6297		- If only {expr} is specified: [0, 1, ..., {expr} - 1]
6298		- If {max} is specified: [{expr}, {expr} + 1, ..., {max}]
6299		- If {stride} is specified: [{expr}, {expr} + {stride}, ...,
6300		  {max}] (increasing {expr} with {stride} each time, not
6301		  producing a value past {max}).
6302		When the maximum is one before the start the result is an
6303		empty list.  When the maximum is more than one before the
6304		start this is an error.
6305		Examples: >
6306			range(4)		" [0, 1, 2, 3]
6307			range(2, 4)		" [2, 3, 4]
6308			range(2, 9, 3)		" [2, 5, 8]
6309			range(2, -2, -1)	" [2, 1, 0, -1, -2]
6310			range(0)		" []
6311			range(2, 0)		" error!
6312<
6313							*readfile()*
6314readfile({fname} [, {binary} [, {max}]])
6315		Read file {fname} and return a |List|, each line of the file
6316		as an item.  Lines are broken at NL characters.  Macintosh
6317		files separated with CR will result in a single long line
6318		(unless a NL appears somewhere).
6319		All NUL characters are replaced with a NL character.
6320		When {binary} contains "b" binary mode is used:
6321		- When the last line ends in a NL an extra empty list item is
6322		  added.
6323		- No CR characters are removed.
6324		Otherwise:
6325		- CR characters that appear before a NL are removed.
6326		- Whether the last line ends in a NL or not does not matter.
6327		- When 'encoding' is Unicode any UTF-8 byte order mark is
6328		  removed from the text.
6329		When {max} is given this specifies the maximum number of lines
6330		to be read.  Useful if you only want to check the first ten
6331		lines of a file: >
6332			:for line in readfile(fname, '', 10)
6333			:  if line =~ 'Date' | echo line | endif
6334			:endfor
6335<		When {max} is negative -{max} lines from the end of the file
6336		are returned, or as many as there are.
6337		When {max} is zero the result is an empty list.
6338		Note that without {max} the whole file is read into memory.
6339		Also note that there is no recognition of encoding.  Read a
6340		file into a buffer if you need to.
6341		When the file can't be opened an error message is given and
6342		the result is an empty list.
6343		Also see |writefile()|.
6344
6345reltime([{start} [, {end}]])				*reltime()*
6346		Return an item that represents a time value.  The format of
6347		the item depends on the system.  It can be passed to
6348		|reltimestr()| to convert it to a string  or |reltimefloat()|
6349		to convert to a Float.
6350		Without an argument it returns the current time.
6351		With one argument is returns the time passed since the time
6352		specified in the argument.
6353		With two arguments it returns the time passed between {start}
6354		and {end}.
6355		The {start} and {end} arguments must be values returned by
6356		reltime().
6357		{only available when compiled with the |+reltime| feature}
6358
6359reltimefloat({time})				*reltimefloat()*
6360		Return a Float that represents the time value of {time}.
6361		Example: >
6362			let start = reltime()
6363			call MyFunction()
6364			let seconds = reltimefloat(reltime(start))
6365<		See the note of reltimestr() about overhead.
6366		Also see |profiling|.
6367		{only available when compiled with the |+reltime| feature}
6368
6369reltimestr({time})				*reltimestr()*
6370		Return a String that represents the time value of {time}.
6371		This is the number of seconds, a dot and the number of
6372		microseconds.  Example: >
6373			let start = reltime()
6374			call MyFunction()
6375			echo reltimestr(reltime(start))
6376<		Note that overhead for the commands will be added to the time.
6377		The accuracy depends on the system.
6378		Leading spaces are used to make the string align nicely.  You
6379		can use split() to remove it. >
6380			echo split(reltimestr(reltime(start)))[0]
6381<		Also see |profiling|.
6382		{only available when compiled with the |+reltime| feature}
6383
6384							*remote_expr()* *E449*
6385remote_expr({server}, {string} [, {idvar} [, {timeout}]])
6386		Send the {string} to {server}.  The string is sent as an
6387		expression and the result is returned after evaluation.
6388		The result must be a String or a |List|.  A |List| is turned
6389		into a String by joining the items with a line break in
6390		between (not at the end), like with join(expr, "\n").
6391		If {idvar} is present and not empty, it is taken as the name
6392		of a variable and a {serverid} for later use with
6393		remote_read() is stored there.
6394		If {timeout} is given the read times out after this many
6395		seconds.  Otherwise a timeout of 600 seconds is used.
6396		See also |clientserver| |RemoteReply|.
6397		This function is not available in the |sandbox|.
6398		{only available when compiled with the |+clientserver| feature}
6399		Note: Any errors will cause a local error message to be issued
6400		and the result will be the empty string.
6401		Examples: >
6402			:echo remote_expr("gvim", "2+2")
6403			:echo remote_expr("gvim1", "b:current_syntax")
6404<
6405
6406remote_foreground({server})				*remote_foreground()*
6407		Move the Vim server with the name {server} to the foreground.
6408		This works like: >
6409			remote_expr({server}, "foreground()")
6410<		Except that on Win32 systems the client does the work, to work
6411		around the problem that the OS doesn't always allow the server
6412		to bring itself to the foreground.
6413		Note: This does not restore the window if it was minimized,
6414		like foreground() does.
6415		This function is not available in the |sandbox|.
6416		{only in the Win32, Athena, Motif and GTK GUI versions and the
6417		Win32 console version}
6418
6419
6420remote_peek({serverid} [, {retvar}])		*remote_peek()*
6421		Returns a positive number if there are available strings
6422		from {serverid}.  Copies any reply string into the variable
6423		{retvar} if specified.  {retvar} must be a string with the
6424		name of a variable.
6425		Returns zero if none are available.
6426		Returns -1 if something is wrong.
6427		See also |clientserver|.
6428		This function is not available in the |sandbox|.
6429		{only available when compiled with the |+clientserver| feature}
6430		Examples: >
6431			:let repl = ""
6432			:echo "PEEK: ".remote_peek(id, "repl").": ".repl
6433
6434remote_read({serverid}, [{timeout}])			*remote_read()*
6435		Return the oldest available reply from {serverid} and consume
6436		it.  Unless a {timeout} in seconds is given, it blocks until a
6437		reply is available.
6438		See also |clientserver|.
6439		This function is not available in the |sandbox|.
6440		{only available when compiled with the |+clientserver| feature}
6441		Example: >
6442			:echo remote_read(id)
6443<
6444							*remote_send()* *E241*
6445remote_send({server}, {string} [, {idvar}])
6446		Send the {string} to {server}.  The string is sent as input
6447		keys and the function returns immediately.  At the Vim server
6448		the keys are not mapped |:map|.
6449		If {idvar} is present, it is taken as the name of a variable
6450		and a {serverid} for later use with remote_read() is stored
6451		there.
6452		See also |clientserver| |RemoteReply|.
6453		This function is not available in the |sandbox|.
6454		{only available when compiled with the |+clientserver| feature}
6455
6456		Note: Any errors will be reported in the server and may mess
6457		up the display.
6458		Examples: >
6459		:echo remote_send("gvim", ":DropAndReply ".file, "serverid").
6460		 \ remote_read(serverid)
6461
6462		:autocmd NONE RemoteReply *
6463		 \ echo remote_read(expand("<amatch>"))
6464		:echo remote_send("gvim", ":sleep 10 | echo ".
6465		 \ 'server2client(expand("<client>"), "HELLO")<CR>')
6466<
6467					*remote_startserver()* *E941* *E942*
6468remote_startserver({name})
6469		Become the server {name}.  This fails if already running as a
6470		server, when |v:servername| is not empty.
6471		{only available when compiled with the |+clientserver| feature}
6472
6473remove({list}, {idx} [, {end}])				*remove()*
6474		Without {end}: Remove the item at {idx} from |List| {list} and
6475		return the item.
6476		With {end}: Remove items from {idx} to {end} (inclusive) and
6477		return a List with these items.  When {idx} points to the same
6478		item as {end} a list with one item is returned.  When {end}
6479		points to an item before {idx} this is an error.
6480		See |list-index| for possible values of {idx} and {end}.
6481		Example: >
6482			:echo "last item: " . remove(mylist, -1)
6483			:call remove(mylist, 0, 9)
6484remove({dict}, {key})
6485		Remove the entry from {dict} with key {key}.  Example: >
6486			:echo "removed " . remove(dict, "one")
6487<		If there is no {key} in {dict} this is an error.
6488
6489		Use |delete()| to remove a file.
6490
6491rename({from}, {to})					*rename()*
6492		Rename the file by the name {from} to the name {to}.  This
6493		should also work to move files across file systems.  The
6494		result is a Number, which is 0 if the file was renamed
6495		successfully, and non-zero when the renaming failed.
6496		NOTE: If {to} exists it is overwritten without warning.
6497		This function is not available in the |sandbox|.
6498
6499repeat({expr}, {count})					*repeat()*
6500		Repeat {expr} {count} times and return the concatenated
6501		result.  Example: >
6502			:let separator = repeat('-', 80)
6503<		When {count} is zero or negative the result is empty.
6504		When {expr} is a |List| the result is {expr} concatenated
6505		{count} times.  Example: >
6506			:let longlist = repeat(['a', 'b'], 3)
6507<		Results in ['a', 'b', 'a', 'b', 'a', 'b'].
6508
6509
6510resolve({filename})					*resolve()* *E655*
6511		On MS-Windows, when {filename} is a shortcut (a .lnk file),
6512		returns the path the shortcut points to in a simplified form.
6513		On Unix, repeat resolving symbolic links in all path
6514		components of {filename} and return the simplified result.
6515		To cope with link cycles, resolving of symbolic links is
6516		stopped after 100 iterations.
6517		On other systems, return the simplified {filename}.
6518		The simplification step is done as by |simplify()|.
6519		resolve() keeps a leading path component specifying the
6520		current directory (provided the result is still a relative
6521		path name) and also keeps a trailing path separator.
6522
6523							*reverse()*
6524reverse({list})	Reverse the order of items in {list} in-place.  Returns
6525		{list}.
6526		If you want a list to remain unmodified make a copy first: >
6527			:let revlist = reverse(copy(mylist))
6528
6529round({expr})							*round()*
6530		Round off {expr} to the nearest integral value and return it
6531		as a |Float|.  If {expr} lies halfway between two integral
6532		values, then use the larger one (away from zero).
6533		{expr} must evaluate to a |Float| or a |Number|.
6534		Examples: >
6535			echo round(0.456)
6536<			0.0  >
6537			echo round(4.5)
6538<			5.0 >
6539			echo round(-4.5)
6540<			-5.0
6541		{only available when compiled with the |+float| feature}
6542
6543screenattr(row, col)						*screenattr()*
6544		Like |screenchar()|, but return the attribute.  This is a rather
6545		arbitrary number that can only be used to compare to the
6546		attribute at other positions.
6547
6548screenchar(row, col)						*screenchar()*
6549		The result is a Number, which is the character at position
6550		[row, col] on the screen.  This works for every possible
6551		screen position, also status lines, window separators and the
6552		command line.  The top left position is row one, column one
6553		The character excludes composing characters.  For double-byte
6554		encodings it may only be the first byte.
6555		This is mainly to be used for testing.
6556		Returns -1 when row or col is out of range.
6557
6558screencol()							*screencol()*
6559		The result is a Number, which is the current screen column of
6560		the cursor. The leftmost column has number 1.
6561		This function is mainly used for testing.
6562
6563		Note: Always returns the current screen column, thus if used
6564		in a command (e.g. ":echo screencol()") it will return the
6565		column inside the command line, which is 1 when the command is
6566		executed. To get the cursor position in the file use one of
6567		the following mappings: >
6568			nnoremap <expr> GG ":echom ".screencol()."\n"
6569			nnoremap <silent> GG :echom screencol()<CR>
6570<
6571screenrow()							*screenrow()*
6572		The result is a Number, which is the current screen row of the
6573		cursor.  The top line has number one.
6574		This function is mainly used for testing.
6575		Alternatively you can use |winline()|.
6576
6577		Note: Same restrictions as with |screencol()|.
6578
6579search({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*search()*
6580		Search for regexp pattern {pattern}.  The search starts at the
6581		cursor position (you can use |cursor()| to set it).
6582
6583		When a match has been found its line number is returned.
6584		If there is no match a 0 is returned and the cursor doesn't
6585		move.  No error message is given.
6586
6587		{flags} is a String, which can contain these character flags:
6588		'b'	search Backward instead of forward
6589		'c'	accept a match at the Cursor position
6590		'e'	move to the End of the match
6591		'n'	do Not move the cursor
6592		'p'	return number of matching sub-Pattern (see below)
6593		's'	Set the ' mark at the previous location of the cursor
6594		'w'	Wrap around the end of the file
6595		'W'	don't Wrap around the end of the file
6596		'z'	start searching at the cursor column instead of zero
6597		If neither 'w' or 'W' is given, the 'wrapscan' option applies.
6598
6599		If the 's' flag is supplied, the ' mark is set, only if the
6600		cursor is moved. The 's' flag cannot be combined with the 'n'
6601		flag.
6602
6603		'ignorecase', 'smartcase' and 'magic' are used.
6604
6605		When the 'z' flag is not given, searching always starts in
6606		column zero and then matches before the cursor are skipped.
6607		When the 'c' flag is present in 'cpo' the next search starts
6608		after the match.  Without the 'c' flag the next search starts
6609		one column further.
6610
6611		When the {stopline} argument is given then the search stops
6612		after searching this line.  This is useful to restrict the
6613		search to a range of lines.  Examples: >
6614			let match = search('(', 'b', line("w0"))
6615			let end = search('END', '', line("w$"))
6616<		When {stopline} is used and it is not zero this also implies
6617		that the search does not wrap around the end of the file.
6618		A zero value is equal to not giving the argument.
6619
6620		When the {timeout} argument is given the search stops when
6621		more than this many milliseconds have passed.  Thus when
6622		{timeout} is 500 the search stops after half a second.
6623		The value must not be negative.  A zero value is like not
6624		giving the argument.
6625		{only available when compiled with the |+reltime| feature}
6626
6627							*search()-sub-match*
6628		With the 'p' flag the returned value is one more than the
6629		first sub-match in \(\).  One if none of them matched but the
6630		whole pattern did match.
6631		To get the column number too use |searchpos()|.
6632
6633		The cursor will be positioned at the match, unless the 'n'
6634		flag is used.
6635
6636		Example (goes over all files in the argument list): >
6637		    :let n = 1
6638		    :while n <= argc()	    " loop over all files in arglist
6639		    :  exe "argument " . n
6640		    :  " start at the last char in the file and wrap for the
6641		    :  " first search to find match at start of file
6642		    :  normal G$
6643		    :  let flags = "w"
6644		    :  while search("foo", flags) > 0
6645		    :	 s/foo/bar/g
6646		    :	 let flags = "W"
6647		    :  endwhile
6648		    :  update		    " write the file if modified
6649		    :  let n = n + 1
6650		    :endwhile
6651<
6652		Example for using some flags: >
6653		    :echo search('\<if\|\(else\)\|\(endif\)', 'ncpe')
6654<		This will search for the keywords "if", "else", and "endif"
6655		under or after the cursor.  Because of the 'p' flag, it
6656		returns 1, 2, or 3 depending on which keyword is found, or 0
6657		if the search fails.  With the cursor on the first word of the
6658		line:
6659		    if (foo == 0) | let foo = foo + 1 | endif ~
6660		the function returns 1.  Without the 'c' flag, the function
6661		finds the "endif" and returns 3.  The same thing happens
6662		without the 'e' flag if the cursor is on the "f" of "if".
6663		The 'n' flag tells the function not to move the cursor.
6664
6665
6666searchdecl({name} [, {global} [, {thisblock}]])			*searchdecl()*
6667		Search for the declaration of {name}.
6668
6669		With a non-zero {global} argument it works like |gD|, find
6670		first match in the file.  Otherwise it works like |gd|, find
6671		first match in the function.
6672
6673		With a non-zero {thisblock} argument matches in a {} block
6674		that ends before the cursor position are ignored.  Avoids
6675		finding variable declarations only valid in another scope.
6676
6677		Moves the cursor to the found match.
6678		Returns zero for success, non-zero for failure.
6679		Example: >
6680			if searchdecl('myvar') == 0
6681			   echo getline('.')
6682			endif
6683<
6684							*searchpair()*
6685searchpair({start}, {middle}, {end} [, {flags} [, {skip}
6686				[, {stopline} [, {timeout}]]]])
6687		Search for the match of a nested start-end pair.  This can be
6688		used to find the "endif" that matches an "if", while other
6689		if/endif pairs in between are ignored.
6690		The search starts at the cursor.  The default is to search
6691		forward, include 'b' in {flags} to search backward.
6692		If a match is found, the cursor is positioned at it and the
6693		line number is returned.  If no match is found 0 or -1 is
6694		returned and the cursor doesn't move.  No error message is
6695		given.
6696
6697		{start}, {middle} and {end} are patterns, see |pattern|.  They
6698		must not contain \( \) pairs.  Use of \%( \) is allowed.  When
6699		{middle} is not empty, it is found when searching from either
6700		direction, but only when not in a nested start-end pair.  A
6701		typical use is: >
6702			searchpair('\<if\>', '\<else\>', '\<endif\>')
6703<		By leaving {middle} empty the "else" is skipped.
6704
6705		{flags} 'b', 'c', 'n', 's', 'w' and 'W' are used like with
6706		|search()|.  Additionally:
6707		'r'	Repeat until no more matches found; will find the
6708			outer pair.  Implies the 'W' flag.
6709		'm'	Return number of matches instead of line number with
6710			the match; will be > 1 when 'r' is used.
6711		Note: it's nearly always a good idea to use the 'W' flag, to
6712		avoid wrapping around the end of the file.
6713
6714		When a match for {start}, {middle} or {end} is found, the
6715		{skip} expression is evaluated with the cursor positioned on
6716		the start of the match.  It should return non-zero if this
6717		match is to be skipped.  E.g., because it is inside a comment
6718		or a string.
6719		When {skip} is omitted or empty, every match is accepted.
6720		When evaluating {skip} causes an error the search is aborted
6721		and -1 returned.
6722
6723		For {stopline} and {timeout} see |search()|.
6724
6725		The value of 'ignorecase' is used.  'magic' is ignored, the
6726		patterns are used like it's on.
6727
6728		The search starts exactly at the cursor.  A match with
6729		{start}, {middle} or {end} at the next character, in the
6730		direction of searching, is the first one found.  Example: >
6731			if 1
6732			  if 2
6733			  endif 2
6734			endif 1
6735<		When starting at the "if 2", with the cursor on the "i", and
6736		searching forwards, the "endif 2" is found.  When starting on
6737		the character just before the "if 2", the "endif 1" will be
6738		found.  That's because the "if 2" will be found first, and
6739		then this is considered to be a nested if/endif from "if 2" to
6740		"endif 2".
6741		When searching backwards and {end} is more than one character,
6742		it may be useful to put "\zs" at the end of the pattern, so
6743		that when the cursor is inside a match with the end it finds
6744		the matching start.
6745
6746		Example, to find the "endif" command in a Vim script: >
6747
6748	:echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W',
6749			\ 'getline(".") =~ "^\\s*\""')
6750
6751<		The cursor must be at or after the "if" for which a match is
6752		to be found.  Note that single-quote strings are used to avoid
6753		having to double the backslashes.  The skip expression only
6754		catches comments at the start of a line, not after a command.
6755		Also, a word "en" or "if" halfway a line is considered a
6756		match.
6757		Another example, to search for the matching "{" of a "}": >
6758
6759	:echo searchpair('{', '', '}', 'bW')
6760
6761<		This works when the cursor is at or before the "}" for which a
6762		match is to be found.  To reject matches that syntax
6763		highlighting recognized as strings: >
6764
6765	:echo searchpair('{', '', '}', 'bW',
6766	     \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
6767<
6768							*searchpairpos()*
6769searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
6770				[, {stopline} [, {timeout}]]]])
6771		Same as |searchpair()|, but returns a |List| with the line and
6772		column position of the match. The first element of the |List|
6773		is the line number and the second element is the byte index of
6774		the column position of the match.  If no match is found,
6775		returns [0, 0]. >
6776
6777			:let [lnum,col] = searchpairpos('{', '', '}', 'n')
6778<
6779		See |match-parens| for a bigger and more useful example.
6780
6781searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*searchpos()*
6782		Same as |search()|, but returns a |List| with the line and
6783		column position of the match. The first element of the |List|
6784		is the line number and the second element is the byte index of
6785		the column position of the match. If no match is found,
6786		returns [0, 0].
6787		Example: >
6788	:let [lnum, col] = searchpos('mypattern', 'n')
6789
6790<		When the 'p' flag is given then there is an extra item with
6791		the sub-pattern match number |search()-sub-match|.  Example: >
6792	:let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np')
6793<		In this example "submatch" is 2 when a lowercase letter is
6794		found |/\l|, 3 when an uppercase letter is found |/\u|.
6795
6796server2client({clientid}, {string})			*server2client()*
6797		Send a reply string to {clientid}.  The most recent {clientid}
6798		that sent a string can be retrieved with expand("<client>").
6799		{only available when compiled with the |+clientserver| feature}
6800		Note:
6801		This id has to be stored before the next command can be
6802		received.  I.e. before returning from the received command and
6803		before calling any commands that waits for input.
6804		See also |clientserver|.
6805		Example: >
6806			:echo server2client(expand("<client>"), "HELLO")
6807<
6808serverlist()					*serverlist()*
6809		Return a list of available server names, one per line.
6810		When there are no servers or the information is not available
6811		an empty string is returned.  See also |clientserver|.
6812		{only available when compiled with the |+clientserver| feature}
6813		Example: >
6814			:echo serverlist()
6815<
6816setbufvar({expr}, {varname}, {val})			*setbufvar()*
6817		Set option or local variable {varname} in buffer {expr} to
6818		{val}.
6819		This also works for a global or local window option, but it
6820		doesn't work for a global or local window variable.
6821		For a local window option the global value is unchanged.
6822		For the use of {expr}, see |bufname()| above.
6823		Note that the variable name without "b:" must be used.
6824		Examples: >
6825			:call setbufvar(1, "&mod", 1)
6826			:call setbufvar("todo", "myvar", "foobar")
6827<		This function is not available in the |sandbox|.
6828
6829setcharsearch({dict})					*setcharsearch()*
6830		Set the current character search information to {dict},
6831		which contains one or more of the following entries:
6832
6833		    char	character which will be used for a subsequent
6834				|,| or |;| command; an empty string clears the
6835				character search
6836		    forward	direction of character search; 1 for forward,
6837				0 for backward
6838		    until	type of character search; 1 for a |t| or |T|
6839				character search, 0 for an |f| or |F|
6840				character search
6841
6842		This can be useful to save/restore a user's character search
6843		from a script: >
6844			:let prevsearch = getcharsearch()
6845			:" Perform a command which clobbers user's search
6846			:call setcharsearch(prevsearch)
6847<		Also see |getcharsearch()|.
6848
6849setcmdpos({pos})					*setcmdpos()*
6850		Set the cursor position in the command line to byte position
6851		{pos}.  The first position is 1.
6852		Use |getcmdpos()| to obtain the current position.
6853		Only works while editing the command line, thus you must use
6854		|c_CTRL-\_e|, |c_CTRL-R_=| or |c_CTRL-R_CTRL-R| with '='.  For
6855		|c_CTRL-\_e| and |c_CTRL-R_CTRL-R| with '=' the position is
6856		set after the command line is set to the expression.  For
6857		|c_CTRL-R_=| it is set after evaluating the expression but
6858		before inserting the resulting text.
6859		When the number is too big the cursor is put at the end of the
6860		line.  A number smaller than one has undefined results.
6861		Returns 0 when successful, 1 when not editing the command
6862		line.
6863
6864setfperm({fname}, {mode})				*setfperm()* *chmod*
6865		Set the file permissions for {fname} to {mode}.
6866		{mode} must be a string with 9 characters.  It is of the form
6867		"rwxrwxrwx", where each group of "rwx" flags represent, in
6868		turn, the permissions of the owner of the file, the group the
6869		file belongs to, and other users.  A '-' character means the
6870		permission is off, any other character means on.  Multi-byte
6871		characters are not supported.
6872
6873		For example "rw-r-----" means read-write for the user,
6874		readable by the group, not accessible by others.  "xx-x-----"
6875		would do the same thing.
6876
6877		Returns non-zero for success, zero for failure.
6878
6879		To read permissions see |getfperm()|.
6880
6881
6882setline({lnum}, {text})					*setline()*
6883		Set line {lnum} of the current buffer to {text}.  To insert
6884		lines use |append()|.
6885		{lnum} is used like with |getline()|.
6886		When {lnum} is just below the last line the {text} will be
6887		added as a new line.
6888		If this succeeds, 0 is returned.  If this fails (most likely
6889		because {lnum} is invalid) 1 is returned.  Example: >
6890			:call setline(5, strftime("%c"))
6891<		When {text} is a |List| then line {lnum} and following lines
6892		will be set to the items in the list.  Example: >
6893			:call setline(5, ['aaa', 'bbb', 'ccc'])
6894<		This is equivalent to: >
6895			:for [n, l] in [[5, 'aaa'], [6, 'bbb'], [7, 'ccc']]
6896			:  call setline(n, l)
6897			:endfor
6898<		Note: The '[ and '] marks are not set.
6899
6900setloclist({nr}, {list}[, {action}[, {what}]])		*setloclist()*
6901		Create or replace or add to the location list for window {nr}.
6902		{nr} can be the window number or the |window-ID|.
6903		When {nr} is zero the current window is used.
6904
6905		For a location list window, the displayed location list is
6906		modified.  For an invalid window number {nr}, -1 is returned.
6907		Otherwise, same as |setqflist()|.
6908		Also see |location-list|.
6909
6910		If the optional {what} dictionary argument is supplied, then
6911		only the items listed in {what} are set. Refer to |setqflist()|
6912		for the list of supported keys in {what}.
6913
6914setmatches({list})					*setmatches()*
6915		Restores a list of matches saved by |getmatches()|.  Returns 0
6916		if successful, otherwise -1.  All current matches are cleared
6917		before the list is restored.  See example for |getmatches()|.
6918
6919							*setpos()*
6920setpos({expr}, {list})
6921		Set the position for {expr}.  Possible values:
6922			.	the cursor
6923			'x	mark x
6924
6925		{list} must be a |List| with four or five numbers:
6926		    [bufnum, lnum, col, off]
6927		    [bufnum, lnum, col, off, curswant]
6928
6929		"bufnum" is the buffer number.  Zero can be used for the
6930		current buffer.  When setting an uppercase mark "bufnum" is
6931		used for the mark position.  For other marks it specifies the
6932		buffer to set the mark in.  You can use the |bufnr()| function
6933		to turn a file name into a buffer number.
6934		For setting the cursor and the ' mark "bufnum" is ignored,
6935		since these are associated with a window, not a buffer.
6936		Does not change the jumplist.
6937
6938		"lnum" and "col" are the position in the buffer.  The first
6939		column is 1.  Use a zero "lnum" to delete a mark.  If "col" is
6940		smaller than 1 then 1 is used.
6941
6942		The "off" number is only used when 'virtualedit' is set. Then
6943		it is the offset in screen columns from the start of the
6944		character.  E.g., a position within a <Tab> or after the last
6945		character.
6946
6947		The "curswant" number is only used when setting the cursor
6948		position.  It sets the preferred column for when moving the
6949		cursor vertically.  When the "curswant" number is missing the
6950		preferred column is not set.  When it is present and setting a
6951		mark position it is not used.
6952
6953		Note that for '< and '> changing the line number may result in
6954		the marks to be effectively be swapped, so that '< is always
6955		before '>.
6956
6957		Returns 0 when the position could be set, -1 otherwise.
6958		An error message is given if {expr} is invalid.
6959
6960		Also see |getpos()| and |getcurpos()|.
6961
6962		This does not restore the preferred column for moving
6963		vertically; if you set the cursor position with this, |j| and
6964		|k| motions will jump to previous columns!  Use |cursor()| to
6965		also set the preferred column.  Also see the "curswant" key in
6966		|winrestview()|.
6967
6968setqflist({list} [, {action}[, {what}]])		*setqflist()*
6969		Create or replace or add to the quickfix list using the items
6970		in {list}.  Each item in {list} is a dictionary.
6971		Non-dictionary items in {list} are ignored.  Each dictionary
6972		item can contain the following entries:
6973
6974		    bufnr	buffer number; must be the number of a valid
6975				buffer
6976		    filename	name of a file; only used when "bufnr" is not
6977				present or it is invalid.
6978		    lnum	line number in the file
6979		    pattern	search pattern used to locate the error
6980		    col		column number
6981		    vcol	when non-zero: "col" is visual column
6982				when zero: "col" is byte index
6983		    nr		error number
6984		    text	description of the error
6985		    type	single-character error type, 'E', 'W', etc.
6986		    valid	recognized error message
6987
6988		The "col", "vcol", "nr", "type" and "text" entries are
6989		optional.  Either "lnum" or "pattern" entry can be used to
6990		locate a matching error line.
6991		If the "filename" and "bufnr" entries are not present or
6992		neither the "lnum" or "pattern" entries are present, then the
6993		item will not be handled as an error line.
6994		If both "pattern" and "lnum" are present then "pattern" will
6995		be used.
6996		If the "valid" entry is not supplied, then the valid flag is
6997		set when "bufnr" is a valid buffer or "filename" exists.
6998		If you supply an empty {list}, the quickfix list will be
6999		cleared.
7000		Note that the list is not exactly the same as what
7001		|getqflist()| returns.
7002
7003		{action} values:				*E927*
7004		'a'	The items from {list} are added to the existing
7005			quickfix list. If there is no existing list, then a
7006			new list is created.
7007
7008		'r'	The items from the current quickfix list are replaced
7009			with the items from {list}.  This can also be used to
7010			clear the list: >
7011				:call setqflist([], 'r')
7012<
7013		'f'	All the quickfix lists in the quickfix stack are
7014			freed.
7015
7016		If {action} is not present or is set to ' ', then a new list
7017		is created.
7018
7019		If the optional {what} dictionary argument is supplied, then
7020		only the items listed in {what} are set. The first {list}
7021		argument is ignored.  The following items can be specified in
7022		{what}:
7023		    context	any Vim type can be stored as a context
7024		    items	list of quickfix entries. Same as the {list}
7025				argument.
7026		    nr		list number in the quickfix stack; zero
7027				means the current quickfix list and '$' means
7028				the last quickfix list
7029		    title	quickfix list title text
7030		Unsupported keys in {what} are ignored.
7031		If the "nr" item is not present, then the current quickfix list
7032		is modified. When creating a new quickfix list, "nr" can be
7033		set to a value one greater than the quickfix stack size.
7034
7035		Examples: >
7036			:call setqflist([], 'r', {'title': 'My search'})
7037			:call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
7038<
7039		Returns zero for success, -1 for failure.
7040
7041		This function can be used to create a quickfix list
7042		independent of the 'errorformat' setting.  Use a command like
7043		`:cc 1` to jump to the first position.
7044
7045
7046							*setreg()*
7047setreg({regname}, {value} [, {options}])
7048		Set the register {regname} to {value}.
7049		{value} may be any value returned by |getreg()|, including
7050		a |List|.
7051		If {options} contains "a" or {regname} is upper case,
7052		then the value is appended.
7053		{options} can also contain a register type specification:
7054		    "c" or "v"	      |characterwise| mode
7055		    "l" or "V"	      |linewise| mode
7056		    "b" or "<CTRL-V>" |blockwise-visual| mode
7057		If a number immediately follows "b" or "<CTRL-V>" then this is
7058		used as the width of the selection - if it is not specified
7059		then the width of the block is set to the number of characters
7060		in the longest line (counting a <Tab> as 1 character).
7061
7062		If {options} contains no register settings, then the default
7063		is to use character mode unless {value} ends in a <NL> for
7064		string {value} and linewise mode for list {value}. Blockwise
7065		mode is never selected automatically.
7066		Returns zero for success, non-zero for failure.
7067
7068							*E883*
7069		Note: you may not use |List| containing more than one item to
7070		      set search and expression registers. Lists containing no
7071		      items act like empty strings.
7072
7073		Examples: >
7074			:call setreg(v:register, @*)
7075			:call setreg('*', @%, 'ac')
7076			:call setreg('a', "1\n2\n3", 'b5')
7077
7078<		This example shows using the functions to save and restore a
7079		register (note: you may not reliably restore register value
7080		without using the third argument to |getreg()| as without it
7081		newlines are represented as newlines AND Nul bytes are
7082		represented as newlines as well, see |NL-used-for-Nul|). >
7083			:let var_a = getreg('a', 1, 1)
7084			:let var_amode = getregtype('a')
7085			    ....
7086			:call setreg('a', var_a, var_amode)
7087
7088<		You can also change the type of a register by appending
7089		nothing: >
7090			:call setreg('a', '', 'al')
7091
7092settabvar({tabnr}, {varname}, {val})			*settabvar()*
7093		Set tab-local variable {varname} to {val} in tab page {tabnr}.
7094		|t:var|
7095		Note that the variable name without "t:" must be used.
7096		Tabs are numbered starting with one.
7097		This function is not available in the |sandbox|.
7098
7099settabwinvar({tabnr}, {winnr}, {varname}, {val})	*settabwinvar()*
7100		Set option or local variable {varname} in window {winnr} to
7101		{val}.
7102		Tabs are numbered starting with one.  For the current tabpage
7103		use |setwinvar()|.
7104		{winnr} can be the window number or the |window-ID|.
7105		When {winnr} is zero the current window is used.
7106		This also works for a global or local buffer option, but it
7107		doesn't work for a global or local buffer variable.
7108		For a local buffer option the global value is unchanged.
7109		Note that the variable name without "w:" must be used.
7110		Examples: >
7111			:call settabwinvar(1, 1, "&list", 0)
7112			:call settabwinvar(3, 2, "myvar", "foobar")
7113<		This function is not available in the |sandbox|.
7114
7115setwinvar({nr}, {varname}, {val})			*setwinvar()*
7116		Like |settabwinvar()| for the current tab page.
7117		Examples: >
7118			:call setwinvar(1, "&list", 0)
7119			:call setwinvar(2, "myvar", "foobar")
7120
7121sha256({string})						*sha256()*
7122		Returns a String with 64 hex characters, which is the SHA256
7123		checksum of {string}.
7124		{only available when compiled with the |+cryptv| feature}
7125
7126shellescape({string} [, {special}])			*shellescape()*
7127		Escape {string} for use as a shell command argument.
7128		On MS-Windows and MS-DOS, when 'shellslash' is not set, it
7129		will enclose {string} in double quotes and double all double
7130		quotes within {string}.
7131		Otherwise it will enclose {string} in single quotes and
7132		replace all "'" with "'\''".
7133
7134		When the {special} argument is present and it's a non-zero
7135		Number or a non-empty String (|non-zero-arg|), then special
7136		items such as "!", "%", "#" and "<cword>" will be preceded by
7137		a backslash.  This backslash will be removed again by the |:!|
7138		command.
7139
7140		The "!" character will be escaped (again with a |non-zero-arg|
7141		{special}) when 'shell' contains "csh" in the tail.  That is
7142		because for csh and tcsh "!" is used for history replacement
7143		even when inside single quotes.
7144
7145		With a |non-zero-arg| {special} the <NL> character is also
7146		escaped.  When 'shell' containing "csh" in the tail it's
7147		escaped a second time.
7148
7149		Example of use with a |:!| command: >
7150		    :exe '!dir ' . shellescape(expand('<cfile>'), 1)
7151<		This results in a directory listing for the file under the
7152		cursor.  Example of use with |system()|: >
7153		    :call system("chmod +w -- " . shellescape(expand("%")))
7154<		See also |::S|.
7155
7156
7157shiftwidth()						*shiftwidth()*
7158		Returns the effective value of 'shiftwidth'. This is the
7159		'shiftwidth' value unless it is zero, in which case it is the
7160		'tabstop' value.  This function was introduced with patch
7161		7.3.694 in 2012, everybody should have it by now.
7162
7163
7164simplify({filename})					*simplify()*
7165		Simplify the file name as much as possible without changing
7166		the meaning.  Shortcuts (on MS-Windows) or symbolic links (on
7167		Unix) are not resolved.  If the first path component in
7168		{filename} designates the current directory, this will be
7169		valid for the result as well.  A trailing path separator is
7170		not removed either.
7171		Example: >
7172			simplify("./dir/.././/file/") == "./file/"
7173<		Note: The combination "dir/.." is only removed if "dir" is
7174		a searchable directory or does not exist.  On Unix, it is also
7175		removed when "dir" is a symbolic link within the same
7176		directory.  In order to resolve all the involved symbolic
7177		links before simplifying the path name, use |resolve()|.
7178
7179
7180sin({expr})						*sin()*
7181		Return the sine of {expr}, measured in radians, as a |Float|.
7182		{expr} must evaluate to a |Float| or a |Number|.
7183		Examples: >
7184			:echo sin(100)
7185<			-0.506366 >
7186			:echo sin(-4.01)
7187<			0.763301
7188		{only available when compiled with the |+float| feature}
7189
7190
7191sinh({expr})						*sinh()*
7192		Return the hyperbolic sine of {expr} as a |Float| in the range
7193		[-inf, inf].
7194		{expr} must evaluate to a |Float| or a |Number|.
7195		Examples: >
7196			:echo sinh(0.5)
7197<			0.521095 >
7198			:echo sinh(-0.9)
7199<			-1.026517
7200		{only available when compiled with the |+float| feature}
7201
7202
7203sort({list} [, {func} [, {dict}]])			*sort()* *E702*
7204		Sort the items in {list} in-place.  Returns {list}.
7205
7206		If you want a list to remain unmodified make a copy first: >
7207			:let sortedlist = sort(copy(mylist))
7208
7209<		When {func} is omitted, is empty or zero, then sort() uses the
7210		string representation of each item to sort on.  Numbers sort
7211		after Strings, |Lists| after Numbers.  For sorting text in the
7212		current buffer use |:sort|.
7213
7214		When {func} is given and it is '1' or 'i' then case is
7215		ignored.
7216
7217		When {func} is given and it is 'n' then all items will be
7218		sorted numerical (Implementation detail: This uses the
7219		strtod() function to parse numbers, Strings, Lists, Dicts and
7220		Funcrefs will be considered as being 0).
7221
7222		When {func} is given and it is 'N' then all items will be
7223		sorted numerical. This is like 'n' but a string containing
7224		digits will be used as the number they represent.
7225
7226		When {func} is given and it is 'f' then all items will be
7227		sorted numerical. All values must be a Number or a Float.
7228
7229		When {func} is a |Funcref| or a function name, this function
7230		is called to compare items.  The function is invoked with two
7231		items as argument and must return zero if they are equal, 1 or
7232		bigger if the first one sorts after the second one, -1 or
7233		smaller if the first one sorts before the second one.
7234
7235		{dict} is for functions with the "dict" attribute.  It will be
7236		used to set the local variable "self". |Dictionary-function|
7237
7238		The sort is stable, items which compare equal (as number or as
7239		string) will keep their relative position. E.g., when sorting
7240		on numbers, text strings will sort next to each other, in the
7241		same order as they were originally.
7242
7243		Also see |uniq()|.
7244
7245		Example: >
7246			func MyCompare(i1, i2)
7247			   return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
7248			endfunc
7249			let sortedlist = sort(mylist, "MyCompare")
7250<		A shorter compare version for this specific simple case, which
7251		ignores overflow: >
7252			func MyCompare(i1, i2)
7253			   return a:i1 - a:i2
7254			endfunc
7255<
7256							*soundfold()*
7257soundfold({word})
7258		Return the sound-folded equivalent of {word}.  Uses the first
7259		language in 'spelllang' for the current window that supports
7260		soundfolding.  'spell' must be set.  When no sound folding is
7261		possible the {word} is returned unmodified.
7262		This can be used for making spelling suggestions.  Note that
7263		the method can be quite slow.
7264
7265							*spellbadword()*
7266spellbadword([{sentence}])
7267		Without argument: The result is the badly spelled word under
7268		or after the cursor.  The cursor is moved to the start of the
7269		bad word.  When no bad word is found in the cursor line the
7270		result is an empty string and the cursor doesn't move.
7271
7272		With argument: The result is the first word in {sentence} that
7273		is badly spelled.  If there are no spelling mistakes the
7274		result is an empty string.
7275
7276		The return value is a list with two items:
7277		- The badly spelled word or an empty string.
7278		- The type of the spelling error:
7279			"bad"		spelling mistake
7280			"rare"		rare word
7281			"local"		word only valid in another region
7282			"caps"		word should start with Capital
7283		Example: >
7284			echo spellbadword("the quik brown fox")
7285<			['quik', 'bad'] ~
7286
7287		The spelling information for the current window is used.  The
7288		'spell' option must be set and the value of 'spelllang' is
7289		used.
7290
7291							*spellsuggest()*
7292spellsuggest({word} [, {max} [, {capital}]])
7293		Return a |List| with spelling suggestions to replace {word}.
7294		When {max} is given up to this number of suggestions are
7295		returned.  Otherwise up to 25 suggestions are returned.
7296
7297		When the {capital} argument is given and it's non-zero only
7298		suggestions with a leading capital will be given.  Use this
7299		after a match with 'spellcapcheck'.
7300
7301		{word} can be a badly spelled word followed by other text.
7302		This allows for joining two words that were split.  The
7303		suggestions also include the following text, thus you can
7304		replace a line.
7305
7306		{word} may also be a good word.  Similar words will then be
7307		returned.  {word} itself is not included in the suggestions,
7308		although it may appear capitalized.
7309
7310		The spelling information for the current window is used.  The
7311		'spell' option must be set and the values of 'spelllang' and
7312		'spellsuggest' are used.
7313
7314
7315split({expr} [, {pattern} [, {keepempty}]])			*split()*
7316		Make a |List| out of {expr}.  When {pattern} is omitted or
7317		empty each white-separated sequence of characters becomes an
7318		item.
7319		Otherwise the string is split where {pattern} matches,
7320		removing the matched characters. 'ignorecase' is not used
7321		here, add \c to ignore case. |/\c|
7322		When the first or last item is empty it is omitted, unless the
7323		{keepempty} argument is given and it's non-zero.
7324		Other empty items are kept when {pattern} matches at least one
7325		character or when {keepempty} is non-zero.
7326		Example: >
7327			:let words = split(getline('.'), '\W\+')
7328<		To split a string in individual characters: >
7329			:for c in split(mystring, '\zs')
7330<		If you want to keep the separator you can also use '\zs' at
7331		the end of the pattern: >
7332			:echo split('abc:def:ghi', ':\zs')
7333<			['abc:', 'def:', 'ghi'] ~
7334		Splitting a table where the first element can be empty: >
7335			:let items = split(line, ':', 1)
7336<		The opposite function is |join()|.
7337
7338
7339sqrt({expr})						*sqrt()*
7340		Return the non-negative square root of Float {expr} as a
7341		|Float|.
7342		{expr} must evaluate to a |Float| or a |Number|.  When {expr}
7343		is negative the result is NaN (Not a Number).
7344		Examples: >
7345			:echo sqrt(100)
7346<			10.0 >
7347			:echo sqrt(-4.01)
7348<			nan
7349		"nan" may be different, it depends on system libraries.
7350		{only available when compiled with the |+float| feature}
7351
7352
7353str2float({expr})					*str2float()*
7354		Convert String {expr} to a Float.  This mostly works the same
7355		as when using a floating point number in an expression, see
7356		|floating-point-format|.  But it's a bit more permissive.
7357		E.g., "1e40" is accepted, while in an expression you need to
7358		write "1.0e40".
7359		Text after the number is silently ignored.
7360		The decimal point is always '.', no matter what the locale is
7361		set to.  A comma ends the number: "12,345.67" is converted to
7362		12.0.  You can strip out thousands separators with
7363		|substitute()|: >
7364			let f = str2float(substitute(text, ',', '', 'g'))
7365<		{only available when compiled with the |+float| feature}
7366
7367
7368str2nr({expr} [, {base}])				*str2nr()*
7369		Convert string {expr} to a number.
7370		{base} is the conversion base, it can be 2, 8, 10 or 16.
7371		When {base} is omitted base 10 is used.  This also means that
7372		a leading zero doesn't cause octal conversion to be used, as
7373		with the default String to Number conversion.
7374		When {base} is 16 a leading "0x" or "0X" is ignored.  With a
7375		different base the result will be zero.  Similarly, when
7376		{base} is 8 a leading "0" is ignored, and when {base} is 2 a
7377		leading "0b" or "0B" is ignored.
7378		Text after the number is silently ignored.
7379
7380
7381strchars({expr} [, {skipcc}])					*strchars()*
7382		The result is a Number, which is the number of characters
7383		in String {expr}.
7384		When {skipcc} is omitted or zero, composing characters are
7385		counted separately.
7386		When {skipcc} set to 1, Composing characters are ignored.
7387		Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
7388
7389		{skipcc} is only available after 7.4.755.  For backward
7390		compatibility, you can define a wrapper function: >
7391		    if has("patch-7.4.755")
7392		      function s:strchars(str, skipcc)
7393			return strchars(a:str, a:skipcc)
7394		      endfunction
7395		    else
7396		      function s:strchars(str, skipcc)
7397			if a:skipcc
7398			  return strlen(substitute(a:str, ".", "x", "g"))
7399			else
7400			  return strchars(a:str)
7401			endif
7402		      endfunction
7403		    endif
7404<
7405strcharpart({src}, {start}[, {len}])			*strcharpart()*
7406		Like |strpart()| but using character index and length instead
7407		of byte index and length.
7408		When a character index is used where a character does not
7409		exist it is assumed to be one character.  For example: >
7410			strcharpart('abc', -1, 2)
7411<		results in 'a'.
7412
7413strdisplaywidth({expr}[, {col}])			*strdisplaywidth()*
7414		The result is a Number, which is the number of display cells
7415		String {expr} occupies on the screen when it starts at {col}.
7416		When {col} is omitted zero is used.  Otherwise it is the
7417		screen column where to start.  This matters for Tab
7418		characters.
7419		The option settings of the current window are used.  This
7420		matters for anything that's displayed differently, such as
7421		'tabstop' and 'display'.
7422		When {expr} contains characters with East Asian Width Class
7423		Ambiguous, this function's return value depends on 'ambiwidth'.
7424		Also see |strlen()|, |strwidth()| and |strchars()|.
7425
7426strftime({format} [, {time}])				*strftime()*
7427		The result is a String, which is a formatted date and time, as
7428		specified by the {format} string.  The given {time} is used,
7429		or the current time if no time is given.  The accepted
7430		{format} depends on your system, thus this is not portable!
7431		See the manual page of the C function strftime() for the
7432		format.  The maximum length of the result is 80 characters.
7433		See also |localtime()| and |getftime()|.
7434		The language can be changed with the |:language| command.
7435		Examples: >
7436		  :echo strftime("%c")		   Sun Apr 27 11:49:23 1997
7437		  :echo strftime("%Y %b %d %X")	   1997 Apr 27 11:53:25
7438		  :echo strftime("%y%m%d %T")	   970427 11:53:55
7439		  :echo strftime("%H:%M")	   11:55
7440		  :echo strftime("%c", getftime("file.c"))
7441						   Show mod time of file.c.
7442<		Not available on all systems.  To check use: >
7443			:if exists("*strftime")
7444
7445strgetchar({str}, {index})				*strgetchar()*
7446		Get character {index} from {str}.  This uses a character
7447		index, not a byte index.  Composing characters are considered
7448		separate characters here.
7449		Also see |strcharpart()| and |strchars()|.
7450
7451stridx({haystack}, {needle} [, {start}])		*stridx()*
7452		The result is a Number, which gives the byte index in
7453		{haystack} of the first occurrence of the String {needle}.
7454		If {start} is specified, the search starts at index {start}.
7455		This can be used to find a second match: >
7456			:let colon1 = stridx(line, ":")
7457			:let colon2 = stridx(line, ":", colon1 + 1)
7458<		The search is done case-sensitive.
7459		For pattern searches use |match()|.
7460		-1 is returned if the {needle} does not occur in {haystack}.
7461		See also |strridx()|.
7462		Examples: >
7463		  :echo stridx("An Example", "Example")	     3
7464		  :echo stridx("Starting point", "Start")    0
7465		  :echo stridx("Starting point", "start")   -1
7466<						*strstr()* *strchr()*
7467		stridx() works similar to the C function strstr().  When used
7468		with a single character it works similar to strchr().
7469
7470							*string()*
7471string({expr})	Return {expr} converted to a String.  If {expr} is a Number,
7472		Float, String or a composition of them, then the result can be
7473		parsed back with |eval()|.
7474			{expr} type	result ~
7475			String		'string' (single quotes are doubled)
7476			Number		123
7477			Float		123.123456 or 1.123456e8
7478			Funcref		function('name')
7479			List		[item, item]
7480			Dictionary	{key: value, key: value}
7481
7482		When a List or Dictionary has a recursive reference it is
7483		replaced by "[...]" or "{...}".  Using eval() on the result
7484		will then fail.
7485
7486		Also see |strtrans()|.
7487
7488							*strlen()*
7489strlen({expr})	The result is a Number, which is the length of the String
7490		{expr} in bytes.
7491		If the argument is a Number it is first converted to a String.
7492		For other types an error is given.
7493		If you want to count the number of multi-byte characters use
7494		|strchars()|.
7495		Also see |len()|, |strdisplaywidth()| and |strwidth()|.
7496
7497strpart({src}, {start}[, {len}])			*strpart()*
7498		The result is a String, which is part of {src}, starting from
7499		byte {start}, with the byte length {len}.
7500		To count characters instead of bytes use |strcharpart()|.
7501
7502		When bytes are selected which do not exist, this doesn't
7503		result in an error, the bytes are simply omitted.
7504		If {len} is missing, the copy continues from {start} till the
7505		end of the {src}. >
7506			strpart("abcdefg", 3, 2)    == "de"
7507			strpart("abcdefg", -2, 4)   == "ab"
7508			strpart("abcdefg", 5, 4)    == "fg"
7509			strpart("abcdefg", 3)	    == "defg"
7510
7511<		Note: To get the first character, {start} must be 0.  For
7512		example, to get three bytes under and after the cursor: >
7513			strpart(getline("."), col(".") - 1, 3)
7514<
7515strridx({haystack}, {needle} [, {start}])			*strridx()*
7516		The result is a Number, which gives the byte index in
7517		{haystack} of the last occurrence of the String {needle}.
7518		When {start} is specified, matches beyond this index are
7519		ignored.  This can be used to find a match before a previous
7520		match: >
7521			:let lastcomma = strridx(line, ",")
7522			:let comma2 = strridx(line, ",", lastcomma - 1)
7523<		The search is done case-sensitive.
7524		For pattern searches use |match()|.
7525		-1 is returned if the {needle} does not occur in {haystack}.
7526		If the {needle} is empty the length of {haystack} is returned.
7527		See also |stridx()|.  Examples: >
7528		  :echo strridx("an angry armadillo", "an")	     3
7529<							*strrchr()*
7530		When used with a single character it works similar to the C
7531		function strrchr().
7532
7533strtrans({expr})					*strtrans()*
7534		The result is a String, which is {expr} with all unprintable
7535		characters translated into printable characters |'isprint'|.
7536		Like they are shown in a window.  Example: >
7537			echo strtrans(@a)
7538<		This displays a newline in register a as "^@" instead of
7539		starting a new line.
7540
7541strwidth({expr})					*strwidth()*
7542		The result is a Number, which is the number of display cells
7543		String {expr} occupies.  A Tab character is counted as one
7544		cell, alternatively use |strdisplaywidth()|.
7545		When {expr} contains characters with East Asian Width Class
7546		Ambiguous, this function's return value depends on 'ambiwidth'.
7547		Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
7548
7549submatch({nr}[, {list}])			*submatch()* *E935*
7550		Only for an expression in a |:substitute| command or
7551		substitute() function.
7552		Returns the {nr}'th submatch of the matched text.  When {nr}
7553		is 0 the whole matched text is returned.
7554		Note that a NL in the string can stand for a line break of a
7555		multi-line match or a NUL character in the text.
7556		Also see |sub-replace-expression|.
7557
7558		If {list} is present and non-zero then submatch() returns
7559		a list of strings, similar to |getline()| with two arguments.
7560		NL characters in the text represent NUL characters in the
7561		text.
7562		Only returns more than one item for |:substitute|, inside
7563		|substitute()| this list will always contain one or zero
7564		items, since there are no real line breaks.
7565
7566		When substitute() is used recursively only the submatches in
7567		the current (deepest) call can be obtained.
7568
7569		Example: >
7570			:s/\d\+/\=submatch(0) + 1/
7571<		This finds the first number in the line and adds one to it.
7572		A line break is included as a newline character.
7573
7574substitute({expr}, {pat}, {sub}, {flags})		*substitute()*
7575		The result is a String, which is a copy of {expr}, in which
7576		the first match of {pat} is replaced with {sub}.
7577		When {flags} is "g", all matches of {pat} in {expr} are
7578		replaced.  Otherwise {flags} should be "".
7579
7580		This works like the ":substitute" command (without any flags).
7581		But the matching with {pat} is always done like the 'magic'
7582		option is set and 'cpoptions' is empty (to make scripts
7583		portable).  'ignorecase' is still relevant, use |/\c| or |/\C|
7584		if you want to ignore or match case and ignore 'ignorecase'.
7585		'smartcase' is not used.  See |string-match| for how {pat} is
7586		used.
7587
7588		A "~" in {sub} is not replaced with the previous {sub}.
7589		Note that some codes in {sub} have a special meaning
7590		|sub-replace-special|.  For example, to replace something with
7591		"\n" (two characters), use "\\\\n" or '\\n'.
7592
7593		When {pat} does not match in {expr}, {expr} is returned
7594		unmodified.
7595
7596		Example: >
7597		   :let &path = substitute(&path, ",\\=[^,]*$", "", "")
7598<		This removes the last component of the 'path' option. >
7599		   :echo substitute("testing", ".*", "\\U\\0", "")
7600<		results in "TESTING".
7601
7602		When {sub} starts with "\=", the remainder is interpreted as
7603		an expression. See |sub-replace-expression|.  Example: >
7604		   :echo substitute(s, '%\(\x\x\)',
7605			   \ '\=nr2char("0x" . submatch(1))', 'g')
7606
7607<		When {sub} is a Funcref that function is called, with one
7608		optional argument.  Example: >
7609		   :echo substitute(s, '%\(\x\x\)', SubNr, 'g')
7610<		The optional argument is a list which contains the whole
7611		matched string and up to nine submatches, like what
7612		|submatch()| returns.  Example: >
7613		   :echo substitute(s, '%\(\x\x\)', {m -> '0x' . m[1]}, 'g')
7614
7615synID({lnum}, {col}, {trans})				*synID()*
7616		The result is a Number, which is the syntax ID at the position
7617		{lnum} and {col} in the current window.
7618		The syntax ID can be used with |synIDattr()| and
7619		|synIDtrans()| to obtain syntax information about text.
7620
7621		{col} is 1 for the leftmost column, {lnum} is 1 for the first
7622		line.  'synmaxcol' applies, in a longer line zero is returned.
7623		Note that when the position is after the last character,
7624		that's where the cursor can be in Insert mode, synID() returns
7625		zero.
7626
7627		When {trans} is |TRUE|, transparent items are reduced to the
7628		item that they reveal.  This is useful when wanting to know
7629		the effective color.  When {trans} is |FALSE|, the transparent
7630		item is returned.  This is useful when wanting to know which
7631		syntax item is effective (e.g. inside parens).
7632		Warning: This function can be very slow.  Best speed is
7633		obtained by going through the file in forward direction.
7634
7635		Example (echoes the name of the syntax item under the cursor): >
7636			:echo synIDattr(synID(line("."), col("."), 1), "name")
7637<
7638
7639synIDattr({synID}, {what} [, {mode}])			*synIDattr()*
7640		The result is a String, which is the {what} attribute of
7641		syntax ID {synID}.  This can be used to obtain information
7642		about a syntax item.
7643		{mode} can be "gui", "cterm" or "term", to get the attributes
7644		for that mode.  When {mode} is omitted, or an invalid value is
7645		used, the attributes for the currently active highlighting are
7646		used (GUI, cterm or term).
7647		Use synIDtrans() to follow linked highlight groups.
7648		{what}		result
7649		"name"		the name of the syntax item
7650		"fg"		foreground color (GUI: color name used to set
7651				the color, cterm: color number as a string,
7652				term: empty string)
7653		"bg"		background color (as with "fg")
7654		"font"		font name (only available in the GUI)
7655				|highlight-font|
7656		"sp"		special color (as with "fg") |highlight-guisp|
7657		"fg#"		like "fg", but for the GUI and the GUI is
7658				running the name in "#RRGGBB" form
7659		"bg#"		like "fg#" for "bg"
7660		"sp#"		like "fg#" for "sp"
7661		"bold"		"1" if bold
7662		"italic"	"1" if italic
7663		"reverse"	"1" if reverse
7664		"inverse"	"1" if inverse (= reverse)
7665		"standout"	"1" if standout
7666		"underline"	"1" if underlined
7667		"undercurl"	"1" if undercurled
7668
7669		Example (echoes the color of the syntax item under the
7670		cursor): >
7671	:echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg")
7672<
7673synIDtrans({synID})					*synIDtrans()*
7674		The result is a Number, which is the translated syntax ID of
7675		{synID}.  This is the syntax group ID of what is being used to
7676		highlight the character.  Highlight links given with
7677		":highlight link" are followed.
7678
7679synconcealed({lnum}, {col})				*synconcealed()*
7680		The result is a List with currently three items:
7681		1. The first item in the list is 0 if the character at the
7682		   position {lnum} and {col} is not part of a concealable
7683		   region, 1 if it is.
7684		2. The second item in the list is a string. If the first item
7685		   is 1, the second item contains the text which will be
7686		   displayed in place of the concealed text, depending on the
7687		   current setting of 'conceallevel' and 'listchars'.
7688		3. The third and final item in the list is a number
7689		   representing the specific syntax region matched in the
7690		   line. When the character is not concealed the value is
7691		   zero. This allows detection of the beginning of a new
7692		   concealable region if there are two consecutive regions
7693		   with the same replacement character.  For an example, if
7694		   the text is "123456" and both "23" and "45" are concealed
7695		   and replace by the character "X", then:
7696			call			returns ~
7697		   	synconcealed(lnum, 1)   [0, '', 0]
7698		   	synconcealed(lnum, 2)   [1, 'X', 1]
7699		   	synconcealed(lnum, 3)   [1, 'X', 1]
7700		   	synconcealed(lnum, 4)   [1, 'X', 2]
7701		   	synconcealed(lnum, 5)   [1, 'X', 2]
7702		   	synconcealed(lnum, 6)   [0, '', 0]
7703
7704
7705synstack({lnum}, {col})					*synstack()*
7706		Return a |List|, which is the stack of syntax items at the
7707		position {lnum} and {col} in the current window.  Each item in
7708		the List is an ID like what |synID()| returns.
7709		The first item in the List is the outer region, following are
7710		items contained in that one.  The last one is what |synID()|
7711		returns, unless not the whole item is highlighted or it is a
7712		transparent item.
7713		This function is useful for debugging a syntax file.
7714		Example that shows the syntax stack under the cursor: >
7715			for id in synstack(line("."), col("."))
7716			   echo synIDattr(id, "name")
7717			endfor
7718<		When the position specified with {lnum} and {col} is invalid
7719		nothing is returned.  The position just after the last
7720		character in a line and the first column in an empty line are
7721		valid positions.
7722
7723system({expr} [, {input}])				*system()* *E677*
7724		Get the output of the shell command {expr} as a string.  See
7725		|systemlist()| to get the output as a List.
7726
7727		When {input} is given and is a string this string is written
7728		to a file and passed as stdin to the command.  The string is
7729		written as-is, you need to take care of using the correct line
7730		separators yourself.
7731		If {input} is given and is a |List| it is written to the file
7732		in a way |writefile()| does with {binary} set to "b" (i.e.
7733		with a newline between each list item with newlines inside
7734		list items converted to NULs).
7735		When {input} is given and is a number that is a valid id for
7736		an existing buffer then the content of the buffer is written
7737		to the file line by line, each line terminated by a NL and
7738		NULs characters where the text has a NL.
7739
7740		Pipes are not used, the 'shelltemp' option is not used.
7741
7742		When prepended by |:silent| the terminal will not be set to
7743		cooked mode.  This is meant to be used for commands that do
7744		not need the user to type.  It avoids stray characters showing
7745		up on the screen which require |CTRL-L| to remove. >
7746			:silent let f = system('ls *.vim')
7747<
7748		Note: Use |shellescape()| or |::S| with |expand()| or
7749		|fnamemodify()| to escape special characters in a command
7750		argument.  Newlines in {expr} may cause the command to fail.
7751		The characters in 'shellquote' and 'shellxquote' may also
7752		cause trouble.
7753		This is not to be used for interactive commands.
7754
7755		The result is a String.  Example: >
7756		    :let files = system("ls " .  shellescape(expand('%:h')))
7757		    :let files = system('ls ' . expand('%:h:S'))
7758
7759<		To make the result more system-independent, the shell output
7760		is filtered to replace <CR> with <NL> for Macintosh, and
7761		<CR><NL> with <NL> for DOS-like systems.
7762		To avoid the string being truncated at a NUL, all NUL
7763		characters are replaced with SOH (0x01).
7764
7765		The command executed is constructed using several options:
7766	'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote'
7767		({tmp} is an automatically generated file name).
7768		For Unix and OS/2 braces are put around {expr} to allow for
7769		concatenated commands.
7770
7771		The command will be executed in "cooked" mode, so that a
7772		CTRL-C will interrupt the command (on Unix at least).
7773
7774		The resulting error code can be found in |v:shell_error|.
7775		This function will fail in |restricted-mode|.
7776
7777		Note that any wrong value in the options mentioned above may
7778		make the function fail.  It has also been reported to fail
7779		when using a security agent application.
7780		Unlike ":!cmd" there is no automatic check for changed files.
7781		Use |:checktime| to force a check.
7782
7783
7784systemlist({expr} [, {input}])				*systemlist()*
7785		Same as |system()|, but returns a |List| with lines (parts of
7786		output separated by NL) with NULs transformed into NLs. Output
7787		is the same as |readfile()| will output with {binary} argument
7788		set to "b".  Note that on MS-Windows you may get trailing CR
7789		characters.
7790
7791		Returns an empty string on error.
7792
7793
7794tabpagebuflist([{arg}])					*tabpagebuflist()*
7795		The result is a |List|, where each item is the number of the
7796		buffer associated with each window in the current tab page.
7797		{arg} specifies the number of the tab page to be used. When
7798		omitted the current tab page is used.
7799		When {arg} is invalid the number zero is returned.
7800		To get a list of all buffers in all tabs use this: >
7801			let buflist = []
7802			for i in range(tabpagenr('$'))
7803			   call extend(buflist, tabpagebuflist(i + 1))
7804			endfor
7805<		Note that a buffer may appear in more than one window.
7806
7807
7808tabpagenr([{arg}])					*tabpagenr()*
7809		The result is a Number, which is the number of the current
7810		tab page.  The first tab page has number 1.
7811		When the optional argument is "$", the number of the last tab
7812		page is returned (the tab page count).
7813		The number can be used with the |:tab| command.
7814
7815
7816tabpagewinnr({tabarg} [, {arg}])			*tabpagewinnr()*
7817		Like |winnr()| but for tab page {tabarg}.
7818		{tabarg} specifies the number of tab page to be used.
7819		{arg} is used like with |winnr()|:
7820		- When omitted the current window number is returned.  This is
7821		  the window which will be used when going to this tab page.
7822		- When "$" the number of windows is returned.
7823		- When "#" the previous window nr is returned.
7824		Useful examples: >
7825		    tabpagewinnr(1)	    " current window of tab page 1
7826		    tabpagewinnr(4, '$')    " number of windows in tab page 4
7827<		When {tabarg} is invalid zero is returned.
7828
7829							*tagfiles()*
7830tagfiles()	Returns a |List| with the file names used to search for tags
7831		for the current buffer.  This is the 'tags' option expanded.
7832
7833
7834taglist({expr}[, {filename}])				*taglist()*
7835		Returns a list of tags matching the regular expression {expr}.
7836
7837		If {filename} is passed it is used to prioritize the results
7838		in the same way that |:tselect| does. See |tag-priority|.
7839		{filename} should be the full path of the file.
7840
7841		Each list item is a dictionary with at least the following
7842		entries:
7843			name		Name of the tag.
7844			filename	Name of the file where the tag is
7845					defined.  It is either relative to the
7846					current directory or a full path.
7847			cmd		Ex command used to locate the tag in
7848					the file.
7849			kind		Type of the tag.  The value for this
7850					entry depends on the language specific
7851					kind values.  Only available when
7852					using a tags file generated by
7853					Exuberant ctags or hdrtag.
7854			static		A file specific tag.  Refer to
7855					|static-tag| for more information.
7856		More entries may be present, depending on the content of the
7857		tags file: access, implementation, inherits and signature.
7858		Refer to the ctags documentation for information about these
7859		fields.  For C code the fields "struct", "class" and "enum"
7860		may appear, they give the name of the entity the tag is
7861		contained in.
7862
7863		The ex-command "cmd" can be either an ex search pattern, a
7864		line number or a line number followed by a byte number.
7865
7866		If there are no matching tags, then an empty list is returned.
7867
7868		To get an exact tag match, the anchors '^' and '$' should be
7869		used in {expr}.  This also make the function work faster.
7870		Refer to |tag-regexp| for more information about the tag
7871		search regular expression pattern.
7872
7873		Refer to |'tags'| for information about how the tags file is
7874		located by Vim. Refer to |tags-file-format| for the format of
7875		the tags file generated by the different ctags tools.
7876
7877tan({expr})						*tan()*
7878		Return the tangent of {expr}, measured in radians, as a |Float|
7879		in the range [-inf, inf].
7880		{expr} must evaluate to a |Float| or a |Number|.
7881		Examples: >
7882			:echo tan(10)
7883<			0.648361 >
7884			:echo tan(-4.01)
7885<			-1.181502
7886		{only available when compiled with the |+float| feature}
7887
7888
7889tanh({expr})						*tanh()*
7890		Return the hyperbolic tangent of {expr} as a |Float| in the
7891		range [-1, 1].
7892		{expr} must evaluate to a |Float| or a |Number|.
7893		Examples: >
7894			:echo tanh(0.5)
7895<			0.462117 >
7896			:echo tanh(-1)
7897<			-0.761594
7898		{only available when compiled with the |+float| feature}
7899
7900
7901tempname()					*tempname()* *temp-file-name*
7902		The result is a String, which is the name of a file that
7903		doesn't exist.  It can be used for a temporary file.  The name
7904		is different for at least 26 consecutive calls.  Example: >
7905			:let tmpfile = tempname()
7906			:exe "redir > " . tmpfile
7907<		For Unix, the file will be in a private directory |tempfile|.
7908		For MS-Windows forward slashes are used when the 'shellslash'
7909		option is set or when 'shellcmdflag' starts with '-'.
7910
7911term_getattr({attr}, {what})				*term_getattr()*
7912		Given {attr}, a value returned by term_scrape() in the "attr"
7913		item, return whether {what} is on.  {what} can be one of:
7914			bold
7915			italic
7916			underline
7917			strike
7918			reverse
7919
7920term_getcursor({buf})					*term_getcursor()*
7921		Get the cusor position of terminal {buf}. Returns a list with
7922		three numbers: [rows, cols, visible].  "rows" and "cols" are
7923		one based, the first sceen cell is row 1, column 1.
7924		"visible" is one when the cursor is visible, zero when it is
7925		hidden.
7926
7927		This is the cursor position of the terminal itself, not of the
7928		Vim window.
7929
7930		{buf} must be the buffer number of a terminal window. If the
7931		buffer does not exist or is not a terminal window, an empty
7932		list is returned.
7933
7934term_getjob({buf})					*term_getjob()*
7935		Get the Job associated with terminal window {buf}.
7936		{buf} is used as with |term_getsize()|.
7937		Returns |v:null| when there is no job.
7938
7939term_getline({buf}, {row})				*term_getline()*
7940		Get a line of text from the terminal window of {buf}.
7941		{buf} is used as with |term_getsize()|.
7942
7943		The first line has {row} one.  When {row} "." the cursor line
7944		is used.  When {row} is invalid an empty string is returned.
7945
7946term_getsize({buf})					*term_getsize()*
7947		Get the size of terminal {buf}. Returns a list with two
7948		numbers: [rows, cols].  This is the size of the terminal, not
7949		the window containing the terminal.
7950
7951		{buf} must be the buffer number of a terminal window.  Use an
7952		empty string for the current buffer.  If the buffer does not
7953		exist or is not a terminal window, an empty list is returned.
7954
7955term_getstatus({buf})					*term_getstatus()*
7956		Get the status of terminal {buf}. This returns a comma
7957		separated list of these items:
7958			running		job is running
7959			finished	job has finished
7960			terminal	in Terminal-Normal mode
7961		One of "running" or "finished" is always present.
7962
7963		{buf} must be the buffer number of a terminal window. If the
7964		buffer does not exist or is not a terminal window, an empty
7965		string is returned.
7966
7967term_gettitle({buf})					*term_gettitle()*
7968		Get the title of terminal {buf}. This is the title that the
7969		job in the terminal has set.
7970
7971		{buf} must be the buffer number of a terminal window. If the
7972		buffer does not exist or is not a terminal window, an empty
7973		string is returned.
7974
7975term_gettty({buf})					*term_gettty()*
7976		Get the name of the controlling terminal associated with
7977		terminal window {buf}.
7978		{buf} is used as with |term_getsize()|.
7979
7980term_list()						*term_list()*
7981		Return a list with the buffer numbers of all buffers for
7982		terminal windows.
7983
7984term_scrape({buf}, {row})				*term_scrape()*
7985		Get the contents of {row} of terminal screen of {buf}.
7986		For {buf} see |term_getsize()|.
7987
7988		The first line has {row} one.  When {row} "." the cursor line
7989		is used.  When {row} is invalid an empty string is returned.
7990
7991		Return a List containing a Dict for each screen cell:
7992		    "chars"	character(s) at the cell
7993		    "fg"	foreground color as #rrggbb
7994		    "bg"	background color as #rrggbb
7995		    "attr"	attributes of the cell, use |term_getattr()|
7996		    		to get the individual flags
7997		    "width"	cell width: 1 or 2
7998
7999term_sendkeys({buf}, {keys})				*term_sendkeys()*
8000		Send keystrokes {keys} to terminal {buf}.
8001		{buf} is used as with |term_getsize()|.
8002
8003		{keys} are translated as key sequences. For example, "\<c-x>"
8004		means the character CTRL-X.
8005
8006term_start({cmd}, {options})				*term_start()*
8007		Open a terminal window and run {cmd} in it.
8008
8009		Returns the buffer number of the terminal window.
8010		When opening the window fails zero is returned.
8011
8012		{options} are similar to what is used for |job_start()|, see
8013		|job-options|.  However, not all options can be used.  These
8014		are supported:
8015		   all timeout options
8016		   "stoponexit"
8017		   "out_cb", "err_cb"
8018		   "exit_cb", "close_cb"
8019		   "in_io", "in_top", "in_bot", "in_name", "in_buf"
8020		   "out_io", "out_name", "out_buf", "out_modifiable", "out_msg"
8021		   "err_io", "err_name", "err_buf", "err_modifiable", "err_msg"
8022		However, at least one of stdin, stdout or stderr must be
8023		connected to the terminal.  When I/O is connected to the
8024		terminal then the callback function for that part is not used.
8025
8026		There is one extra option:
8027		   "term_name"   name to use for the buffer name, instead of
8028				 the command name.
8029
8030term_wait({buf})						*term_wait()*
8031		Wait for pending updates of {buf} to be handled.
8032		{buf} is used as with |term_getsize()|.
8033
8034test_alloc_fail({id}, {countdown}, {repeat})		*test_alloc_fail()*
8035		This is for testing: If the memory allocation with {id} is
8036		called, then decrement {countdown}, and when it reaches zero
8037		let memory allocation fail {repeat} times.  When {repeat} is
8038		smaller than one it fails one time.
8039
8040test_autochdir()					*test_autochdir()*
8041		Set a flag to enable the effect of 'autochdir' before Vim
8042		startup has finished.
8043
8044test_garbagecollect_now()			 *test_garbagecollect_now()*
8045		Like garbagecollect(), but executed right away.  This must
8046		only be called directly to avoid any structure to exist
8047		internally, and |v:testing| must have been set before calling
8048		any function.
8049
8050test_ignore_error({expr})			 *test_ignore_error()*
8051		Ignore any error containing {expr}.  A normal message is given
8052		instead.
8053		This is only meant to be used in tests, where catching the
8054		error with try/catch cannot be used (because it skips over
8055		following code).
8056		{expr} is used literally, not as a pattern.
8057		There is currently no way to revert this.
8058
8059test_null_channel()					*test_null_channel()*
8060		Return a Channel that is null. Only useful for testing.
8061		{only available when compiled with the +channel feature}
8062
8063test_null_dict()					*test_null_dict()*
8064		Return a Dict that is null. Only useful for testing.
8065
8066test_null_job()						*test_null_job()*
8067		Return a Job that is null. Only useful for testing.
8068		{only available when compiled with the +job feature}
8069
8070test_null_list()					*test_null_list()*
8071		Return a List that is null. Only useful for testing.
8072
8073test_null_partial()					*test_null_partial()*
8074		Return a Partial that is null. Only useful for testing.
8075
8076test_null_string()					*test_null_string()*
8077		Return a String that is null. Only useful for testing.
8078
8079test_override({name}, {val})				*test_override()*
8080		Overrides certain parts of Vims internal processing to be able
8081		to run tests. Only to be used for testing Vim!
8082		The override is enabled when {val} is non-zero and removed
8083		when {val} is zero.
8084		Current supported values for name are:
8085
8086		name	     effect when {val} is non-zero ~
8087		redraw       disable the redrawing() function
8088		char_avail   disable the char_avail() function
8089		starting     reset the "starting" variable, see below
8090		ALL	     clear all overrides ({val} is not used)
8091
8092		"starting" is to be used when a test should behave like
8093		startup was done.  Since the tests are run by sourcing a
8094		script the "starting" variable is non-zero. This is usually a
8095		good thing (tests run faster), but sometimes changes behavior
8096		in a way that the test doesn't work properly.
8097		When using: >
8098			call test_override('starting', 1)
8099< 		The value of "starting" is saved.  It is restored by: >
8100			call test_override('starting', 0)
8101
8102test_settime({expr})					*test_settime()*
8103		Set the time Vim uses internally.  Currently only used for
8104		timestamps in the history, as they are used in viminfo, and
8105		for undo.
8106		Using a value of 1 makes Vim not sleep after a warning or
8107		error message.
8108		{expr} must evaluate to a number.  When the value is zero the
8109		normal behavior is restored.
8110
8111							*timer_info()*
8112timer_info([{id}])
8113		Return a list with information about timers.
8114		When {id} is given only information about this timer is
8115		returned.  When timer {id} does not exist an empty list is
8116		returned.
8117		When {id} is omitted information about all timers is returned.
8118
8119		For each timer the information is stored in a Dictionary with
8120		these items:
8121		    "id"	    the timer ID
8122		    "time"	    time the timer was started with
8123		    "remaining"	    time until the timer fires
8124		    "repeat"	    number of times the timer will still fire;
8125				    -1 means forever
8126		    "callback"	    the callback
8127		    "paused"	    1 if the timer is paused, 0 otherwise
8128
8129		{only available when compiled with the |+timers| feature}
8130
8131timer_pause({timer}, {paused})				*timer_pause()*
8132		Pause or unpause a timer.  A paused timer does not invoke its
8133		callback when its time expires.  Unpausing a timer may cause
8134		the callback to be invoked almost immediately if enough time
8135		has passed.
8136
8137		Pausing a timer is useful to avoid the callback to be called
8138		for a short time.
8139
8140		If {paused} evaluates to a non-zero Number or a non-empty
8141		String, then the timer is paused, otherwise it is unpaused.
8142		See |non-zero-arg|.
8143
8144		{only available when compiled with the |+timers| feature}
8145
8146						*timer_start()* *timer* *timers*
8147timer_start({time}, {callback} [, {options}])
8148		Create a timer and return the timer ID.
8149
8150		{time} is the waiting time in milliseconds. This is the
8151		minimum time before invoking the callback.  When the system is
8152		busy or Vim is not waiting for input the time will be longer.
8153
8154		{callback} is the function to call.  It can be the name of a
8155		function or a |Funcref|.  It is called with one argument, which
8156		is the timer ID.  The callback is only invoked when Vim is
8157		waiting for input.
8158
8159		{options} is a dictionary.  Supported entries:
8160		   "repeat"	Number of times to repeat calling the
8161				callback.  -1 means forever.  When not present
8162				the callback will be called once.
8163				If the timer causes an error three times in a
8164				row the repeat is cancelled.  This avoids that
8165				Vim becomes unusable because of all the error
8166				messages.
8167
8168		Example: >
8169			func MyHandler(timer)
8170			  echo 'Handler called'
8171			endfunc
8172			let timer = timer_start(500, 'MyHandler',
8173				\ {'repeat': 3})
8174<		This will invoke MyHandler() three times at 500 msec
8175		intervals.
8176
8177		{only available when compiled with the |+timers| feature}
8178
8179timer_stop({timer})					*timer_stop()*
8180		Stop a timer.  The timer callback will no longer be invoked.
8181		{timer} is an ID returned by timer_start(), thus it must be a
8182		Number.  If {timer} does not exist there is no error.
8183
8184		{only available when compiled with the |+timers| feature}
8185
8186timer_stopall()						*timer_stopall()*
8187		Stop all timers.  The timer callbacks will no longer be
8188		invoked.  Useful if some timers is misbehaving.  If there are
8189		no timers there is no error.
8190
8191		{only available when compiled with the |+timers| feature}
8192
8193tolower({expr})						*tolower()*
8194		The result is a copy of the String given, with all uppercase
8195		characters turned into lowercase (just like applying |gu| to
8196		the string).
8197
8198toupper({expr})						*toupper()*
8199		The result is a copy of the String given, with all lowercase
8200		characters turned into uppercase (just like applying |gU| to
8201		the string).
8202
8203tr({src}, {fromstr}, {tostr})				*tr()*
8204		The result is a copy of the {src} string with all characters
8205		which appear in {fromstr} replaced by the character in that
8206		position in the {tostr} string.  Thus the first character in
8207		{fromstr} is translated into the first character in {tostr}
8208		and so on.  Exactly like the unix "tr" command.
8209		This code also deals with multibyte characters properly.
8210
8211		Examples: >
8212			echo tr("hello there", "ht", "HT")
8213<		returns "Hello THere" >
8214			echo tr("<blob>", "<>", "{}")
8215<		returns "{blob}"
8216
8217trunc({expr})							*trunc()*
8218		Return the largest integral value with magnitude less than or
8219		equal to {expr} as a |Float| (truncate towards zero).
8220		{expr} must evaluate to a |Float| or a |Number|.
8221		Examples: >
8222			echo trunc(1.456)
8223<			1.0  >
8224			echo trunc(-5.456)
8225<			-5.0  >
8226			echo trunc(4.0)
8227<			4.0
8228		{only available when compiled with the |+float| feature}
8229
8230							*type()*
8231type({expr})	The result is a Number representing the type of {expr}.
8232		Instead of using the number directly, it is better to use the
8233		v:t_ variable that has the value:
8234			Number:	    0  |v:t_number|
8235			String:	    1  |v:t_string|
8236			Funcref:    2  |v:t_func|
8237			List:	    3  |v:t_list|
8238			Dictionary: 4  |v:t_dict|
8239			Float:	    5  |v:t_float|
8240			Boolean:    6  |v:t_bool| (v:false and v:true)
8241			None	    7  |v:t_none| (v:null and v:none)
8242			Job	    8  |v:t_job|
8243			Channel	    9  |v:t_channel|
8244		For backward compatibility, this method can be used: >
8245			:if type(myvar) == type(0)
8246			:if type(myvar) == type("")
8247			:if type(myvar) == type(function("tr"))
8248			:if type(myvar) == type([])
8249			:if type(myvar) == type({})
8250			:if type(myvar) == type(0.0)
8251			:if type(myvar) == type(v:false)
8252			:if type(myvar) == type(v:none)
8253<		To check if the v:t_ variables exist use this: >
8254			:if exists('v:t_number')
8255
8256undofile({name})					*undofile()*
8257		Return the name of the undo file that would be used for a file
8258		with name {name} when writing.  This uses the 'undodir'
8259		option, finding directories that exist.  It does not check if
8260		the undo file exists.
8261		{name} is always expanded to the full path, since that is what
8262		is used internally.
8263		If {name} is empty undofile() returns an empty string, since a
8264		buffer without a file name will not write an undo file.
8265		Useful in combination with |:wundo| and |:rundo|.
8266		When compiled without the +persistent_undo option this always
8267		returns an empty string.
8268
8269undotree()						*undotree()*
8270		Return the current state of the undo tree in a dictionary with
8271		the following items:
8272		  "seq_last"	The highest undo sequence number used.
8273		  "seq_cur"	The sequence number of the current position in
8274				the undo tree.  This differs from "seq_last"
8275				when some changes were undone.
8276		  "time_cur"	Time last used for |:earlier| and related
8277				commands.  Use |strftime()| to convert to
8278				something readable.
8279		  "save_last"	Number of the last file write.  Zero when no
8280				write yet.
8281		  "save_cur"	Number of the current position in the undo
8282				tree.
8283		  "synced"	Non-zero when the last undo block was synced.
8284				This happens when waiting from input from the
8285				user.  See |undo-blocks|.
8286		  "entries"	A list of dictionaries with information about
8287				undo blocks.
8288
8289		The first item in the "entries" list is the oldest undo item.
8290		Each List item is a Dictionary with these items:
8291		  "seq"		Undo sequence number.  Same as what appears in
8292				|:undolist|.
8293		  "time"	Timestamp when the change happened.  Use
8294				|strftime()| to convert to something readable.
8295		  "newhead"	Only appears in the item that is the last one
8296				that was added.  This marks the last change
8297				and where further changes will be added.
8298		  "curhead"	Only appears in the item that is the last one
8299				that was undone.  This marks the current
8300				position in the undo tree, the block that will
8301				be used by a redo command.  When nothing was
8302				undone after the last change this item will
8303				not appear anywhere.
8304		  "save"	Only appears on the last block before a file
8305				write.  The number is the write count.  The
8306				first write has number 1, the last one the
8307				"save_last" mentioned above.
8308		  "alt"		Alternate entry.  This is again a List of undo
8309				blocks.  Each item may again have an "alt"
8310				item.
8311
8312uniq({list} [, {func} [, {dict}]])			*uniq()* *E882*
8313		Remove second and succeeding copies of repeated adjacent
8314		{list} items in-place.  Returns {list}.  If you want a list
8315		to remain unmodified make a copy first: >
8316			:let newlist = uniq(copy(mylist))
8317<		The default compare function uses the string representation of
8318		each item.  For the use of {func} and {dict} see |sort()|.
8319
8320values({dict})						*values()*
8321		Return a |List| with all the values of {dict}.  The |List| is
8322		in arbitrary order.
8323
8324
8325virtcol({expr})						*virtcol()*
8326		The result is a Number, which is the screen column of the file
8327		position given with {expr}.  That is, the last screen position
8328		occupied by the character at that position, when the screen
8329		would be of unlimited width.  When there is a <Tab> at the
8330		position, the returned Number will be the column at the end of
8331		the <Tab>.  For example, for a <Tab> in column 1, with 'ts'
8332		set to 8, it returns 8. |conceal| is ignored.
8333		For the byte position use |col()|.
8334		For the use of {expr} see |col()|.
8335		When 'virtualedit' is used {expr} can be [lnum, col, off], where
8336		"off" is the offset in screen columns from the start of the
8337		character.  E.g., a position within a <Tab> or after the last
8338		character.  When "off" is omitted zero is used.
8339		When Virtual editing is active in the current mode, a position
8340		beyond the end of the line can be returned. |'virtualedit'|
8341		The accepted positions are:
8342		    .	    the cursor position
8343		    $	    the end of the cursor line (the result is the
8344			    number of displayed characters in the cursor line
8345			    plus one)
8346		    'x	    position of mark x (if the mark is not set, 0 is
8347			    returned)
8348		    v       In Visual mode: the start of the Visual area (the
8349			    cursor is the end).  When not in Visual mode
8350			    returns the cursor position.  Differs from |'<| in
8351			    that it's updated right away.
8352		Note that only marks in the current file can be used.
8353		Examples: >
8354  virtcol(".")	   with text "foo^Lbar", with cursor on the "^L", returns 5
8355  virtcol("$")	   with text "foo^Lbar", returns 9
8356  virtcol("'t")    with text "	  there", with 't at 'h', returns 6
8357<		The first column is 1.  0 is returned for an error.
8358		A more advanced example that echoes the maximum length of
8359		all lines: >
8360		    echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
8361
8362
8363visualmode([expr])						*visualmode()*
8364		The result is a String, which describes the last Visual mode
8365		used in the current buffer.  Initially it returns an empty
8366		string, but once Visual mode has been used, it returns "v",
8367		"V", or "<CTRL-V>" (a single CTRL-V character) for
8368		character-wise, line-wise, or block-wise Visual mode
8369		respectively.
8370		Example: >
8371			:exe "normal " . visualmode()
8372<		This enters the same Visual mode as before.  It is also useful
8373		in scripts if you wish to act differently depending on the
8374		Visual mode that was used.
8375		If Visual mode is active, use |mode()| to get the Visual mode
8376		(e.g., in a |:vmap|).
8377		If [expr] is supplied and it evaluates to a non-zero Number or
8378		a non-empty String, then the Visual mode will be cleared and
8379		the old value is returned.  See |non-zero-arg|.
8380
8381wildmenumode()					*wildmenumode()*
8382		Returns |TRUE| when the wildmenu is active and |FALSE|
8383		otherwise.  See 'wildmenu' and 'wildmode'.
8384		This can be used in mappings to handle the 'wildcharm' option
8385		gracefully. (Makes only sense with |mapmode-c| mappings).
8386
8387		For example to make <c-j> work like <down> in wildmode, use: >
8388    :cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"
8389<
8390		(Note, this needs the 'wildcharm' option set appropriately).
8391
8392
8393win_findbuf({bufnr})					*win_findbuf()*
8394		Returns a list with |window-ID|s for windows that contain
8395		buffer {bufnr}.  When there is none the list is empty.
8396
8397win_getid([{win} [, {tab}]])				*win_getid()*
8398		Get the |window-ID| for the specified window.
8399		When {win} is missing use the current window.
8400		With {win} this is the window number.  The top window has
8401		number 1.
8402		Without {tab} use the current tab, otherwise the tab with
8403		number {tab}.  The first tab has number one.
8404		Return zero if the window cannot be found.
8405
8406win_gotoid({expr})					*win_gotoid()*
8407		Go to window with ID {expr}.  This may also change the current
8408		tabpage.
8409		Return 1 if successful, 0 if the window cannot be found.
8410
8411win_id2tabwin({expr})					*win_id2tabwin()*
8412		Return a list with the tab number and window number of window
8413		with ID {expr}: [tabnr, winnr].
8414		Return [0, 0] if the window cannot be found.
8415
8416win_id2win({expr})					*win_id2win()*
8417		Return the window number of window with ID {expr}.
8418		Return 0 if the window cannot be found in the current tabpage.
8419
8420							*winbufnr()*
8421winbufnr({nr})	The result is a Number, which is the number of the buffer
8422		associated with window {nr}.  {nr} can be the window number or
8423		the |window-ID|.
8424		When {nr} is zero, the number of the buffer in the current
8425		window is returned.
8426		When window {nr} doesn't exist, -1 is returned.
8427		Example: >
8428  :echo "The file in the current window is " . bufname(winbufnr(0))
8429<
8430							*wincol()*
8431wincol()	The result is a Number, which is the virtual column of the
8432		cursor in the window.  This is counting screen cells from the
8433		left side of the window.  The leftmost column is one.
8434
8435winheight({nr})						*winheight()*
8436		The result is a Number, which is the height of window {nr}.
8437		{nr} can be the window number or the |window-ID|.
8438		When {nr} is zero, the height of the current window is
8439		returned.  When window {nr} doesn't exist, -1 is returned.
8440		An existing window always has a height of zero or more.
8441		Examples: >
8442  :echo "The current window has " . winheight(0) . " lines."
8443<
8444							*winline()*
8445winline()	The result is a Number, which is the screen line of the cursor
8446		in the window.  This is counting screen lines from the top of
8447		the window.  The first line is one.
8448		If the cursor was moved the view on the file will be updated
8449		first, this may cause a scroll.
8450
8451							*winnr()*
8452winnr([{arg}])	The result is a Number, which is the number of the current
8453		window.  The top window has number 1.
8454		When the optional argument is "$", the number of the
8455		last window is returned (the window count). >
8456			let window_count = winnr('$')
8457<		When the optional argument is "#", the number of the last
8458		accessed window is returned (where |CTRL-W_p| goes to).
8459		If there is no previous window or it is in another tab page 0
8460		is returned.
8461		The number can be used with |CTRL-W_w| and ":wincmd w"
8462		|:wincmd|.
8463		Also see |tabpagewinnr()| and |win_getid()|.
8464
8465							*winrestcmd()*
8466winrestcmd()	Returns a sequence of |:resize| commands that should restore
8467		the current window sizes.  Only works properly when no windows
8468		are opened or closed and the current window and tab page is
8469		unchanged.
8470		Example: >
8471			:let cmd = winrestcmd()
8472			:call MessWithWindowSizes()
8473			:exe cmd
8474<
8475							*winrestview()*
8476winrestview({dict})
8477		Uses the |Dictionary| returned by |winsaveview()| to restore
8478		the view of the current window.
8479		Note: The {dict} does not have to contain all values, that are
8480		returned by |winsaveview()|. If values are missing, those
8481		settings won't be restored. So you can use: >
8482		    :call winrestview({'curswant': 4})
8483<
8484		This will only set the curswant value (the column the cursor
8485		wants to move on vertical movements) of the cursor to column 5
8486		(yes, that is 5), while all other settings will remain the
8487		same. This is useful, if you set the cursor position manually.
8488
8489		If you have changed the values the result is unpredictable.
8490		If the window size changed the result won't be the same.
8491
8492							*winsaveview()*
8493winsaveview()	Returns a |Dictionary| that contains information to restore
8494		the view of the current window.  Use |winrestview()| to
8495		restore the view.
8496		This is useful if you have a mapping that jumps around in the
8497		buffer and you want to go back to the original view.
8498		This does not save fold information.  Use the 'foldenable'
8499		option to temporarily switch off folding, so that folds are
8500		not opened when moving around. This may have side effects.
8501		The return value includes:
8502			lnum		cursor line number
8503			col		cursor column (Note: the first column
8504					zero, as opposed to what getpos()
8505					returns)
8506			coladd		cursor column offset for 'virtualedit'
8507			curswant	column for vertical movement
8508			topline		first line in the window
8509			topfill		filler lines, only in diff mode
8510			leftcol		first column displayed
8511			skipcol		columns skipped
8512		Note that no option values are saved.
8513
8514
8515winwidth({nr})						*winwidth()*
8516		The result is a Number, which is the width of window {nr}.
8517		{nr} can be the window number or the |window-ID|.
8518		When {nr} is zero, the width of the current window is
8519		returned.  When window {nr} doesn't exist, -1 is returned.
8520		An existing window always has a width of zero or more.
8521		Examples: >
8522  :echo "The current window has " . winwidth(0) . " columns."
8523  :if winwidth(0) <= 50
8524  :  exe "normal 50\<C-W>|"
8525  :endif
8526<		For getting the terminal or screen size, see the 'columns'
8527		option.
8528
8529
8530wordcount()						*wordcount()*
8531		The result is a dictionary of byte/chars/word statistics for
8532		the current buffer.  This is the same info as provided by
8533		|g_CTRL-G|
8534		The return value includes:
8535			bytes		Number of bytes in the buffer
8536			chars		Number of chars in the buffer
8537			words		Number of words in the buffer
8538			cursor_bytes    Number of bytes before cursor position
8539					(not in Visual mode)
8540			cursor_chars    Number of chars before cursor position
8541					(not in Visual mode)
8542			cursor_words    Number of words before cursor position
8543					(not in Visual mode)
8544			visual_bytes    Number of bytes visually selected
8545					(only in Visual mode)
8546			visual_chars    Number of chars visually selected
8547					(only in Visual mode)
8548			visual_words    Number of chars visually selected
8549					(only in Visual mode)
8550
8551
8552							*writefile()*
8553writefile({list}, {fname} [, {flags}])
8554		Write |List| {list} to file {fname}.  Each list item is
8555		separated with a NL.  Each list item must be a String or
8556		Number.
8557		When {flags} contains "b" then binary mode is used: There will
8558		not be a NL after the last list item.  An empty item at the
8559		end does cause the last line in the file to end in a NL.
8560
8561		When {flags} contains "a" then append mode is used, lines are
8562		appended to the file: >
8563			:call writefile(["foo"], "event.log", "a")
8564			:call writefile(["bar"], "event.log", "a")
8565>
8566<		All NL characters are replaced with a NUL character.
8567		Inserting CR characters needs to be done before passing {list}
8568		to writefile().
8569		An existing file is overwritten, if possible.
8570		When the write fails -1 is returned, otherwise 0.  There is an
8571		error message if the file can't be created or when writing
8572		fails.
8573		Also see |readfile()|.
8574		To copy a file byte for byte: >
8575			:let fl = readfile("foo", "b")
8576			:call writefile(fl, "foocopy", "b")
8577
8578
8579xor({expr}, {expr})					*xor()*
8580		Bitwise XOR on the two arguments.  The arguments are converted
8581		to a number.  A List, Dict or Float argument causes an error.
8582		Example: >
8583			:let bits = xor(bits, 0x80)
8584<
8585
8586
8587							*feature-list*
8588There are four types of features:
85891.  Features that are only supported when they have been enabled when Vim
8590    was compiled |+feature-list|.  Example: >
8591	:if has("cindent")
85922.  Features that are only supported when certain conditions have been met.
8593    Example: >
8594	:if has("gui_running")
8595<							*has-patch*
85963.  Included patches.  The "patch123" feature means that patch 123 has been
8597    included.  Note that this form does not check the version of Vim, you need
8598    to inspect |v:version| for that.
8599    Example (checking version 6.2.148 or later): >
8600	:if v:version > 602 || v:version == 602 && has("patch148")
8601<    Note that it's possible for patch 147 to be omitted even though 148 is
8602    included.
8603
86044.  Beyond a certain version or at a certain version and including a specific
8605    patch.  The "patch-7.4.237" feature means that the Vim version is 7.5 or
8606    later, or it is version 7.4 and patch 237 was included.
8607    Note that this only works for patch 7.4.237 and later, before that you
8608    need to use the example above that checks v:version.  Example: >
8609	:if has("patch-7.4.248")
8610<    Note that it's possible for patch 147 to be omitted even though 148 is
8611    included.
8612
8613Hint: To find out if Vim supports backslashes in a file name (MS-Windows),
8614use: `if exists('+shellslash')`
8615
8616
8617acl			Compiled with |ACL| support.
8618all_builtin_terms	Compiled with all builtin terminals enabled.
8619amiga			Amiga version of Vim.
8620arabic			Compiled with Arabic support |Arabic|.
8621arp			Compiled with ARP support (Amiga).
8622autocmd			Compiled with autocommand support. |autocommand|
8623balloon_eval		Compiled with |balloon-eval| support.
8624balloon_multiline	GUI supports multiline balloons.
8625beos			BeOS version of Vim.
8626browse			Compiled with |:browse| support, and browse() will
8627			work.
8628browsefilter		Compiled with support for |browsefilter|.
8629builtin_terms		Compiled with some builtin terminals.
8630byte_offset		Compiled with support for 'o' in 'statusline'
8631cindent			Compiled with 'cindent' support.
8632clientserver		Compiled with remote invocation support |clientserver|.
8633clipboard		Compiled with 'clipboard' support.
8634cmdline_compl		Compiled with |cmdline-completion| support.
8635cmdline_hist		Compiled with |cmdline-history| support.
8636cmdline_info		Compiled with 'showcmd' and 'ruler' support.
8637comments		Compiled with |'comments'| support.
8638compatible		Compiled to be very Vi compatible.
8639cryptv			Compiled with encryption support |encryption|.
8640cscope			Compiled with |cscope| support.
8641debug			Compiled with "DEBUG" defined.
8642dialog_con		Compiled with console dialog support.
8643dialog_gui		Compiled with GUI dialog support.
8644diff			Compiled with |vimdiff| and 'diff' support.
8645digraphs		Compiled with support for digraphs.
8646directx			Compiled with support for DirectX and 'renderoptions'.
8647dnd			Compiled with support for the "~ register |quote_~|.
8648ebcdic			Compiled on a machine with ebcdic character set.
8649emacs_tags		Compiled with support for Emacs tags.
8650eval			Compiled with expression evaluation support.  Always
8651			true, of course!
8652ex_extra		|+ex_extra|, always true now
8653extra_search		Compiled with support for |'incsearch'| and
8654			|'hlsearch'|
8655farsi			Compiled with Farsi support |farsi|.
8656file_in_path		Compiled with support for |gf| and |<cfile>|
8657filterpipe		When 'shelltemp' is off pipes are used for shell
8658			read/write/filter commands
8659find_in_path		Compiled with support for include file searches
8660			|+find_in_path|.
8661float			Compiled with support for |Float|.
8662fname_case		Case in file names matters (for Amiga, MS-DOS, and
8663			Windows this is not present).
8664folding			Compiled with |folding| support.
8665footer			Compiled with GUI footer support. |gui-footer|
8666fork			Compiled to use fork()/exec() instead of system().
8667gettext			Compiled with message translation |multi-lang|
8668gui			Compiled with GUI enabled.
8669gui_athena		Compiled with Athena GUI.
8670gui_gnome		Compiled with Gnome support (gui_gtk is also defined).
8671gui_gtk			Compiled with GTK+ GUI (any version).
8672gui_gtk2		Compiled with GTK+ 2 GUI (gui_gtk is also defined).
8673gui_gtk3		Compiled with GTK+ 3 GUI (gui_gtk is also defined).
8674gui_mac			Compiled with Macintosh GUI.
8675gui_motif		Compiled with Motif GUI.
8676gui_photon		Compiled with Photon GUI.
8677gui_running		Vim is running in the GUI, or it will start soon.
8678gui_win32		Compiled with MS Windows Win32 GUI.
8679gui_win32s		idem, and Win32s system being used (Windows 3.1)
8680hangul_input		Compiled with Hangul input support. |hangul|
8681iconv			Can use iconv() for conversion.
8682insert_expand		Compiled with support for CTRL-X expansion commands in
8683			Insert mode.
8684jumplist		Compiled with |jumplist| support.
8685keymap			Compiled with 'keymap' support.
8686lambda			Compiled with |lambda| support.
8687langmap			Compiled with 'langmap' support.
8688libcall			Compiled with |libcall()| support.
8689linebreak		Compiled with 'linebreak', 'breakat', 'showbreak' and
8690			'breakindent' support.
8691lispindent		Compiled with support for lisp indenting.
8692listcmds		Compiled with commands for the buffer list |:files|
8693			and the argument list |arglist|.
8694localmap		Compiled with local mappings and abbr. |:map-local|
8695lua			Compiled with Lua interface |Lua|.
8696mac			Any Macintosh version of Vim, but not all OS X.
8697macunix			Compiled for OS X, with |mac-darwin-feature|
8698osx			Compiled for OS X, with or w/o |mac-darwin-feature|
8699menu			Compiled with support for |:menu|.
8700mksession		Compiled with support for |:mksession|.
8701modify_fname		Compiled with file name modifiers. |filename-modifiers|
8702mouse			Compiled with support mouse.
8703mouse_dec		Compiled with support for Dec terminal mouse.
8704mouse_gpm		Compiled with support for gpm (Linux console mouse)
8705mouse_netterm		Compiled with support for netterm mouse.
8706mouse_pterm		Compiled with support for qnx pterm mouse.
8707mouse_sysmouse		Compiled with support for sysmouse (*BSD console mouse)
8708mouse_sgr		Compiled with support for sgr mouse.
8709mouse_urxvt		Compiled with support for urxvt mouse.
8710mouse_xterm		Compiled with support for xterm mouse.
8711mouseshape		Compiled with support for 'mouseshape'.
8712multi_byte		Compiled with support for 'encoding'
8713multi_byte_encoding	'encoding' is set to a multi-byte encoding.
8714multi_byte_ime		Compiled with support for IME input method.
8715multi_lang		Compiled with support for multiple languages.
8716mzscheme		Compiled with MzScheme interface |mzscheme|.
8717netbeans_enabled	Compiled with support for |netbeans| and connected.
8718netbeans_intg		Compiled with support for |netbeans|.
8719num64			Compiled with 64-bit |Number| support.
8720ole			Compiled with OLE automation support for Win32.
8721packages		Compiled with |packages| support.
8722path_extra		Compiled with up/downwards search in 'path' and 'tags'
8723perl			Compiled with Perl interface.
8724persistent_undo		Compiled with support for persistent undo history.
8725postscript		Compiled with PostScript file printing.
8726printer			Compiled with |:hardcopy| support.
8727profile			Compiled with |:profile| support.
8728python			Compiled with Python 2.x interface. |has-python|
8729python3			Compiled with Python 3.x interface. |has-python|
8730pythonx			Compiled with |python_x| interface. |has-pythonx|
8731qnx			QNX version of Vim.
8732quickfix		Compiled with |quickfix| support.
8733reltime			Compiled with |reltime()| support.
8734rightleft		Compiled with 'rightleft' support.
8735ruby			Compiled with Ruby interface |ruby|.
8736scrollbind		Compiled with 'scrollbind' support.
8737showcmd			Compiled with 'showcmd' support.
8738signs			Compiled with |:sign| support.
8739smartindent		Compiled with 'smartindent' support.
8740spell			Compiled with spell checking support |spell|.
8741startuptime		Compiled with |--startuptime| support.
8742statusline		Compiled with support for 'statusline', 'rulerformat'
8743			and special formats of 'titlestring' and 'iconstring'.
8744sun_workshop		Compiled with support for Sun |workshop|.
8745syntax			Compiled with syntax highlighting support |syntax|.
8746syntax_items		There are active syntax highlighting items for the
8747			current buffer.
8748system			Compiled to use system() instead of fork()/exec().
8749tag_binary		Compiled with binary searching in tags files
8750			|tag-binary-search|.
8751tag_old_static		Compiled with support for old static tags
8752			|tag-old-static|.
8753tag_any_white		Compiled with support for any white characters in tags
8754			files |tag-any-white|.
8755tcl			Compiled with Tcl interface.
8756termguicolors		Compiled with true color in terminal support.
8757terminal		Compiled with |terminal| support.
8758terminfo		Compiled with terminfo instead of termcap.
8759termresponse		Compiled with support for |t_RV| and |v:termresponse|.
8760textobjects		Compiled with support for |text-objects|.
8761tgetent			Compiled with tgetent support, able to use a termcap
8762			or terminfo file.
8763timers			Compiled with |timer_start()| support.
8764title			Compiled with window title support |'title'|.
8765toolbar			Compiled with support for |gui-toolbar|.
8766ttyin			input is a terminal (tty)
8767ttyout			output is a terminal (tty)
8768unix			Unix version of Vim.
8769unnamedplus		Compiled with support for "unnamedplus" in 'clipboard'
8770user_commands		User-defined commands.
8771vertsplit		Compiled with vertically split windows |:vsplit|.
8772vim_starting		True while initial source'ing takes place. |startup|
8773			*vim_starting*
8774viminfo			Compiled with viminfo support.
8775virtualedit		Compiled with 'virtualedit' option.
8776visual			Compiled with Visual mode.
8777visualextra		Compiled with extra Visual mode commands.
8778			|blockwise-operators|.
8779vms			VMS version of Vim.
8780vreplace		Compiled with |gR| and |gr| commands.
8781wildignore		Compiled with 'wildignore' option.
8782wildmenu		Compiled with 'wildmenu' option.
8783win32			Win32 version of Vim (MS-Windows 95 and later, 32 or
8784			64 bits)
8785win32unix		Win32 version of Vim, using Unix files (Cygwin)
8786win64			Win64 version of Vim (MS-Windows 64 bit).
8787win95			Win32 version for MS-Windows 95/98/ME.
8788winaltkeys		Compiled with 'winaltkeys' option.
8789windows			Compiled with support for more than one window.
8790writebackup		Compiled with 'writebackup' default on.
8791xfontset		Compiled with X fontset support |xfontset|.
8792xim			Compiled with X input method support |xim|.
8793xpm			Compiled with pixmap support.
8794xpm_w32			Compiled with pixmap support for Win32. (Only for
8795			backward compatibility. Use "xpm" instead.)
8796xsmp			Compiled with X session management support.
8797xsmp_interact		Compiled with interactive X session management support.
8798xterm_clipboard		Compiled with support for xterm clipboard.
8799xterm_save		Compiled with support for saving and restoring the
8800			xterm screen.
8801x11			Compiled with X11 support.
8802
8803							*string-match*
8804Matching a pattern in a String
8805
8806A regexp pattern as explained at |pattern| is normally used to find a match in
8807the buffer lines.  When a pattern is used to find a match in a String, almost
8808everything works in the same way.  The difference is that a String is handled
8809like it is one line.  When it contains a "\n" character, this is not seen as a
8810line break for the pattern.  It can be matched with a "\n" in the pattern, or
8811with ".".  Example: >
8812	:let a = "aaaa\nxxxx"
8813	:echo matchstr(a, "..\n..")
8814	aa
8815	xx
8816	:echo matchstr(a, "a.x")
8817	a
8818	x
8819
8820Don't forget that "^" will only match at the first character of the String and
8821"$" at the last character of the string.  They don't match after or before a
8822"\n".
8823
8824==============================================================================
88255. Defining functions					*user-functions*
8826
8827New functions can be defined.  These can be called just like builtin
8828functions.  The function executes a sequence of Ex commands.  Normal mode
8829commands can be executed with the |:normal| command.
8830
8831The function name must start with an uppercase letter, to avoid confusion with
8832builtin functions.  To prevent from using the same name in different scripts
8833avoid obvious, short names.  A good habit is to start the function name with
8834the name of the script, e.g., "HTMLcolor()".
8835
8836It's also possible to use curly braces, see |curly-braces-names|.  And the
8837|autoload| facility is useful to define a function only when it's called.
8838
8839							*local-function*
8840A function local to a script must start with "s:".  A local script function
8841can only be called from within the script and from functions, user commands
8842and autocommands defined in the script.  It is also possible to call the
8843function from a mapping defined in the script, but then |<SID>| must be used
8844instead of "s:" when the mapping is expanded outside of the script.
8845There are only script-local functions, no buffer-local or window-local
8846functions.
8847
8848					*:fu* *:function* *E128* *E129* *E123*
8849:fu[nction]		List all functions and their arguments.
8850
8851:fu[nction] {name}	List function {name}.
8852			{name} can also be a |Dictionary| entry that is a
8853			|Funcref|: >
8854				:function dict.init
8855
8856:fu[nction] /{pattern}	List functions with a name matching {pattern}.
8857			Example that lists all functions ending with "File": >
8858				:function /File$
8859<
8860							*:function-verbose*
8861When 'verbose' is non-zero, listing a function will also display where it was
8862last defined. Example: >
8863
8864    :verbose function SetFileTypeSH
8865	function SetFileTypeSH(name)
8866	    Last set from /usr/share/vim/vim-7.0/filetype.vim
8867<
8868See |:verbose-cmd| for more information.
8869
8870						*E124* *E125* *E853* *E884*
8871:fu[nction][!] {name}([arguments]) [range] [abort] [dict] [closure]
8872			Define a new function by the name {name}.  The name
8873			must be made of alphanumeric characters and '_', and
8874			must start with a capital or "s:" (see above).  Note
8875			that using "b:" or "g:" is not allowed. (since patch
8876			7.4.260 E884 is given if the function name has a colon
8877			in the name, e.g. for "foo:bar()".  Before that patch
8878			no error was given).
8879
8880			{name} can also be a |Dictionary| entry that is a
8881			|Funcref|: >
8882				:function dict.init(arg)
8883<			"dict" must be an existing dictionary.  The entry
8884			"init" is added if it didn't exist yet.  Otherwise [!]
8885			is required to overwrite an existing function.  The
8886			result is a |Funcref| to a numbered function.  The
8887			function can only be used with a |Funcref| and will be
8888			deleted if there are no more references to it.
8889								*E127* *E122*
8890			When a function by this name already exists and [!] is
8891			not used an error message is given.  When [!] is used,
8892			an existing function is silently replaced.  Unless it
8893			is currently being executed, that is an error.
8894			NOTE: Use ! wisely.  If used without care it can cause
8895			an existing function to be replaced unexpectedly,
8896			which is hard to debug.
8897
8898			For the {arguments} see |function-argument|.
8899
8900					*:func-range* *a:firstline* *a:lastline*
8901			When the [range] argument is added, the function is
8902			expected to take care of a range itself.  The range is
8903			passed as "a:firstline" and "a:lastline".  If [range]
8904			is excluded, ":{range}call" will call the function for
8905			each line in the range, with the cursor on the start
8906			of each line.  See |function-range-example|.
8907			The cursor is still moved to the first line of the
8908			range, as is the case with all Ex commands.
8909								*:func-abort*
8910			When the [abort] argument is added, the function will
8911			abort as soon as an error is detected.
8912								*:func-dict*
8913			When the [dict] argument is added, the function must
8914			be invoked through an entry in a |Dictionary|.  The
8915			local variable "self" will then be set to the
8916			dictionary.  See |Dictionary-function|.
8917						*:func-closure* *E932*
8918			When the [closure] argument is added, the function
8919			can access variables and arguments from the outer
8920			scope.  This is usually called a closure.  In this
8921			example Bar() uses "x" from the scope of Foo().  It
8922			remains referenced even after Foo() returns: >
8923				:function! Foo()
8924				:  let x = 0
8925				:  function! Bar() closure
8926				:    let x += 1
8927				:    return x
8928				:  endfunction
8929				:  return funcref('Bar')
8930				:endfunction
8931
8932				:let F = Foo()
8933				:echo F()
8934<				1 >
8935				:echo F()
8936<				2 >
8937				:echo F()
8938<				3
8939
8940						*function-search-undo*
8941			The last used search pattern and the redo command "."
8942			will not be changed by the function.  This also
8943			implies that the effect of |:nohlsearch| is undone
8944			when the function returns.
8945
8946				*:endf* *:endfunction* *E126* *E193* *W22*
8947:endf[unction] [argument]
8948			The end of a function definition.  Best is to put it
8949			on a line by its own, without [argument].
8950
8951			[argument] can be:
8952				| command	command to execute next
8953				\n command	command to execute next
8954				" comment	always ignored
8955				anything else	ignored, warning given when
8956						'verbose' is non-zero
8957			The support for a following command was added in Vim
8958			8.0.0654, before that any argument was silently
8959			ignored.
8960
8961			To be able to define a function inside an `:execute`
8962			command, use line breaks instead of |:bar|: >
8963				:exe "func Foo()\necho 'foo'\nendfunc"
8964<
8965				*:delf* *:delfunction* *E130* *E131* *E933*
8966:delf[unction][!] {name}
8967			Delete function {name}.
8968			{name} can also be a |Dictionary| entry that is a
8969			|Funcref|: >
8970				:delfunc dict.init
8971<			This will remove the "init" entry from "dict".  The
8972			function is deleted if there are no more references to
8973			it.
8974			With the ! there is no error if the function does not
8975			exist.
8976							*:retu* *:return* *E133*
8977:retu[rn] [expr]	Return from a function.  When "[expr]" is given, it is
8978			evaluated and returned as the result of the function.
8979			If "[expr]" is not given, the number 0 is returned.
8980			When a function ends without an explicit ":return",
8981			the number 0 is returned.
8982			Note that there is no check for unreachable lines,
8983			thus there is no warning if commands follow ":return".
8984
8985			If the ":return" is used after a |:try| but before the
8986			matching |:finally| (if present), the commands
8987			following the ":finally" up to the matching |:endtry|
8988			are executed first.  This process applies to all
8989			nested ":try"s inside the function.  The function
8990			returns at the outermost ":endtry".
8991
8992						*function-argument* *a:var*
8993An argument can be defined by giving its name.  In the function this can then
8994be used as "a:name" ("a:" for argument).
8995					*a:0* *a:1* *a:000* *E740* *...*
8996Up to 20 arguments can be given, separated by commas.  After the named
8997arguments an argument "..." can be specified, which means that more arguments
8998may optionally be following.  In the function the extra arguments can be used
8999as "a:1", "a:2", etc.  "a:0" is set to the number of extra arguments (which
9000can be 0).  "a:000" is set to a |List| that contains these arguments.  Note
9001that "a:1" is the same as "a:000[0]".
9002								*E742*
9003The a: scope and the variables in it cannot be changed, they are fixed.
9004However, if a composite type is used, such as |List| or |Dictionary| , you can
9005change their contents.  Thus you can pass a |List| to a function and have the
9006function add an item to it.  If you want to make sure the function cannot
9007change a |List| or |Dictionary| use |:lockvar|.
9008
9009When not using "...", the number of arguments in a function call must be equal
9010to the number of named arguments.  When using "...", the number of arguments
9011may be larger.
9012
9013It is also possible to define a function without any arguments.  You must
9014still supply the () then.  The body of the function follows in the next lines,
9015until the matching |:endfunction|.  It is allowed to define another function
9016inside a function body.
9017
9018							*local-variables*
9019Inside a function local variables can be used.  These will disappear when the
9020function returns.  Global variables need to be accessed with "g:".
9021
9022Example: >
9023  :function Table(title, ...)
9024  :  echohl Title
9025  :  echo a:title
9026  :  echohl None
9027  :  echo a:0 . " items:"
9028  :  for s in a:000
9029  :    echon ' ' . s
9030  :  endfor
9031  :endfunction
9032
9033This function can then be called with: >
9034  call Table("Table", "line1", "line2")
9035  call Table("Empty Table")
9036
9037To return more than one value, return a |List|: >
9038  :function Compute(n1, n2)
9039  :  if a:n2 == 0
9040  :    return ["fail", 0]
9041  :  endif
9042  :  return ["ok", a:n1 / a:n2]
9043  :endfunction
9044
9045This function can then be called with: >
9046  :let [success, div] = Compute(102, 6)
9047  :if success == "ok"
9048  :  echo div
9049  :endif
9050<
9051						*:cal* *:call* *E107* *E117*
9052:[range]cal[l] {name}([arguments])
9053		Call a function.  The name of the function and its arguments
9054		are as specified with |:function|.  Up to 20 arguments can be
9055		used.  The returned value is discarded.
9056		Without a range and for functions that accept a range, the
9057		function is called once.  When a range is given the cursor is
9058		positioned at the start of the first line before executing the
9059		function.
9060		When a range is given and the function doesn't handle it
9061		itself, the function is executed for each line in the range,
9062		with the cursor in the first column of that line.  The cursor
9063		is left at the last line (possibly moved by the last function
9064		call).  The arguments are re-evaluated for each line.  Thus
9065		this works:
9066						*function-range-example*  >
9067	:function Mynumber(arg)
9068	:  echo line(".") . " " . a:arg
9069	:endfunction
9070	:1,5call Mynumber(getline("."))
9071<
9072		The "a:firstline" and "a:lastline" are defined anyway, they
9073		can be used to do something different at the start or end of
9074		the range.
9075
9076		Example of a function that handles the range itself: >
9077
9078	:function Cont() range
9079	:  execute (a:firstline + 1) . "," . a:lastline . 's/^/\t\\ '
9080	:endfunction
9081	:4,8call Cont()
9082<
9083		This function inserts the continuation character "\" in front
9084		of all the lines in the range, except the first one.
9085
9086		When the function returns a composite value it can be further
9087		dereferenced, but the range will not be used then.  Example: >
9088	:4,8call GetDict().method()
9089<		Here GetDict() gets the range but method() does not.
9090
9091								*E132*
9092The recursiveness of user functions is restricted with the |'maxfuncdepth'|
9093option.
9094
9095
9096AUTOMATICALLY LOADING FUNCTIONS ~
9097							*autoload-functions*
9098When using many or large functions, it's possible to automatically define them
9099only when they are used.  There are two methods: with an autocommand and with
9100the "autoload" directory in 'runtimepath'.
9101
9102
9103Using an autocommand ~
9104
9105This is introduced in the user manual, section |41.14|.
9106
9107The autocommand is useful if you have a plugin that is a long Vim script file.
9108You can define the autocommand and quickly quit the script with |:finish|.
9109That makes Vim startup faster.  The autocommand should then load the same file
9110again, setting a variable to skip the |:finish| command.
9111
9112Use the FuncUndefined autocommand event with a pattern that matches the
9113function(s) to be defined.  Example: >
9114
9115	:au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim
9116
9117The file "~/vim/bufnetfuncs.vim" should then define functions that start with
9118"BufNet".  Also see |FuncUndefined|.
9119
9120
9121Using an autoload script ~
9122							*autoload* *E746*
9123This is introduced in the user manual, section |41.15|.
9124
9125Using a script in the "autoload" directory is simpler, but requires using
9126exactly the right file name.  A function that can be autoloaded has a name
9127like this: >
9128
9129	:call filename#funcname()
9130
9131When such a function is called, and it is not defined yet, Vim will search the
9132"autoload" directories in 'runtimepath' for a script file called
9133"filename.vim".  For example "~/.vim/autoload/filename.vim".  That file should
9134then define the function like this: >
9135
9136	function filename#funcname()
9137	   echo "Done!"
9138	endfunction
9139
9140The file name and the name used before the # in the function must match
9141exactly, and the defined function must have the name exactly as it will be
9142called.
9143
9144It is possible to use subdirectories.  Every # in the function name works like
9145a path separator.  Thus when calling a function: >
9146
9147	:call foo#bar#func()
9148
9149Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'.
9150
9151This also works when reading a variable that has not been set yet: >
9152
9153	:let l = foo#bar#lvar
9154
9155However, when the autoload script was already loaded it won't be loaded again
9156for an unknown variable.
9157
9158When assigning a value to such a variable nothing special happens.  This can
9159be used to pass settings to the autoload script before it's loaded: >
9160
9161	:let foo#bar#toggle = 1
9162	:call foo#bar#func()
9163
9164Note that when you make a mistake and call a function that is supposed to be
9165defined in an autoload script, but the script doesn't actually define the
9166function, the script will be sourced every time you try to call the function.
9167And you will get an error message every time.
9168
9169Also note that if you have two script files, and one calls a function in the
9170other and vice versa, before the used function is defined, it won't work.
9171Avoid using the autoload functionality at the toplevel.
9172
9173Hint: If you distribute a bunch of scripts you can pack them together with the
9174|vimball| utility.  Also read the user manual |distribute-script|.
9175
9176==============================================================================
91776. Curly braces names					*curly-braces-names*
9178
9179In most places where you can use a variable, you can use a "curly braces name"
9180variable.  This is a regular variable name with one or more expressions
9181wrapped in braces {} like this: >
9182	my_{adjective}_variable
9183
9184When Vim encounters this, it evaluates the expression inside the braces, puts
9185that in place of the expression, and re-interprets the whole as a variable
9186name.  So in the above example, if the variable "adjective" was set to
9187"noisy", then the reference would be to "my_noisy_variable", whereas if
9188"adjective" was set to "quiet", then it would be to "my_quiet_variable".
9189
9190One application for this is to create a set of variables governed by an option
9191value.  For example, the statement >
9192	echo my_{&background}_message
9193
9194would output the contents of "my_dark_message" or "my_light_message" depending
9195on the current value of 'background'.
9196
9197You can use multiple brace pairs: >
9198	echo my_{adverb}_{adjective}_message
9199..or even nest them: >
9200	echo my_{ad{end_of_word}}_message
9201where "end_of_word" is either "verb" or "jective".
9202
9203However, the expression inside the braces must evaluate to a valid single
9204variable name, e.g. this is invalid: >
9205	:let foo='a + b'
9206	:echo c{foo}d
9207.. since the result of expansion is "ca + bd", which is not a variable name.
9208
9209						*curly-braces-function-names*
9210You can call and define functions by an evaluated name in a similar way.
9211Example: >
9212	:let func_end='whizz'
9213	:call my_func_{func_end}(parameter)
9214
9215This would call the function "my_func_whizz(parameter)".
9216
9217This does NOT work: >
9218  :let i = 3
9219  :let @{i} = ''  " error
9220  :echo @{i}      " error
9221
9222==============================================================================
92237. Commands						*expression-commands*
9224
9225:let {var-name} = {expr1}				*:let* *E18*
9226			Set internal variable {var-name} to the result of the
9227			expression {expr1}.  The variable will get the type
9228			from the {expr}.  If {var-name} didn't exist yet, it
9229			is created.
9230
9231:let {var-name}[{idx}] = {expr1}			*E689*
9232			Set a list item to the result of the expression
9233			{expr1}.  {var-name} must refer to a list and {idx}
9234			must be a valid index in that list.  For nested list
9235			the index can be repeated.
9236			This cannot be used to add an item to a |List|.
9237			This cannot be used to set a byte in a String.  You
9238			can do that like this: >
9239				:let var = var[0:2] . 'X' . var[4:]
9240<
9241							*E711* *E719*
9242:let {var-name}[{idx1}:{idx2}] = {expr1}		*E708* *E709* *E710*
9243			Set a sequence of items in a |List| to the result of
9244			the expression {expr1}, which must be a list with the
9245			correct number of items.
9246			{idx1} can be omitted, zero is used instead.
9247			{idx2} can be omitted, meaning the end of the list.
9248			When the selected range of items is partly past the
9249			end of the list, items will be added.
9250
9251					*:let+=* *:let-=* *:let.=* *E734*
9252:let {var} += {expr1}	Like ":let {var} = {var} + {expr1}".
9253:let {var} -= {expr1}	Like ":let {var} = {var} - {expr1}".
9254:let {var} .= {expr1}	Like ":let {var} = {var} . {expr1}".
9255			These fail if {var} was not set yet and when the type
9256			of {var} and {expr1} don't fit the operator.
9257
9258
9259:let ${env-name} = {expr1}			*:let-environment* *:let-$*
9260			Set environment variable {env-name} to the result of
9261			the expression {expr1}.  The type is always String.
9262:let ${env-name} .= {expr1}
9263			Append {expr1} to the environment variable {env-name}.
9264			If the environment variable didn't exist yet this
9265			works like "=".
9266
9267:let @{reg-name} = {expr1}			*:let-register* *:let-@*
9268			Write the result of the expression {expr1} in register
9269			{reg-name}.  {reg-name} must be a single letter, and
9270			must be the name of a writable register (see
9271			|registers|).  "@@" can be used for the unnamed
9272			register, "@/" for the search pattern.
9273			If the result of {expr1} ends in a <CR> or <NL>, the
9274			register will be linewise, otherwise it will be set to
9275			characterwise.
9276			This can be used to clear the last search pattern: >
9277				:let @/ = ""
9278<			This is different from searching for an empty string,
9279			that would match everywhere.
9280
9281:let @{reg-name} .= {expr1}
9282			Append {expr1} to register {reg-name}.  If the
9283			register was empty it's like setting it to {expr1}.
9284
9285:let &{option-name} = {expr1}			*:let-option* *:let-&*
9286			Set option {option-name} to the result of the
9287			expression {expr1}.  A String or Number value is
9288			always converted to the type of the option.
9289			For an option local to a window or buffer the effect
9290			is just like using the |:set| command: both the local
9291			value and the global value are changed.
9292			Example: >
9293				:let &path = &path . ',/usr/local/include'
9294<			This also works for terminal codes in the form t_xx.
9295			But only for alphanumerical names.  Example: >
9296				:let &t_k1 = "\<Esc>[234;"
9297<			When the code does not exist yet it will be created as
9298			a terminal key code, there is no error.
9299
9300:let &{option-name} .= {expr1}
9301			For a string option: Append {expr1} to the value.
9302			Does not insert a comma like |:set+=|.
9303
9304:let &{option-name} += {expr1}
9305:let &{option-name} -= {expr1}
9306			For a number or boolean option: Add or subtract
9307			{expr1}.
9308
9309:let &l:{option-name} = {expr1}
9310:let &l:{option-name} .= {expr1}
9311:let &l:{option-name} += {expr1}
9312:let &l:{option-name} -= {expr1}
9313			Like above, but only set the local value of an option
9314			(if there is one).  Works like |:setlocal|.
9315
9316:let &g:{option-name} = {expr1}
9317:let &g:{option-name} .= {expr1}
9318:let &g:{option-name} += {expr1}
9319:let &g:{option-name} -= {expr1}
9320			Like above, but only set the global value of an option
9321			(if there is one).  Works like |:setglobal|.
9322
9323:let [{name1}, {name2}, ...] = {expr1}		*:let-unpack* *E687* *E688*
9324			{expr1} must evaluate to a |List|.  The first item in
9325			the list is assigned to {name1}, the second item to
9326			{name2}, etc.
9327			The number of names must match the number of items in
9328			the |List|.
9329			Each name can be one of the items of the ":let"
9330			command as mentioned above.
9331			Example: >
9332				:let [s, item] = GetItem(s)
9333<			Detail: {expr1} is evaluated first, then the
9334			assignments are done in sequence.  This matters if
9335			{name2} depends on {name1}.  Example: >
9336				:let x = [0, 1]
9337				:let i = 0
9338				:let [i, x[i]] = [1, 2]
9339				:echo x
9340<			The result is [0, 2].
9341
9342:let [{name1}, {name2}, ...] .= {expr1}
9343:let [{name1}, {name2}, ...] += {expr1}
9344:let [{name1}, {name2}, ...] -= {expr1}
9345			Like above, but append/add/subtract the value for each
9346			|List| item.
9347
9348:let [{name}, ..., ; {lastname}] = {expr1}
9349			Like |:let-unpack| above, but the |List| may have more
9350			items than there are names.  A list of the remaining
9351			items is assigned to {lastname}.  If there are no
9352			remaining items {lastname} is set to an empty list.
9353			Example: >
9354				:let [a, b; rest] = ["aval", "bval", 3, 4]
9355<
9356:let [{name}, ..., ; {lastname}] .= {expr1}
9357:let [{name}, ..., ; {lastname}] += {expr1}
9358:let [{name}, ..., ; {lastname}] -= {expr1}
9359			Like above, but append/add/subtract the value for each
9360			|List| item.
9361
9362								*E121*
9363:let {var-name}	..	List the value of variable {var-name}.  Multiple
9364			variable names may be given.  Special names recognized
9365			here:				*E738*
9366			  g:	global variables
9367			  b:	local buffer variables
9368			  w:	local window variables
9369			  t:	local tab page variables
9370			  s:	script-local variables
9371			  l:	local function variables
9372			  v:	Vim variables.
9373
9374:let			List the values of all variables.  The type of the
9375			variable is indicated before the value:
9376			    <nothing>	String
9377				#	Number
9378				*	Funcref
9379
9380
9381:unl[et][!] {name} ...				*:unlet* *:unl* *E108* *E795*
9382			Remove the internal variable {name}.  Several variable
9383			names can be given, they are all removed.  The name
9384			may also be a |List| or |Dictionary| item.
9385			With [!] no error message is given for non-existing
9386			variables.
9387			One or more items from a |List| can be removed: >
9388				:unlet list[3]	  " remove fourth item
9389				:unlet list[3:]   " remove fourth item to last
9390<			One item from a |Dictionary| can be removed at a time: >
9391				:unlet dict['two']
9392				:unlet dict.two
9393<			This is especially useful to clean up used global
9394			variables and script-local variables (these are not
9395			deleted when the script ends).  Function-local
9396			variables are automatically deleted when the function
9397			ends.
9398
9399:lockv[ar][!] [depth] {name} ...			*:lockvar* *:lockv*
9400			Lock the internal variable {name}.  Locking means that
9401			it can no longer be changed (until it is unlocked).
9402			A locked variable can be deleted: >
9403				:lockvar v
9404				:let v = 'asdf'		" fails!
9405				:unlet v
9406<							*E741* *E940*
9407			If you try to change a locked variable you get an
9408			error message: "E741: Value is locked: {name}".
9409			If you try to lock or unlock a built-in variable you
9410			get an error message: "E940: Cannot lock or unlock
9411			variable {name}".
9412
9413			[depth] is relevant when locking a |List| or
9414			|Dictionary|.  It specifies how deep the locking goes:
9415				1	Lock the |List| or |Dictionary| itself,
9416					cannot add or remove items, but can
9417					still change their values.
9418				2	Also lock the values, cannot change
9419					the items.  If an item is a |List| or
9420					|Dictionary|, cannot add or remove
9421					items, but can still change the
9422					values.
9423				3	Like 2 but for the |List| /
9424					|Dictionary| in the |List| /
9425					|Dictionary|, one level deeper.
9426			The default [depth] is 2, thus when {name} is a |List|
9427			or |Dictionary| the values cannot be changed.
9428								*E743*
9429			For unlimited depth use [!] and omit [depth].
9430			However, there is a maximum depth of 100 to catch
9431			loops.
9432
9433			Note that when two variables refer to the same |List|
9434			and you lock one of them, the |List| will also be
9435			locked when used through the other variable.
9436			Example: >
9437				:let l = [0, 1, 2, 3]
9438				:let cl = l
9439				:lockvar l
9440				:let cl[1] = 99		" won't work!
9441<			You may want to make a copy of a list to avoid this.
9442			See |deepcopy()|.
9443
9444
9445:unlo[ckvar][!] [depth] {name} ...			*:unlockvar* *:unlo*
9446			Unlock the internal variable {name}.  Does the
9447			opposite of |:lockvar|.
9448
9449
9450:if {expr1}			*:if* *:endif* *:en* *E171* *E579* *E580*
9451:en[dif]		Execute the commands until the next matching ":else"
9452			or ":endif" if {expr1} evaluates to non-zero.
9453
9454			From Vim version 4.5 until 5.0, every Ex command in
9455			between the ":if" and ":endif" is ignored.  These two
9456			commands were just to allow for future expansions in a
9457			backward compatible way.  Nesting was allowed.  Note
9458			that any ":else" or ":elseif" was ignored, the "else"
9459			part was not executed either.
9460
9461			You can use this to remain compatible with older
9462			versions: >
9463				:if version >= 500
9464				:  version-5-specific-commands
9465				:endif
9466<			The commands still need to be parsed to find the
9467			"endif".  Sometimes an older Vim has a problem with a
9468			new command.  For example, ":silent" is recognized as
9469			a ":substitute" command.  In that case ":execute" can
9470			avoid problems: >
9471				:if version >= 600
9472				:  execute "silent 1,$delete"
9473				:endif
9474<
9475			NOTE: The ":append" and ":insert" commands don't work
9476			properly in between ":if" and ":endif".
9477
9478						*:else* *:el* *E581* *E583*
9479:el[se]			Execute the commands until the next matching ":else"
9480			or ":endif" if they previously were not being
9481			executed.
9482
9483					*:elseif* *:elsei* *E582* *E584*
9484:elsei[f] {expr1}	Short for ":else" ":if", with the addition that there
9485			is no extra ":endif".
9486
9487:wh[ile] {expr1}			*:while* *:endwhile* *:wh* *:endw*
9488						*E170* *E585* *E588* *E733*
9489:endw[hile]		Repeat the commands between ":while" and ":endwhile",
9490			as long as {expr1} evaluates to non-zero.
9491			When an error is detected from a command inside the
9492			loop, execution continues after the "endwhile".
9493			Example: >
9494				:let lnum = 1
9495				:while lnum <= line("$")
9496				   :call FixLine(lnum)
9497				   :let lnum = lnum + 1
9498				:endwhile
9499<
9500			NOTE: The ":append" and ":insert" commands don't work
9501			properly inside a ":while" and ":for" loop.
9502
9503:for {var} in {list}					*:for* *E690* *E732*
9504:endfo[r]						*:endfo* *:endfor*
9505			Repeat the commands between ":for" and ":endfor" for
9506			each item in {list}.  Variable {var} is set to the
9507			value of each item.
9508			When an error is detected for a command inside the
9509			loop, execution continues after the "endfor".
9510			Changing {list} inside the loop affects what items are
9511			used.  Make a copy if this is unwanted: >
9512				:for item in copy(mylist)
9513<			When not making a copy, Vim stores a reference to the
9514			next item in the list, before executing the commands
9515			with the current item.  Thus the current item can be
9516			removed without effect.  Removing any later item means
9517			it will not be found.  Thus the following example
9518			works (an inefficient way to make a list empty): >
9519				for item in mylist
9520				   call remove(mylist, 0)
9521				endfor
9522<			Note that reordering the list (e.g., with sort() or
9523			reverse()) may have unexpected effects.
9524
9525:for [{var1}, {var2}, ...] in {listlist}
9526:endfo[r]
9527			Like ":for" above, but each item in {listlist} must be
9528			a list, of which each item is assigned to {var1},
9529			{var2}, etc.  Example: >
9530				:for [lnum, col] in [[1, 3], [2, 5], [3, 8]]
9531				   :echo getline(lnum)[col]
9532				:endfor
9533<
9534						*:continue* *:con* *E586*
9535:con[tinue]		When used inside a ":while" or ":for" loop, jumps back
9536			to the start of the loop.
9537			If it is used after a |:try| inside the loop but
9538			before the matching |:finally| (if present), the
9539			commands following the ":finally" up to the matching
9540			|:endtry| are executed first.  This process applies to
9541			all nested ":try"s inside the loop.  The outermost
9542			":endtry" then jumps back to the start of the loop.
9543
9544						*:break* *:brea* *E587*
9545:brea[k]		When used inside a ":while" or ":for" loop, skips to
9546			the command after the matching ":endwhile" or
9547			":endfor".
9548			If it is used after a |:try| inside the loop but
9549			before the matching |:finally| (if present), the
9550			commands following the ":finally" up to the matching
9551			|:endtry| are executed first.  This process applies to
9552			all nested ":try"s inside the loop.  The outermost
9553			":endtry" then jumps to the command after the loop.
9554
9555:try				*:try* *:endt* *:endtry* *E600* *E601* *E602*
9556:endt[ry]		Change the error handling for the commands between
9557			":try" and ":endtry" including everything being
9558			executed across ":source" commands, function calls,
9559			or autocommand invocations.
9560
9561			When an error or interrupt is detected and there is
9562			a |:finally| command following, execution continues
9563			after the ":finally".  Otherwise, or when the
9564			":endtry" is reached thereafter, the next
9565			(dynamically) surrounding ":try" is checked for
9566			a corresponding ":finally" etc.  Then the script
9567			processing is terminated.  (Whether a function
9568			definition has an "abort" argument does not matter.)
9569			Example: >
9570		:try | edit too much | finally | echo "cleanup" | endtry
9571		:echo "impossible"	" not reached, script terminated above
9572<
9573			Moreover, an error or interrupt (dynamically) inside
9574			":try" and ":endtry" is converted to an exception.  It
9575			can be caught as if it were thrown by a |:throw|
9576			command (see |:catch|).  In this case, the script
9577			processing is not terminated.
9578
9579			The value "Vim:Interrupt" is used for an interrupt
9580			exception.  An error in a Vim command is converted
9581			to a value of the form "Vim({command}):{errmsg}",
9582			other errors are converted to a value of the form
9583			"Vim:{errmsg}".  {command} is the full command name,
9584			and {errmsg} is the message that is displayed if the
9585			error exception is not caught, always beginning with
9586			the error number.
9587			Examples: >
9588		:try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
9589		:try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
9590<
9591					*:cat* *:catch* *E603* *E604* *E605*
9592:cat[ch] /{pattern}/	The following commands until the next |:catch|,
9593			|:finally|, or |:endtry| that belongs to the same
9594			|:try| as the ":catch" are executed when an exception
9595			matching {pattern} is being thrown and has not yet
9596			been caught by a previous ":catch".  Otherwise, these
9597			commands are skipped.
9598			When {pattern} is omitted all errors are caught.
9599			Examples: >
9600		:catch /^Vim:Interrupt$/	" catch interrupts (CTRL-C)
9601		:catch /^Vim\%((\a\+)\)\=:E/	" catch all Vim errors
9602		:catch /^Vim\%((\a\+)\)\=:/	" catch errors and interrupts
9603		:catch /^Vim(write):/		" catch all errors in :write
9604		:catch /^Vim\%((\a\+)\)\=:E123/	" catch error E123
9605		:catch /my-exception/		" catch user exception
9606		:catch /.*/			" catch everything
9607		:catch				" same as /.*/
9608<
9609			Another character can be used instead of / around the
9610			{pattern}, so long as it does not have a special
9611			meaning (e.g., '|' or '"') and doesn't occur inside
9612			{pattern}.
9613			Information about the exception is available in
9614			|v:exception|.  Also see |throw-variables|.
9615			NOTE: It is not reliable to ":catch" the TEXT of
9616			an error message because it may vary in different
9617			locales.
9618
9619					*:fina* *:finally* *E606* *E607*
9620:fina[lly]		The following commands until the matching |:endtry|
9621			are executed whenever the part between the matching
9622			|:try| and the ":finally" is left:  either by falling
9623			through to the ":finally" or by a |:continue|,
9624			|:break|, |:finish|, or |:return|, or by an error or
9625			interrupt or exception (see |:throw|).
9626
9627							*:th* *:throw* *E608*
9628:th[row] {expr1}	The {expr1} is evaluated and thrown as an exception.
9629			If the ":throw" is used after a |:try| but before the
9630			first corresponding |:catch|, commands are skipped
9631			until the first ":catch" matching {expr1} is reached.
9632			If there is no such ":catch" or if the ":throw" is
9633			used after a ":catch" but before the |:finally|, the
9634			commands following the ":finally" (if present) up to
9635			the matching |:endtry| are executed.  If the ":throw"
9636			is after the ":finally", commands up to the ":endtry"
9637			are skipped.  At the ":endtry", this process applies
9638			again for the next dynamically surrounding ":try"
9639			(which may be found in a calling function or sourcing
9640			script), until a matching ":catch" has been found.
9641			If the exception is not caught, the command processing
9642			is terminated.
9643			Example: >
9644		:try | throw "oops" | catch /^oo/ | echo "caught" | endtry
9645<			Note that "catch" may need to be on a separate line
9646			for when an error causes the parsing to skip the whole
9647			line and not see the "|" that separates the commands.
9648
9649							*:ec* *:echo*
9650:ec[ho] {expr1} ..	Echoes each {expr1}, with a space in between.  The
9651			first {expr1} starts on a new line.
9652			Also see |:comment|.
9653			Use "\n" to start a new line.  Use "\r" to move the
9654			cursor to the first column.
9655			Uses the highlighting set by the |:echohl| command.
9656			Cannot be followed by a comment.
9657			Example: >
9658		:echo "the value of 'shell' is" &shell
9659<							*:echo-redraw*
9660			A later redraw may make the message disappear again.
9661			And since Vim mostly postpones redrawing until it's
9662			finished with a sequence of commands this happens
9663			quite often.  To avoid that a command from before the
9664			":echo" causes a redraw afterwards (redraws are often
9665			postponed until you type something), force a redraw
9666			with the |:redraw| command.  Example: >
9667		:new | redraw | echo "there is a new window"
9668<
9669							*:echon*
9670:echon {expr1} ..	Echoes each {expr1}, without anything added.  Also see
9671			|:comment|.
9672			Uses the highlighting set by the |:echohl| command.
9673			Cannot be followed by a comment.
9674			Example: >
9675				:echon "the value of 'shell' is " &shell
9676<
9677			Note the difference between using ":echo", which is a
9678			Vim command, and ":!echo", which is an external shell
9679			command: >
9680		:!echo %		--> filename
9681<			The arguments of ":!" are expanded, see |:_%|. >
9682		:!echo "%"		--> filename or "filename"
9683<			Like the previous example.  Whether you see the double
9684			quotes or not depends on your 'shell'. >
9685		:echo %			--> nothing
9686<			The '%' is an illegal character in an expression. >
9687		:echo "%"		--> %
9688<			This just echoes the '%' character. >
9689		:echo expand("%")	--> filename
9690<			This calls the expand() function to expand the '%'.
9691
9692							*:echoh* *:echohl*
9693:echoh[l] {name}	Use the highlight group {name} for the following
9694			|:echo|, |:echon| and |:echomsg| commands.  Also used
9695			for the |input()| prompt.  Example: >
9696		:echohl WarningMsg | echo "Don't panic!" | echohl None
9697<			Don't forget to set the group back to "None",
9698			otherwise all following echo's will be highlighted.
9699
9700							*:echom* *:echomsg*
9701:echom[sg] {expr1} ..	Echo the expression(s) as a true message, saving the
9702			message in the |message-history|.
9703			Spaces are placed between the arguments as with the
9704			|:echo| command.  But unprintable characters are
9705			displayed, not interpreted.
9706			The parsing works slightly different from |:echo|,
9707			more like |:execute|.  All the expressions are first
9708			evaluated and concatenated before echoing anything.
9709			The expressions must evaluate to a Number or String, a
9710			Dictionary or List causes an error.
9711			Uses the highlighting set by the |:echohl| command.
9712			Example: >
9713		:echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see."
9714<			See |:echo-redraw| to avoid the message disappearing
9715			when the screen is redrawn.
9716							*:echoe* *:echoerr*
9717:echoe[rr] {expr1} ..	Echo the expression(s) as an error message, saving the
9718			message in the |message-history|.  When used in a
9719			script or function the line number will be added.
9720			Spaces are placed between the arguments as with the
9721			:echo command.  When used inside a try conditional,
9722			the message is raised as an error exception instead
9723			(see |try-echoerr|).
9724			Example: >
9725		:echoerr "This script just failed!"
9726<			If you just want a highlighted message use |:echohl|.
9727			And to get a beep: >
9728		:exe "normal \<Esc>"
9729<
9730							*:exe* *:execute*
9731:exe[cute] {expr1} ..	Executes the string that results from the evaluation
9732			of {expr1} as an Ex command.
9733			Multiple arguments are concatenated, with a space in
9734			between.  To avoid the extra space use the "."
9735			operator to concatenate strings into one argument.
9736			{expr1} is used as the processed command, command line
9737			editing keys are not recognized.
9738			Cannot be followed by a comment.
9739			Examples: >
9740		:execute "buffer" nextbuf
9741		:execute "normal" count . "w"
9742<
9743			":execute" can be used to append a command to commands
9744			that don't accept a '|'.  Example: >
9745		:execute '!ls' | echo "theend"
9746
9747<			":execute" is also a nice way to avoid having to type
9748			control characters in a Vim script for a ":normal"
9749			command: >
9750		:execute "normal ixxx\<Esc>"
9751<			This has an <Esc> character, see |expr-string|.
9752
9753			Be careful to correctly escape special characters in
9754			file names.  The |fnameescape()| function can be used
9755			for Vim commands, |shellescape()| for |:!| commands.
9756			Examples: >
9757		:execute "e " . fnameescape(filename)
9758		:execute "!ls " . shellescape(filename, 1)
9759<
9760			Note: The executed string may be any command-line, but
9761			starting or ending "if", "while" and "for" does not
9762			always work, because when commands are skipped the
9763			":execute" is not evaluated and Vim loses track of
9764			where blocks start and end.  Also "break" and
9765			"continue" should not be inside ":execute".
9766			This example does not work, because the ":execute" is
9767			not evaluated and Vim does not see the "while", and
9768			gives an error for finding an ":endwhile": >
9769		:if 0
9770		: execute 'while i > 5'
9771		:  echo "test"
9772		: endwhile
9773		:endif
9774<
9775			It is allowed to have a "while" or "if" command
9776			completely in the executed string: >
9777		:execute 'while i < 5 | echo i | let i = i + 1 | endwhile'
9778<
9779
9780							*:exe-comment*
9781			":execute", ":echo" and ":echon" cannot be followed by
9782			a comment directly, because they see the '"' as the
9783			start of a string.  But, you can use '|' followed by a
9784			comment.  Example: >
9785		:echo "foo" | "this is a comment
9786
9787==============================================================================
97888. Exception handling					*exception-handling*
9789
9790The Vim script language comprises an exception handling feature.  This section
9791explains how it can be used in a Vim script.
9792
9793Exceptions may be raised by Vim on an error or on interrupt, see
9794|catch-errors| and |catch-interrupt|.  You can also explicitly throw an
9795exception by using the ":throw" command, see |throw-catch|.
9796
9797
9798TRY CONDITIONALS					*try-conditionals*
9799
9800Exceptions can be caught or can cause cleanup code to be executed.  You can
9801use a try conditional to specify catch clauses (that catch exceptions) and/or
9802a finally clause (to be executed for cleanup).
9803   A try conditional begins with a |:try| command and ends at the matching
9804|:endtry| command.  In between, you can use a |:catch| command to start
9805a catch clause, or a |:finally| command to start a finally clause.  There may
9806be none or multiple catch clauses, but there is at most one finally clause,
9807which must not be followed by any catch clauses.  The lines before the catch
9808clauses and the finally clause is called a try block. >
9809
9810     :try
9811     :	...
9812     :	...				TRY BLOCK
9813     :	...
9814     :catch /{pattern}/
9815     :	...
9816     :	...				CATCH CLAUSE
9817     :	...
9818     :catch /{pattern}/
9819     :	...
9820     :	...				CATCH CLAUSE
9821     :	...
9822     :finally
9823     :	...
9824     :	...				FINALLY CLAUSE
9825     :	...
9826     :endtry
9827
9828The try conditional allows to watch code for exceptions and to take the
9829appropriate actions.  Exceptions from the try block may be caught.  Exceptions
9830from the try block and also the catch clauses may cause cleanup actions.
9831   When no exception is thrown during execution of the try block, the control
9832is transferred to the finally clause, if present.  After its execution, the
9833script continues with the line following the ":endtry".
9834   When an exception occurs during execution of the try block, the remaining
9835lines in the try block are skipped.  The exception is matched against the
9836patterns specified as arguments to the ":catch" commands.  The catch clause
9837after the first matching ":catch" is taken, other catch clauses are not
9838executed.  The catch clause ends when the next ":catch", ":finally", or
9839":endtry" command is reached - whatever is first.  Then, the finally clause
9840(if present) is executed.  When the ":endtry" is reached, the script execution
9841continues in the following line as usual.
9842   When an exception that does not match any of the patterns specified by the
9843":catch" commands is thrown in the try block, the exception is not caught by
9844that try conditional and none of the catch clauses is executed.  Only the
9845finally clause, if present, is taken.  The exception pends during execution of
9846the finally clause.  It is resumed at the ":endtry", so that commands after
9847the ":endtry" are not executed and the exception might be caught elsewhere,
9848see |try-nesting|.
9849   When during execution of a catch clause another exception is thrown, the
9850remaining lines in that catch clause are not executed.  The new exception is
9851not matched against the patterns in any of the ":catch" commands of the same
9852try conditional and none of its catch clauses is taken.  If there is, however,
9853a finally clause, it is executed, and the exception pends during its
9854execution.  The commands following the ":endtry" are not executed.  The new
9855exception might, however, be caught elsewhere, see |try-nesting|.
9856   When during execution of the finally clause (if present) an exception is
9857thrown, the remaining lines in the finally clause are skipped.  If the finally
9858clause has been taken because of an exception from the try block or one of the
9859catch clauses, the original (pending) exception is discarded.  The commands
9860following the ":endtry" are not executed, and the exception from the finally
9861clause is propagated and can be caught elsewhere, see |try-nesting|.
9862
9863The finally clause is also executed, when a ":break" or ":continue" for
9864a ":while" loop enclosing the complete try conditional is executed from the
9865try block or a catch clause.  Or when a ":return" or ":finish" is executed
9866from the try block or a catch clause of a try conditional in a function or
9867sourced script, respectively.  The ":break", ":continue", ":return", or
9868":finish" pends during execution of the finally clause and is resumed when the
9869":endtry" is reached.  It is, however, discarded when an exception is thrown
9870from the finally clause.
9871   When a ":break" or ":continue" for a ":while" loop enclosing the complete
9872try conditional or when a ":return" or ":finish" is encountered in the finally
9873clause, the rest of the finally clause is skipped, and the ":break",
9874":continue", ":return" or ":finish" is executed as usual.  If the finally
9875clause has been taken because of an exception or an earlier ":break",
9876":continue", ":return", or ":finish" from the try block or a catch clause,
9877this pending exception or command is discarded.
9878
9879For examples see |throw-catch| and |try-finally|.
9880
9881
9882NESTING	OF TRY CONDITIONALS				*try-nesting*
9883
9884Try conditionals can be nested arbitrarily.  That is, a complete try
9885conditional can be put into the try block, a catch clause, or the finally
9886clause of another try conditional.  If the inner try conditional does not
9887catch an exception thrown in its try block or throws a new exception from one
9888of its catch clauses or its finally clause, the outer try conditional is
9889checked according to the rules above.  If the inner try conditional is in the
9890try block of the outer try conditional, its catch clauses are checked, but
9891otherwise only the finally clause is executed.  It does not matter for
9892nesting, whether the inner try conditional is directly contained in the outer
9893one, or whether the outer one sources a script or calls a function containing
9894the inner try conditional.
9895
9896When none of the active try conditionals catches an exception, just their
9897finally clauses are executed.  Thereafter, the script processing terminates.
9898An error message is displayed in case of an uncaught exception explicitly
9899thrown by a ":throw" command.  For uncaught error and interrupt exceptions
9900implicitly raised by Vim, the error message(s) or interrupt message are shown
9901as usual.
9902
9903For examples see |throw-catch|.
9904
9905
9906EXAMINING EXCEPTION HANDLING CODE			*except-examine*
9907
9908Exception handling code can get tricky.  If you are in doubt what happens, set
9909'verbose' to 13 or use the ":13verbose" command modifier when sourcing your
9910script file.  Then you see when an exception is thrown, discarded, caught, or
9911finished.  When using a verbosity level of at least 14, things pending in
9912a finally clause are also shown.  This information is also given in debug mode
9913(see |debug-scripts|).
9914
9915
9916THROWING AND CATCHING EXCEPTIONS			*throw-catch*
9917
9918You can throw any number or string as an exception.  Use the |:throw| command
9919and pass the value to be thrown as argument: >
9920	:throw 4711
9921	:throw "string"
9922<							*throw-expression*
9923You can also specify an expression argument.  The expression is then evaluated
9924first, and the result is thrown: >
9925	:throw 4705 + strlen("string")
9926	:throw strpart("strings", 0, 6)
9927
9928An exception might be thrown during evaluation of the argument of the ":throw"
9929command.  Unless it is caught there, the expression evaluation is abandoned.
9930The ":throw" command then does not throw a new exception.
9931   Example: >
9932
9933	:function! Foo(arg)
9934	:  try
9935	:    throw a:arg
9936	:  catch /foo/
9937	:  endtry
9938	:  return 1
9939	:endfunction
9940	:
9941	:function! Bar()
9942	:  echo "in Bar"
9943	:  return 4710
9944	:endfunction
9945	:
9946	:throw Foo("arrgh") + Bar()
9947
9948This throws "arrgh", and "in Bar" is not displayed since Bar() is not
9949executed. >
9950	:throw Foo("foo") + Bar()
9951however displays "in Bar" and throws 4711.
9952
9953Any other command that takes an expression as argument might also be
9954abandoned by an (uncaught) exception during the expression evaluation.  The
9955exception is then propagated to the caller of the command.
9956   Example: >
9957
9958	:if Foo("arrgh")
9959	:  echo "then"
9960	:else
9961	:  echo "else"
9962	:endif
9963
9964Here neither of "then" or "else" is displayed.
9965
9966							*catch-order*
9967Exceptions can be caught by a try conditional with one or more |:catch|
9968commands, see |try-conditionals|.   The values to be caught by each ":catch"
9969command can be specified as a pattern argument.  The subsequent catch clause
9970gets executed when a matching exception is caught.
9971   Example: >
9972
9973	:function! Foo(value)
9974	:  try
9975	:    throw a:value
9976	:  catch /^\d\+$/
9977	:    echo "Number thrown"
9978	:  catch /.*/
9979	:    echo "String thrown"
9980	:  endtry
9981	:endfunction
9982	:
9983	:call Foo(0x1267)
9984	:call Foo('string')
9985
9986The first call to Foo() displays "Number thrown", the second "String thrown".
9987An exception is matched against the ":catch" commands in the order they are
9988specified.  Only the first match counts.  So you should place the more
9989specific ":catch" first.  The following order does not make sense: >
9990
9991	:  catch /.*/
9992	:    echo "String thrown"
9993	:  catch /^\d\+$/
9994	:    echo "Number thrown"
9995
9996The first ":catch" here matches always, so that the second catch clause is
9997never taken.
9998
9999							*throw-variables*
10000If you catch an exception by a general pattern, you may access the exact value
10001in the variable |v:exception|: >
10002
10003	:  catch /^\d\+$/
10004	:    echo "Number thrown.  Value is" v:exception
10005
10006You may also be interested where an exception was thrown.  This is stored in
10007|v:throwpoint|.  Note that "v:exception" and "v:throwpoint" are valid for the
10008exception most recently caught as long it is not finished.
10009   Example: >
10010
10011	:function! Caught()
10012	:  if v:exception != ""
10013	:    echo 'Caught "' . v:exception . '" in ' . v:throwpoint
10014	:  else
10015	:    echo 'Nothing caught'
10016	:  endif
10017	:endfunction
10018	:
10019	:function! Foo()
10020	:  try
10021	:    try
10022	:      try
10023	:	 throw 4711
10024	:      finally
10025	:	 call Caught()
10026	:      endtry
10027	:    catch /.*/
10028	:      call Caught()
10029	:      throw "oops"
10030	:    endtry
10031	:  catch /.*/
10032	:    call Caught()
10033	:  finally
10034	:    call Caught()
10035	:  endtry
10036	:endfunction
10037	:
10038	:call Foo()
10039
10040This displays >
10041
10042	Nothing caught
10043	Caught "4711" in function Foo, line 4
10044	Caught "oops" in function Foo, line 10
10045	Nothing caught
10046
10047A practical example:  The following command ":LineNumber" displays the line
10048number in the script or function where it has been used: >
10049
10050	:function! LineNumber()
10051	:    return substitute(v:throwpoint, '.*\D\(\d\+\).*', '\1', "")
10052	:endfunction
10053	:command! LineNumber try | throw "" | catch | echo LineNumber() | endtry
10054<
10055							*try-nested*
10056An exception that is not caught by a try conditional can be caught by
10057a surrounding try conditional: >
10058
10059	:try
10060	:  try
10061	:    throw "foo"
10062	:  catch /foobar/
10063	:    echo "foobar"
10064	:  finally
10065	:    echo "inner finally"
10066	:  endtry
10067	:catch /foo/
10068	:  echo "foo"
10069	:endtry
10070
10071The inner try conditional does not catch the exception, just its finally
10072clause is executed.  The exception is then caught by the outer try
10073conditional.  The example displays "inner finally" and then "foo".
10074
10075							*throw-from-catch*
10076You can catch an exception and throw a new one to be caught elsewhere from the
10077catch clause: >
10078
10079	:function! Foo()
10080	:  throw "foo"
10081	:endfunction
10082	:
10083	:function! Bar()
10084	:  try
10085	:    call Foo()
10086	:  catch /foo/
10087	:    echo "Caught foo, throw bar"
10088	:    throw "bar"
10089	:  endtry
10090	:endfunction
10091	:
10092	:try
10093	:  call Bar()
10094	:catch /.*/
10095	:  echo "Caught" v:exception
10096	:endtry
10097
10098This displays "Caught foo, throw bar" and then "Caught bar".
10099
10100							*rethrow*
10101There is no real rethrow in the Vim script language, but you may throw
10102"v:exception" instead: >
10103
10104	:function! Bar()
10105	:  try
10106	:    call Foo()
10107	:  catch /.*/
10108	:    echo "Rethrow" v:exception
10109	:    throw v:exception
10110	:  endtry
10111	:endfunction
10112<							*try-echoerr*
10113Note that this method cannot be used to "rethrow" Vim error or interrupt
10114exceptions, because it is not possible to fake Vim internal exceptions.
10115Trying so causes an error exception.  You should throw your own exception
10116denoting the situation.  If you want to cause a Vim error exception containing
10117the original error exception value, you can use the |:echoerr| command: >
10118
10119	:try
10120	:  try
10121	:    asdf
10122	:  catch /.*/
10123	:    echoerr v:exception
10124	:  endtry
10125	:catch /.*/
10126	:  echo v:exception
10127	:endtry
10128
10129This code displays
10130
10131	Vim(echoerr):Vim:E492: Not an editor command:	asdf ~
10132
10133
10134CLEANUP CODE						*try-finally*
10135
10136Scripts often change global settings and restore them at their end.  If the
10137user however interrupts the script by pressing CTRL-C, the settings remain in
10138an inconsistent state.  The same may happen to you in the development phase of
10139a script when an error occurs or you explicitly throw an exception without
10140catching it.  You can solve these problems by using a try conditional with
10141a finally clause for restoring the settings.  Its execution is guaranteed on
10142normal control flow, on error, on an explicit ":throw", and on interrupt.
10143(Note that errors and interrupts from inside the try conditional are converted
10144to exceptions.  When not caught, they terminate the script after the finally
10145clause has been executed.)
10146Example: >
10147
10148	:try
10149	:  let s:saved_ts = &ts
10150	:  set ts=17
10151	:
10152	:  " Do the hard work here.
10153	:
10154	:finally
10155	:  let &ts = s:saved_ts
10156	:  unlet s:saved_ts
10157	:endtry
10158
10159This method should be used locally whenever a function or part of a script
10160changes global settings which need to be restored on failure or normal exit of
10161that function or script part.
10162
10163							*break-finally*
10164Cleanup code works also when the try block or a catch clause is left by
10165a ":continue", ":break", ":return", or ":finish".
10166   Example: >
10167
10168	:let first = 1
10169	:while 1
10170	:  try
10171	:    if first
10172	:      echo "first"
10173	:      let first = 0
10174	:      continue
10175	:    else
10176	:      throw "second"
10177	:    endif
10178	:  catch /.*/
10179	:    echo v:exception
10180	:    break
10181	:  finally
10182	:    echo "cleanup"
10183	:  endtry
10184	:  echo "still in while"
10185	:endwhile
10186	:echo "end"
10187
10188This displays "first", "cleanup", "second", "cleanup", and "end". >
10189
10190	:function! Foo()
10191	:  try
10192	:    return 4711
10193	:  finally
10194	:    echo "cleanup\n"
10195	:  endtry
10196	:  echo "Foo still active"
10197	:endfunction
10198	:
10199	:echo Foo() "returned by Foo"
10200
10201This displays "cleanup" and "4711 returned by Foo".  You don't need to add an
10202extra ":return" in the finally clause.  (Above all, this would override the
10203return value.)
10204
10205							*except-from-finally*
10206Using either of ":continue", ":break", ":return", ":finish", or ":throw" in
10207a finally clause is possible, but not recommended since it abandons the
10208cleanup actions for the try conditional.  But, of course, interrupt and error
10209exceptions might get raised from a finally clause.
10210   Example where an error in the finally clause stops an interrupt from
10211working correctly: >
10212
10213	:try
10214	:  try
10215	:    echo "Press CTRL-C for interrupt"
10216	:    while 1
10217	:    endwhile
10218	:  finally
10219	:    unlet novar
10220	:  endtry
10221	:catch /novar/
10222	:endtry
10223	:echo "Script still running"
10224	:sleep 1
10225
10226If you need to put commands that could fail into a finally clause, you should
10227think about catching or ignoring the errors in these commands, see
10228|catch-errors| and |ignore-errors|.
10229
10230
10231CATCHING ERRORS						*catch-errors*
10232
10233If you want to catch specific errors, you just have to put the code to be
10234watched in a try block and add a catch clause for the error message.  The
10235presence of the try conditional causes all errors to be converted to an
10236exception.  No message is displayed and |v:errmsg| is not set then.  To find
10237the right pattern for the ":catch" command, you have to know how the format of
10238the error exception is.
10239   Error exceptions have the following format: >
10240
10241	Vim({cmdname}):{errmsg}
10242or >
10243	Vim:{errmsg}
10244
10245{cmdname} is the name of the command that failed; the second form is used when
10246the command name is not known.  {errmsg} is the error message usually produced
10247when the error occurs outside try conditionals.  It always begins with
10248a capital "E", followed by a two or three-digit error number, a colon, and
10249a space.
10250
10251Examples:
10252
10253The command >
10254	:unlet novar
10255normally produces the error message >
10256	E108: No such variable: "novar"
10257which is converted inside try conditionals to an exception >
10258	Vim(unlet):E108: No such variable: "novar"
10259
10260The command >
10261	:dwim
10262normally produces the error message >
10263	E492: Not an editor command: dwim
10264which is converted inside try conditionals to an exception >
10265	Vim:E492: Not an editor command: dwim
10266
10267You can catch all ":unlet" errors by a >
10268	:catch /^Vim(unlet):/
10269or all errors for misspelled command names by a >
10270	:catch /^Vim:E492:/
10271
10272Some error messages may be produced by different commands: >
10273	:function nofunc
10274and >
10275	:delfunction nofunc
10276both produce the error message >
10277	E128: Function name must start with a capital: nofunc
10278which is converted inside try conditionals to an exception >
10279	Vim(function):E128: Function name must start with a capital: nofunc
10280or >
10281	Vim(delfunction):E128: Function name must start with a capital: nofunc
10282respectively.  You can catch the error by its number independently on the
10283command that caused it if you use the following pattern: >
10284	:catch /^Vim(\a\+):E128:/
10285
10286Some commands like >
10287	:let x = novar
10288produce multiple error messages, here: >
10289	E121: Undefined variable: novar
10290	E15: Invalid expression:  novar
10291Only the first is used for the exception value, since it is the most specific
10292one (see |except-several-errors|).  So you can catch it by >
10293	:catch /^Vim(\a\+):E121:/
10294
10295You can catch all errors related to the name "nofunc" by >
10296	:catch /\<nofunc\>/
10297
10298You can catch all Vim errors in the ":write" and ":read" commands by >
10299	:catch /^Vim(\(write\|read\)):E\d\+:/
10300
10301You can catch all Vim errors by the pattern >
10302	:catch /^Vim\((\a\+)\)\=:E\d\+:/
10303<
10304							*catch-text*
10305NOTE: You should never catch the error message text itself: >
10306	:catch /No such variable/
10307only works in the English locale, but not when the user has selected
10308a different language by the |:language| command.  It is however helpful to
10309cite the message text in a comment: >
10310	:catch /^Vim(\a\+):E108:/   " No such variable
10311
10312
10313IGNORING ERRORS						*ignore-errors*
10314
10315You can ignore errors in a specific Vim command by catching them locally: >
10316
10317	:try
10318	:  write
10319	:catch
10320	:endtry
10321
10322But you are strongly recommended NOT to use this simple form, since it could
10323catch more than you want.  With the ":write" command, some autocommands could
10324be executed and cause errors not related to writing, for instance: >
10325
10326	:au BufWritePre * unlet novar
10327
10328There could even be such errors you are not responsible for as a script
10329writer: a user of your script might have defined such autocommands.  You would
10330then hide the error from the user.
10331   It is much better to use >
10332
10333	:try
10334	:  write
10335	:catch /^Vim(write):/
10336	:endtry
10337
10338which only catches real write errors.  So catch only what you'd like to ignore
10339intentionally.
10340
10341For a single command that does not cause execution of autocommands, you could
10342even suppress the conversion of errors to exceptions by the ":silent!"
10343command: >
10344	:silent! nunmap k
10345This works also when a try conditional is active.
10346
10347
10348CATCHING INTERRUPTS					*catch-interrupt*
10349
10350When there are active try conditionals, an interrupt (CTRL-C) is converted to
10351the exception "Vim:Interrupt".  You can catch it like every exception.  The
10352script is not terminated, then.
10353   Example: >
10354
10355	:function! TASK1()
10356	:  sleep 10
10357	:endfunction
10358
10359	:function! TASK2()
10360	:  sleep 20
10361	:endfunction
10362
10363	:while 1
10364	:  let command = input("Type a command: ")
10365	:  try
10366	:    if command == ""
10367	:      continue
10368	:    elseif command == "END"
10369	:      break
10370	:    elseif command == "TASK1"
10371	:      call TASK1()
10372	:    elseif command == "TASK2"
10373	:      call TASK2()
10374	:    else
10375	:      echo "\nIllegal command:" command
10376	:      continue
10377	:    endif
10378	:  catch /^Vim:Interrupt$/
10379	:    echo "\nCommand interrupted"
10380	:    " Caught the interrupt.  Continue with next prompt.
10381	:  endtry
10382	:endwhile
10383
10384You can interrupt a task here by pressing CTRL-C; the script then asks for
10385a new command.  If you press CTRL-C at the prompt, the script is terminated.
10386
10387For testing what happens when CTRL-C would be pressed on a specific line in
10388your script, use the debug mode and execute the |>quit| or |>interrupt|
10389command on that line.  See |debug-scripts|.
10390
10391
10392CATCHING ALL						*catch-all*
10393
10394The commands >
10395
10396	:catch /.*/
10397	:catch //
10398	:catch
10399
10400catch everything, error exceptions, interrupt exceptions and exceptions
10401explicitly thrown by the |:throw| command.  This is useful at the top level of
10402a script in order to catch unexpected things.
10403   Example: >
10404
10405	:try
10406	:
10407	:  " do the hard work here
10408	:
10409	:catch /MyException/
10410	:
10411	:  " handle known problem
10412	:
10413	:catch /^Vim:Interrupt$/
10414	:    echo "Script interrupted"
10415	:catch /.*/
10416	:  echo "Internal error (" . v:exception . ")"
10417	:  echo " - occurred at " . v:throwpoint
10418	:endtry
10419	:" end of script
10420
10421Note: Catching all might catch more things than you want.  Thus, you are
10422strongly encouraged to catch only for problems that you can really handle by
10423specifying a pattern argument to the ":catch".
10424   Example: Catching all could make it nearly impossible to interrupt a script
10425by pressing CTRL-C: >
10426
10427	:while 1
10428	:  try
10429	:    sleep 1
10430	:  catch
10431	:  endtry
10432	:endwhile
10433
10434
10435EXCEPTIONS AND AUTOCOMMANDS				*except-autocmd*
10436
10437Exceptions may be used during execution of autocommands.  Example: >
10438
10439	:autocmd User x try
10440	:autocmd User x   throw "Oops!"
10441	:autocmd User x catch
10442	:autocmd User x   echo v:exception
10443	:autocmd User x endtry
10444	:autocmd User x throw "Arrgh!"
10445	:autocmd User x echo "Should not be displayed"
10446	:
10447	:try
10448	:  doautocmd User x
10449	:catch
10450	:  echo v:exception
10451	:endtry
10452
10453This displays "Oops!" and "Arrgh!".
10454
10455							*except-autocmd-Pre*
10456For some commands, autocommands get executed before the main action of the
10457command takes place.  If an exception is thrown and not caught in the sequence
10458of autocommands, the sequence and the command that caused its execution are
10459abandoned and the exception is propagated to the caller of the command.
10460   Example: >
10461
10462	:autocmd BufWritePre * throw "FAIL"
10463	:autocmd BufWritePre * echo "Should not be displayed"
10464	:
10465	:try
10466	:  write
10467	:catch
10468	:  echo "Caught:" v:exception "from" v:throwpoint
10469	:endtry
10470
10471Here, the ":write" command does not write the file currently being edited (as
10472you can see by checking 'modified'), since the exception from the BufWritePre
10473autocommand abandons the ":write".  The exception is then caught and the
10474script displays: >
10475
10476	Caught: FAIL from BufWrite Auto commands for "*"
10477<
10478							*except-autocmd-Post*
10479For some commands, autocommands get executed after the main action of the
10480command has taken place.  If this main action fails and the command is inside
10481an active try conditional, the autocommands are skipped and an error exception
10482is thrown that can be caught by the caller of the command.
10483   Example: >
10484
10485	:autocmd BufWritePost * echo "File successfully written!"
10486	:
10487	:try
10488	:  write /i/m/p/o/s/s/i/b/l/e
10489	:catch
10490	:  echo v:exception
10491	:endtry
10492
10493This just displays: >
10494
10495	Vim(write):E212: Can't open file for writing (/i/m/p/o/s/s/i/b/l/e)
10496
10497If you really need to execute the autocommands even when the main action
10498fails, trigger the event from the catch clause.
10499   Example: >
10500
10501	:autocmd BufWritePre  * set noreadonly
10502	:autocmd BufWritePost * set readonly
10503	:
10504	:try
10505	:  write /i/m/p/o/s/s/i/b/l/e
10506	:catch
10507	:  doautocmd BufWritePost /i/m/p/o/s/s/i/b/l/e
10508	:endtry
10509<
10510You can also use ":silent!": >
10511
10512	:let x = "ok"
10513	:let v:errmsg = ""
10514	:autocmd BufWritePost * if v:errmsg != ""
10515	:autocmd BufWritePost *   let x = "after fail"
10516	:autocmd BufWritePost * endif
10517	:try
10518	:  silent! write /i/m/p/o/s/s/i/b/l/e
10519	:catch
10520	:endtry
10521	:echo x
10522
10523This displays "after fail".
10524
10525If the main action of the command does not fail, exceptions from the
10526autocommands will be catchable by the caller of the command:  >
10527
10528	:autocmd BufWritePost * throw ":-("
10529	:autocmd BufWritePost * echo "Should not be displayed"
10530	:
10531	:try
10532	:  write
10533	:catch
10534	:  echo v:exception
10535	:endtry
10536<
10537							*except-autocmd-Cmd*
10538For some commands, the normal action can be replaced by a sequence of
10539autocommands.  Exceptions from that sequence will be catchable by the caller
10540of the command.
10541   Example:  For the ":write" command, the caller cannot know whether the file
10542had actually been written when the exception occurred.  You need to tell it in
10543some way. >
10544
10545	:if !exists("cnt")
10546	:  let cnt = 0
10547	:
10548	:  autocmd BufWriteCmd * if &modified
10549	:  autocmd BufWriteCmd *   let cnt = cnt + 1
10550	:  autocmd BufWriteCmd *   if cnt % 3 == 2
10551	:  autocmd BufWriteCmd *     throw "BufWriteCmdError"
10552	:  autocmd BufWriteCmd *   endif
10553	:  autocmd BufWriteCmd *   write | set nomodified
10554	:  autocmd BufWriteCmd *   if cnt % 3 == 0
10555	:  autocmd BufWriteCmd *     throw "BufWriteCmdError"
10556	:  autocmd BufWriteCmd *   endif
10557	:  autocmd BufWriteCmd *   echo "File successfully written!"
10558	:  autocmd BufWriteCmd * endif
10559	:endif
10560	:
10561	:try
10562	:	write
10563	:catch /^BufWriteCmdError$/
10564	:  if &modified
10565	:    echo "Error on writing (file contents not changed)"
10566	:  else
10567	:    echo "Error after writing"
10568	:  endif
10569	:catch /^Vim(write):/
10570	:    echo "Error on writing"
10571	:endtry
10572
10573When this script is sourced several times after making changes, it displays
10574first >
10575	File successfully written!
10576then >
10577	Error on writing (file contents not changed)
10578then >
10579	Error after writing
10580etc.
10581
10582							*except-autocmd-ill*
10583You cannot spread a try conditional over autocommands for different events.
10584The following code is ill-formed: >
10585
10586	:autocmd BufWritePre  * try
10587	:
10588	:autocmd BufWritePost * catch
10589	:autocmd BufWritePost *   echo v:exception
10590	:autocmd BufWritePost * endtry
10591	:
10592	:write
10593
10594
10595EXCEPTION HIERARCHIES AND PARAMETERIZED EXCEPTIONS	*except-hier-param*
10596
10597Some programming languages allow to use hierarchies of exception classes or to
10598pass additional information with the object of an exception class.  You can do
10599similar things in Vim.
10600   In order to throw an exception from a hierarchy, just throw the complete
10601class name with the components separated by a colon, for instance throw the
10602string "EXCEPT:MATHERR:OVERFLOW" for an overflow in a mathematical library.
10603   When you want to pass additional information with your exception class, add
10604it in parentheses, for instance throw the string "EXCEPT:IO:WRITEERR(myfile)"
10605for an error when writing "myfile".
10606   With the appropriate patterns in the ":catch" command, you can catch for
10607base classes or derived classes of your hierarchy.  Additional information in
10608parentheses can be cut out from |v:exception| with the ":substitute" command.
10609   Example: >
10610
10611	:function! CheckRange(a, func)
10612	:  if a:a < 0
10613	:    throw "EXCEPT:MATHERR:RANGE(" . a:func . ")"
10614	:  endif
10615	:endfunction
10616	:
10617	:function! Add(a, b)
10618	:  call CheckRange(a:a, "Add")
10619	:  call CheckRange(a:b, "Add")
10620	:  let c = a:a + a:b
10621	:  if c < 0
10622	:    throw "EXCEPT:MATHERR:OVERFLOW"
10623	:  endif
10624	:  return c
10625	:endfunction
10626	:
10627	:function! Div(a, b)
10628	:  call CheckRange(a:a, "Div")
10629	:  call CheckRange(a:b, "Div")
10630	:  if (a:b == 0)
10631	:    throw "EXCEPT:MATHERR:ZERODIV"
10632	:  endif
10633	:  return a:a / a:b
10634	:endfunction
10635	:
10636	:function! Write(file)
10637	:  try
10638	:    execute "write" fnameescape(a:file)
10639	:  catch /^Vim(write):/
10640	:    throw "EXCEPT:IO(" . getcwd() . ", " . a:file . "):WRITEERR"
10641	:  endtry
10642	:endfunction
10643	:
10644	:try
10645	:
10646	:  " something with arithmetics and I/O
10647	:
10648	:catch /^EXCEPT:MATHERR:RANGE/
10649	:  let function = substitute(v:exception, '.*(\(\a\+\)).*', '\1', "")
10650	:  echo "Range error in" function
10651	:
10652	:catch /^EXCEPT:MATHERR/	" catches OVERFLOW and ZERODIV
10653	:  echo "Math error"
10654	:
10655	:catch /^EXCEPT:IO/
10656	:  let dir = substitute(v:exception, '.*(\(.\+\),\s*.\+).*', '\1', "")
10657	:  let file = substitute(v:exception, '.*(.\+,\s*\(.\+\)).*', '\1', "")
10658	:  if file !~ '^/'
10659	:    let file = dir . "/" . file
10660	:  endif
10661	:  echo 'I/O error for "' . file . '"'
10662	:
10663	:catch /^EXCEPT/
10664	:  echo "Unspecified error"
10665	:
10666	:endtry
10667
10668The exceptions raised by Vim itself (on error or when pressing CTRL-C) use
10669a flat hierarchy:  they are all in the "Vim" class.  You cannot throw yourself
10670exceptions with the "Vim" prefix; they are reserved for Vim.
10671   Vim error exceptions are parameterized with the name of the command that
10672failed, if known.  See |catch-errors|.
10673
10674
10675PECULIARITIES
10676							*except-compat*
10677The exception handling concept requires that the command sequence causing the
10678exception is aborted immediately and control is transferred to finally clauses
10679and/or a catch clause.
10680
10681In the Vim script language there are cases where scripts and functions
10682continue after an error: in functions without the "abort" flag or in a command
10683after ":silent!", control flow goes to the following line, and outside
10684functions, control flow goes to the line following the outermost ":endwhile"
10685or ":endif".  On the other hand, errors should be catchable as exceptions
10686(thus, requiring the immediate abortion).
10687
10688This problem has been solved by converting errors to exceptions and using
10689immediate abortion (if not suppressed by ":silent!") only when a try
10690conditional is active.  This is no restriction since an (error) exception can
10691be caught only from an active try conditional.  If you want an immediate
10692termination without catching the error, just use a try conditional without
10693catch clause.  (You can cause cleanup code being executed before termination
10694by specifying a finally clause.)
10695
10696When no try conditional is active, the usual abortion and continuation
10697behavior is used instead of immediate abortion.  This ensures compatibility of
10698scripts written for Vim 6.1 and earlier.
10699
10700However, when sourcing an existing script that does not use exception handling
10701commands (or when calling one of its functions) from inside an active try
10702conditional of a new script, you might change the control flow of the existing
10703script on error.  You get the immediate abortion on error and can catch the
10704error in the new script.  If however the sourced script suppresses error
10705messages by using the ":silent!" command (checking for errors by testing
10706|v:errmsg| if appropriate), its execution path is not changed.  The error is
10707not converted to an exception.  (See |:silent|.)  So the only remaining cause
10708where this happens is for scripts that don't care about errors and produce
10709error messages.  You probably won't want to use such code from your new
10710scripts.
10711
10712							*except-syntax-err*
10713Syntax errors in the exception handling commands are never caught by any of
10714the ":catch" commands of the try conditional they belong to.  Its finally
10715clauses, however, is executed.
10716   Example: >
10717
10718	:try
10719	:  try
10720	:    throw 4711
10721	:  catch /\(/
10722	:    echo "in catch with syntax error"
10723	:  catch
10724	:    echo "inner catch-all"
10725	:  finally
10726	:    echo "inner finally"
10727	:  endtry
10728	:catch
10729	:  echo 'outer catch-all caught "' . v:exception . '"'
10730	:  finally
10731	:    echo "outer finally"
10732	:endtry
10733
10734This displays: >
10735    inner finally
10736    outer catch-all caught "Vim(catch):E54: Unmatched \("
10737    outer finally
10738The original exception is discarded and an error exception is raised, instead.
10739
10740							*except-single-line*
10741The ":try", ":catch", ":finally", and ":endtry" commands can be put on
10742a single line, but then syntax errors may make it difficult to recognize the
10743"catch" line, thus you better avoid this.
10744   Example: >
10745	:try | unlet! foo # | catch | endtry
10746raises an error exception for the trailing characters after the ":unlet!"
10747argument, but does not see the ":catch" and ":endtry" commands, so that the
10748error exception is discarded and the "E488: Trailing characters" message gets
10749displayed.
10750
10751							*except-several-errors*
10752When several errors appear in a single command, the first error message is
10753usually the most specific one and therefor converted to the error exception.
10754   Example: >
10755	echo novar
10756causes >
10757	E121: Undefined variable: novar
10758	E15: Invalid expression: novar
10759The value of the error exception inside try conditionals is: >
10760	Vim(echo):E121: Undefined variable: novar
10761<							*except-syntax-error*
10762But when a syntax error is detected after a normal error in the same command,
10763the syntax error is used for the exception being thrown.
10764   Example: >
10765	unlet novar #
10766causes >
10767	E108: No such variable: "novar"
10768	E488: Trailing characters
10769The value of the error exception inside try conditionals is: >
10770	Vim(unlet):E488: Trailing characters
10771This is done because the syntax error might change the execution path in a way
10772not intended by the user.  Example: >
10773	try
10774	    try | unlet novar # | catch | echo v:exception | endtry
10775	catch /.*/
10776	    echo "outer catch:" v:exception
10777	endtry
10778This displays "outer catch: Vim(unlet):E488: Trailing characters", and then
10779a "E600: Missing :endtry" error message is given, see |except-single-line|.
10780
10781==============================================================================
107829. Examples						*eval-examples*
10783
10784Printing in Binary ~
10785>
10786  :" The function Nr2Bin() returns the binary string representation of a number.
10787  :func Nr2Bin(nr)
10788  :  let n = a:nr
10789  :  let r = ""
10790  :  while n
10791  :    let r = '01'[n % 2] . r
10792  :    let n = n / 2
10793  :  endwhile
10794  :  return r
10795  :endfunc
10796
10797  :" The function String2Bin() converts each character in a string to a
10798  :" binary string, separated with dashes.
10799  :func String2Bin(str)
10800  :  let out = ''
10801  :  for ix in range(strlen(a:str))
10802  :    let out = out . '-' . Nr2Bin(char2nr(a:str[ix]))
10803  :  endfor
10804  :  return out[1:]
10805  :endfunc
10806
10807Example of its use: >
10808  :echo Nr2Bin(32)
10809result: "100000" >
10810  :echo String2Bin("32")
10811result: "110011-110010"
10812
10813
10814Sorting lines ~
10815
10816This example sorts lines with a specific compare function. >
10817
10818  :func SortBuffer()
10819  :  let lines = getline(1, '$')
10820  :  call sort(lines, function("Strcmp"))
10821  :  call setline(1, lines)
10822  :endfunction
10823
10824As a one-liner: >
10825  :call setline(1, sort(getline(1, '$'), function("Strcmp")))
10826
10827
10828scanf() replacement ~
10829							*sscanf*
10830There is no sscanf() function in Vim.  If you need to extract parts from a
10831line, you can use matchstr() and substitute() to do it.  This example shows
10832how to get the file name, line number and column number out of a line like
10833"foobar.txt, 123, 45". >
10834   :" Set up the match bit
10835   :let mx='\(\f\+\),\s*\(\d\+\),\s*\(\d\+\)'
10836   :"get the part matching the whole expression
10837   :let l = matchstr(line, mx)
10838   :"get each item out of the match
10839   :let file = substitute(l, mx, '\1', '')
10840   :let lnum = substitute(l, mx, '\2', '')
10841   :let col = substitute(l, mx, '\3', '')
10842
10843The input is in the variable "line", the results in the variables "file",
10844"lnum" and "col". (idea from Michael Geddes)
10845
10846
10847getting the scriptnames in a Dictionary ~
10848						*scriptnames-dictionary*
10849The |:scriptnames| command can be used to get a list of all script files that
10850have been sourced.  There is no equivalent function or variable for this
10851(because it's rarely needed).  In case you need to manipulate the list this
10852code can be used: >
10853    " Get the output of ":scriptnames" in the scriptnames_output variable.
10854    let scriptnames_output = ''
10855    redir => scriptnames_output
10856    silent scriptnames
10857    redir END
10858
10859    " Split the output into lines and parse each line.	Add an entry to the
10860    " "scripts" dictionary.
10861    let scripts = {}
10862    for line in split(scriptnames_output, "\n")
10863      " Only do non-blank lines.
10864      if line =~ '\S'
10865	" Get the first number in the line.
10866	let nr = matchstr(line, '\d\+')
10867	" Get the file name, remove the script number " 123: ".
10868	let name = substitute(line, '.\+:\s*', '', '')
10869	" Add an item to the Dictionary
10870	let scripts[nr] = name
10871      endif
10872    endfor
10873    unlet scriptnames_output
10874
10875==============================================================================
1087610. No +eval feature				*no-eval-feature*
10877
10878When the |+eval| feature was disabled at compile time, none of the expression
10879evaluation commands are available.  To prevent this from causing Vim scripts
10880to generate all kinds of errors, the ":if" and ":endif" commands are still
10881recognized, though the argument of the ":if" and everything between the ":if"
10882and the matching ":endif" is ignored.  Nesting of ":if" blocks is allowed, but
10883only if the commands are at the start of the line.  The ":else" command is not
10884recognized.
10885
10886Example of how to avoid executing commands when the |+eval| feature is
10887missing: >
10888
10889	:if 1
10890	:  echo "Expression evaluation is compiled in"
10891	:else
10892	:  echo "You will _never_ see this message"
10893	:endif
10894
10895To execute a command only when the |+eval| feature is disabled requires a trick,
10896as this example shows: >
10897
10898	silent! while 0
10899	  set history=111
10900	silent! endwhile
10901
10902When the |+eval| feature is available the command is skipped because of the
10903"while 0".  Without the |+eval| feature the "while 0" is an error, which is
10904silently ignored, and the command is executed.
10905
10906==============================================================================
1090711. The sandbox					*eval-sandbox* *sandbox* *E48*
10908
10909The 'foldexpr', 'formatexpr', 'includeexpr', 'indentexpr', 'statusline' and
10910'foldtext' options may be evaluated in a sandbox.  This means that you are
10911protected from these expressions having nasty side effects.  This gives some
10912safety for when these options are set from a modeline.  It is also used when
10913the command from a tags file is executed and for CTRL-R = in the command line.
10914The sandbox is also used for the |:sandbox| command.
10915
10916These items are not allowed in the sandbox:
10917	- changing the buffer text
10918	- defining or changing mapping, autocommands, functions, user commands
10919	- setting certain options (see |option-summary|)
10920	- setting certain v: variables (see |v:var|)  *E794*
10921	- executing a shell command
10922	- reading or writing a file
10923	- jumping to another buffer or editing a file
10924	- executing Python, Perl, etc. commands
10925This is not guaranteed 100% secure, but it should block most attacks.
10926
10927							*:san* *:sandbox*
10928:san[dbox] {cmd}	Execute {cmd} in the sandbox.  Useful to evaluate an
10929			option that may have been set from a modeline, e.g.
10930			'foldexpr'.
10931
10932							*sandbox-option*
10933A few options contain an expression.  When this expression is evaluated it may
10934have to be done in the sandbox to avoid a security risk.  But the sandbox is
10935restrictive, thus this only happens when the option was set from an insecure
10936location.  Insecure in this context are:
10937- sourcing a .vimrc or .exrc in the current directory
10938- while executing in the sandbox
10939- value coming from a modeline
10940
10941Note that when in the sandbox and saving an option value and restoring it, the
10942option will still be marked as it was set in the sandbox.
10943
10944==============================================================================
1094512. Textlock							*textlock*
10946
10947In a few situations it is not allowed to change the text in the buffer, jump
10948to another window and some other things that might confuse or break what Vim
10949is currently doing.  This mostly applies to things that happen when Vim is
10950actually doing something else.  For example, evaluating the 'balloonexpr' may
10951happen any moment the mouse cursor is resting at some position.
10952
10953This is not allowed when the textlock is active:
10954	- changing the buffer text
10955	- jumping to another buffer or window
10956	- editing another file
10957	- closing a window or quitting Vim
10958	- etc.
10959
10960==============================================================================
1096113. Testing							*testing*
10962
10963Vim can be tested after building it, usually with "make test".
10964The tests are located in the directory "src/testdir".
10965
10966There are several types of tests added over time:
10967	test33.in		oldest, don't add any more
10968	test_something.in	old style tests
10969	test_something.vim	new style tests
10970
10971						*new-style-testing*
10972New tests should be added as new style tests.  These use functions such as
10973|assert_equal()| to keep the test commands and the expected result in one
10974place.
10975						*old-style-testing*
10976In some cases an old style test needs to be used.  E.g. when testing Vim
10977without the |+eval| feature.
10978
10979Find more information in the file src/testdir/README.txt.
10980
10981
10982 vim:tw=78:ts=8:ft=help:norl:
10983