summaryrefslogtreecommitdiff
path: root/runtime/doc/eval.txt
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/doc/eval.txt')
-rw-r--r--runtime/doc/eval.txt145
1 files changed, 82 insertions, 63 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index afa38a493..b813706a5 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 7.2. Last change: 2008 Nov 27
+*eval.txt* For Vim version 7.2. Last change: 2010 Jan 05
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -853,7 +853,8 @@ expr8[expr1] item of String or |List| *expr-[]* *E111*
If expr8 is a Number or String this results in a String that contains the
expr1'th single byte from expr8. expr8 is used as a String, expr1 as a
-Number. Note that this doesn't recognize multi-byte encodings.
+Number. This doesn't recognize multi-byte encodings, see |byteidx()| for
+an alternative.
Index zero gives the first character. This is like it works in C. Careful:
text column numbers start with one! Example, to get the character under the
@@ -878,8 +879,8 @@ expr8[expr1a : expr1b] substring or sublist *expr-[:]*
If expr8 is a Number or String this results in the substring with the bytes
from expr1a to and including expr1b. expr8 is used as a String, expr1a and
-expr1b are used as a Number. Note that this doesn't recognize multi-byte
-encodings.
+expr1b are used as a Number. This doesn't recognize multi-byte encodings, see
+|byteidx()| for computing the indexes.
If expr1a is omitted zero is used. If expr1b is omitted the length of the
string minus one is used.
@@ -895,7 +896,8 @@ Examples: >
:let c = name[-2:-2] " last but one byte of a string
:let s = line(".")[4:] " from the fifth byte to the end
:let s = s[:-3] " remove last two bytes
-
+<
+ *sublist* *slice*
If expr8 is a |List| this results in a new |List| with the items indicated by
the indexes expr1a and expr1b. This works like with a String, as explained
just above, except that indexes out of range cause an error. Examples: >
@@ -1190,6 +1192,7 @@ They can be used in:
Thus not in:
- other scripts sourced from this one
- mappings
+- menus
- etc.
Script variables can be used to avoid conflicts with global variable names.
@@ -1280,7 +1283,8 @@ v:beval_winnr The number of the window, over which the mouse pointer is. Only
valid while evaluating the 'balloonexpr' option.
*v:char* *char-variable*
-v:char Argument for evaluating 'formatexpr'.
+v:char Argument for evaluating 'formatexpr' and used for the typed
+ character when using <expr> in an abbreviation |map-<expr>|.
*v:charconvert_from* *charconvert_from-variable*
v:charconvert_from
@@ -1317,6 +1321,8 @@ v:count The count given for the last Normal mode command. Can be used
:map _x :<C-U>echo "the count is " . v:count<CR>
< Note: The <C-U> is required to remove the line range that you
get when typing ':' after a count.
+ When there are two counts, as in "3d2w", they are multiplied,
+ just like what happens in the command, "d6w" for the example.
Also used for evaluating the 'formatexpr' option.
"count" also works, for backwards compatibility.
@@ -1677,9 +1683,9 @@ ceil( {expr}) Float round {expr} up
changenr() Number current change number
char2nr( {expr}) Number ASCII value of first char in {expr}
cindent( {lnum}) Number C indent for line {lnum}
-clearmatches() None clear all matches
+clearmatches() none clear all matches
col( {expr}) Number column nr of cursor or mark
-complete({startcol}, {matches}) String set Insert mode completion
+complete( {startcol}, {matches}) none set Insert mode completion
complete_add( {expr}) Number add completion match
complete_check() Number check for key typed during completion
confirm( {msg} [, {choices} [, {default} [, {type}]]])
@@ -1704,7 +1710,7 @@ eval( {string}) any evaluate {string} into its value
eventhandler( ) Number TRUE if inside an event handler
executable( {expr}) Number 1 if executable {expr} exists
exists( {expr}) Number TRUE if {expr} exists
-extend({expr1}, {expr2} [, {expr3}])
+extend( {expr1}, {expr2} [, {expr3}])
List/Dict insert items of {expr2} into {expr1}
expand( {expr} [, {flag}]) String expand special keywords in {expr}
feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer
@@ -1746,7 +1752,7 @@ getftime( {fname}) Number last modification time of file
getftype( {fname}) String description of type of file {fname}
getline( {lnum}) String line {lnum} of current buffer
getline( {lnum}, {end}) List lines {lnum} to {end} of current buffer
-getloclist({nr}) List list of location list items
+getloclist( {nr}) List list of location list items
getmatches() List list of current matches
getpid() Number process ID of Vim
getpos( {expr}) List position of cursor, mark, etc.
@@ -1815,9 +1821,9 @@ matchlist( {expr}, {pat}[, {start}[, {count}]])
List match and submatches of {pat} in {expr}
matchstr( {expr}, {pat}[, {start}[, {count}]])
String {count}'th match of {pat} in {expr}
-max({list}) Number maximum value of items in {list}
-min({list}) Number minimum value of items in {list}
-mkdir({name} [, {path} [, {prot}]])
+max( {list}) Number maximum value of items in {list}
+min( {list}) Number minimum value of items in {list}
+mkdir( {name} [, {path} [, {prot}]])
Number create directory {name}
mode( [expr]) String current editing mode
nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum}
@@ -1829,7 +1835,7 @@ printf( {fmt}, {expr1}...) String format text
pumvisible() Number whether popup menu is visible
range( {expr} [, {max} [, {stride}]])
List items from {expr} to {max}
-readfile({fname} [, {binary} [, {max}]])
+readfile( {fname} [, {binary} [, {max}]])
List get list of lines from file {fname}
reltime( [{start} [, {end}]]) List get time value
reltimestr( {time}) String turn time value into a String
@@ -1850,7 +1856,7 @@ reverse( {list}) List reverse {list} in-place
round( {expr}) Float round off {expr}
search( {pattern} [, {flags} [, {stopline} [, {timeout}]]])
Number search for {pattern}
-searchdecl({name} [, {global} [, {thisblock}]])
+searchdecl( {name} [, {global} [, {thisblock}]])
Number search for variable declaration
searchpair( {start}, {middle}, {end} [, {flags} [, {skip} [...]]])
Number search for other end of start/end pair
@@ -1867,7 +1873,7 @@ setline( {lnum}, {line}) Number set line {lnum} to {line}
setloclist( {nr}, {list}[, {action}])
Number modify location list using {list}
setmatches( {list}) Number restore a list of matches
-setpos( {expr}, {list}) none set the {expr} position to {list}
+setpos( {expr}, {list}) Number set the {expr} position to {list}
setqflist( {list}[, {action}]) Number modify quickfix list using {list}
setreg( {n}, {v}[, {opt}]) Number set register to value and type
settabwinvar( {tabnr}, {winnr}, {varname}, {val}) set {varname} in window
@@ -1905,7 +1911,7 @@ synID( {lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col}
synIDattr( {synID}, {what} [, {mode}])
String attribute {what} of syntax ID {synID}
synIDtrans( {synID}) Number translated syntax ID of {synID}
-synstack({lnum}, {col}) List stack of syntax IDs at {lnum} and {col}
+synstack( {lnum}, {col}) List stack of syntax IDs at {lnum} and {col}
system( {expr} [, {input}]) String output of shell command/filter {expr}
tabpagebuflist( [{arg}]) List list of buffer numbers in tab page
tabpagenr( [{arg}]) Number number of current or last tab page
@@ -1929,10 +1935,10 @@ winheight( {nr}) Number height of window {nr}
winline() Number window line of the cursor
winnr( [{expr}]) Number number of current window
winrestcmd() String returns command to restore window sizes
-winrestview({dict}) None restore view of current window
+winrestview( {dict}) none restore view of current window
winsaveview() Dict save view of current window
winwidth( {nr}) Number width of window {nr}
-writefile({list}, {fname} [, {binary}])
+writefile( {list}, {fname} [, {binary}])
Number write list of lines to file {fname}
abs({expr}) *abs()*
@@ -2245,7 +2251,7 @@ complete({startcol}, {matches}) *complete()* *E785*
{matches} must be a |List|. Each |List| item is one match.
See |complete-items| for the kind of items that are possible.
Note that the after calling this function you need to avoid
- inserting anything that would completion to stop.
+ inserting anything that would cause completion to stop.
The match can be selected with CTRL-N and CTRL-P as usual with
Insert mode completion. The popup menu will appear if
specified, see |ins-completion-menu|.
@@ -2477,7 +2483,7 @@ empty({expr}) *empty()*
Return the Number 1 if {expr} is empty, zero otherwise.
A |List| or |Dictionary| is empty when it does not have any
items. A Number is empty when its value is zero.
- For a long |List| this is much faster then comparing the
+ For a long |List| this is much faster than comparing the
length with zero.
escape({string}, {chars}) *escape()*
@@ -3053,7 +3059,7 @@ getcharmod() *getcharmod()*
128 Macintosh only: command
Only the modifiers that have not been included in the
character itself are obtained. Thus Shift-a results in "A"
- with no modifier.
+ without a modifier.
getcmdline() *getcmdline()*
Return the current command-line. Only works when the command
@@ -3181,7 +3187,7 @@ getloclist({nr}) *getloclist()*
window {nr}. When {nr} is zero the current window is used.
For a location list window, the displayed location list is
returned. For an invalid window number {nr}, an empty list is
- returned. Otherwise, same as getqflist().
+ returned. Otherwise, same as |getqflist()|.
getmatches() *getmatches()*
Returns a |List| with all matches previously defined by
@@ -3478,7 +3484,9 @@ hostname() *hostname()*
iconv({expr}, {from}, {to}) *iconv()*
The result is a String, which is the text {expr} converted
from encoding {from} to encoding {to}.
- When the conversion fails an empty string is returned.
+ When the conversion completely fails an empty string is
+ returned. When some characters could not be converted they
+ are replaced with "?".
The encoding names are whatever the iconv() library function
can accept, see ":!man 3 iconv".
Most conversions require Vim to be compiled with the |+iconv|
@@ -3503,7 +3511,10 @@ indent({lnum}) The result is a Number, which is indent of line {lnum} in the
index({list}, {expr} [, {start} [, {ic}]]) *index()*
Return the lowest index in |List| {list} where the item has a
- value equal to {expr}.
+ value equal to {expr}. There is no automatic conversion, so
+ the String "4" is different from the Number 4. And the number
+ 4 is different from the Float 4.0. The value of 'ignorecase'
+ is not used here, case always matters.
If {start} is given then start looking at the item with index
{start} (may be negative for an item relative to the end).
When {ic} is given and it is non-zero, ignore case. Otherwise
@@ -3516,9 +3527,9 @@ index({list}, {expr} [, {start} [, {ic}]]) *index()*
input({prompt} [, {text} [, {completion}]]) *input()*
The result is a String, which is whatever the user typed on
- the command-line. The parameter is either a prompt string, or
- a blank string (for no prompt). A '\n' can be used in the
- prompt to start a new line.
+ the command-line. The {prompt} argument is either a prompt
+ string, or a blank string (for no prompt). A '\n' can be used
+ in the prompt to start a new line.
The highlighting set with |:echohl| is used for the prompt.
The input is entered just like a command-line, with the same
editing commands and mappings. There is a separate history
@@ -3528,8 +3539,9 @@ input({prompt} [, {text} [, {completion}]]) *input()*
: echo "Cheers!"
:endif
<
- If the optional {text} is present and not empty, this is used
- for the default reply, as if the user typed this. Example: >
+ If the optional {text} argument is present and not empty, this
+ is used for the default reply, as if the user typed this.
+ Example: >
:let color = input("Color? ", "white")
< The optional {completion} argument specifies the type of
@@ -3559,8 +3571,8 @@ input({prompt} [, {text} [, {completion}]]) *input()*
:endfunction
inputdialog({prompt} [, {text} [, {cancelreturn}]]) *inputdialog()*
- Like input(), but when the GUI is running and text dialogs are
- supported, a dialog window pops up to input the text.
+ Like |input()|, but when the GUI is running and text dialogs
+ are supported, a dialog window pops up to input the text.
Example: >
:let n = inputdialog("value for shiftwidth", &sw)
:if n != ""
@@ -3581,7 +3593,7 @@ inputlist({textlist}) *inputlist()*
above the first item a negative number is returned. When
clicking on the prompt one more than the length of {textlist}
is returned.
- Make sure {textlist} has less then 'lines' entries, otherwise
+ Make sure {textlist} has less than 'lines' entries, otherwise
it won't work. It's a good idea to put the entry number at
the start of the string. And put a prompt in the first item.
Example: >
@@ -3589,7 +3601,7 @@ inputlist({textlist}) *inputlist()*
\ '2. green', '3. blue'])
inputrestore() *inputrestore()*
- Restore typeahead that was saved with a previous inputsave().
+ Restore typeahead that was saved with a previous |inputsave()|.
Should be called the same number of times inputsave() is
called. Calling it more often is harmless though.
Returns 1 when there is nothing to restore, 0 otherwise.
@@ -3719,14 +3731,14 @@ libcall({libname}, {funcname}, {argument})
the DLL is not in the usual places.
For Unix: When compiling your own plugins, remember that the
object code must be compiled as position-independent ('PIC').
- {only in Win32 on some Unix versions, when the |+libcall|
+ {only in Win32 and some Unix versions, when the |+libcall|
feature is present}
Examples: >
:echo libcall("libc.so", "getenv", "HOME")
<
*libcallnr()*
libcallnr({libname}, {funcname}, {argument})
- Just like libcall(), but used for a function that returns an
+ Just like |libcall()|, but used for a function that returns an
int instead of a string.
{only in Win32 on some Unix versions, when the |+libcall|
feature is present}
@@ -3759,7 +3771,7 @@ line({expr}) The result is a Number, which is the line number of the file
< *last-position-jump*
This autocommand jumps to the last known position in a file
just after opening it, if the '" mark is set: >
- :au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
+ :au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
line2byte({lnum}) *line2byte()*
Return the byte count from the start of the buffer for line
@@ -3990,8 +4002,8 @@ matchdelete({id}) *matchdelete()* *E802* *E803*
be deleted in one operation by |clearmatches()|.
matchend({expr}, {pat}[, {start}[, {count}]]) *matchend()*
- Same as match(), but return the index of first character after
- the match. Example: >
+ Same as |match()|, but return the index of first character
+ after the match. Example: >
:echo matchend("testing", "ing")
< results in "7".
*strspn()* *strcspn()*
@@ -4001,15 +4013,15 @@ matchend({expr}, {pat}[, {start}[, {count}]]) *matchend()*
:let span = matchend(line, '[^a-zA-Z]')
< Except that -1 is returned when there are no matches.
- The {start}, if given, has the same meaning as for match(). >
+ The {start}, if given, has the same meaning as for |match()|. >
:echo matchend("testing", "ing", 2)
< results in "7". >
:echo matchend("testing", "ing", 5)
< result is "-1".
- When {expr} is a |List| the result is equal to match().
+ When {expr} is a |List| the result is equal to |match()|.
matchlist({expr}, {pat}[, {start}[, {count}]]) *matchlist()*
- Same as match(), but return a |List|. The first item in the
+ Same as |match()|, but return a |List|. The first item in the
list is the matched string, same as what matchstr() would
return. Following items are submatches, like "\1", "\2", etc.
in |:substitute|. When an optional submatch didn't match an
@@ -4023,7 +4035,7 @@ matchstr({expr}, {pat}[, {start}[, {count}]]) *matchstr()*
:echo matchstr("testing", "ing")
< results in "ing".
When there is no match "" is returned.
- The {start}, if given, has the same meaning as for match(). >
+ The {start}, if given, has the same meaning as for |match()|. >
:echo matchstr("testing", "ing", 2)
< results in "ing". >
:echo matchstr("testing", "ing", 5)
@@ -4497,9 +4509,9 @@ remote_send({server}, {string} [, {idvar}])
<
remove({list}, {idx} [, {end}]) *remove()*
Without {end}: Remove the item at {idx} from |List| {list} and
- return it.
+ return the item.
With {end}: Remove items from {idx} to {end} (inclusive) and
- return a list with these items. When {idx} points to the same
+ return a List with these items. When {idx} points to the same
item as {end} a list with one item is returned. When {end}
points to an item before {idx} this is an error.
See |list-index| for possible values of {idx} and {end}.
@@ -4750,7 +4762,7 @@ searchpair({start}, {middle}, {end} [, {flags} [, {skip}
*searchpairpos()*
searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
[, {stopline} [, {timeout}]]]])
- Same as searchpair(), but returns a |List| with the line and
+ Same as |searchpair()|, but returns a |List| with the line and
column position of the match. The first element of the |List|
is the line number and the second element is the byte index of
the column position of the match. If no match is found,
@@ -4870,7 +4882,8 @@ setpos({expr}, {list})
Does not change the jumplist.
"lnum" and "col" are the position in the buffer. The first
- column is 1. Use a zero "lnum" to delete a mark.
+ column is 1. Use a zero "lnum" to delete a mark. If "col" is
+ smaller than 1 then 1 is used.
The "off" number is only used when 'virtualedit' is set. Then
it is the offset in screen columns from the start of the
@@ -4989,7 +5002,7 @@ setwinvar({nr}, {varname}, {val}) *setwinvar()*
:call setwinvar(2, "myvar", "foobar")
shellescape({string} [, {special}]) *shellescape()*
- Escape {string} for use as shell command argument.
+ Escape {string} for use as a shell command argument.
On MS-Windows and MS-DOS, when 'shellslash' is not set, it
will enclose {string} in double quotes and double all double
quotes within {string}.
@@ -5051,15 +5064,20 @@ sort({list} [, {func}]) *sort()* *E702*
When {func} is given and it is one then case is ignored.
When {func} is a |Funcref| or a function name, this function
is called to compare items. The function is invoked with two
- items as argument and must return zero if they are equal, 1 if
- the first one sorts after the second one, -1 if the first one
- sorts before the second one. Example: >
+ items as argument and must return zero if they are equal, 1 or
+ bigger if the first one sorts after the second one, -1 or
+ smaller if the first one sorts before the second one.
+ Example: >
func MyCompare(i1, i2)
return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
endfunc
let sortedlist = sort(mylist, "MyCompare")
+< A shorter compare version for this specific simple case, which
+ ignores overflow: >
+ func MyCompare(i1, i2)
+ return a:i1 - a:i2
+ endfunc
<
-
*soundfold()*
soundfold({word})
Return the sound-folded equivalent of {word}. Uses the first
@@ -5508,10 +5526,7 @@ tempname() *tempname()* *temp-file-name*
is different for at least 26 consecutive calls. Example: >
:let tmpfile = tempname()
:exe "redir > " . tmpfile
-< For Unix, the file will be in a private directory (only
- accessible by the current user) to avoid security problems
- (e.g., a symlink attack or other people reading your file).
- When Vim exits the directory and all files in it are deleted.
+< For Unix, the file will be in a private directory |tempfile|.
For MS-Windows forward slashes are used when the 'shellslash'
option is set or when 'shellcmdflag' starts with '-'.
@@ -6575,15 +6590,19 @@ This would call the function "my_func_whizz(parameter)".
removed without effect. Removing any later item means
it will not be found. Thus the following example
works (an inefficient way to make a list empty): >
- :for item in mylist
- :call remove(mylist, 0)
- :endfor
+ for item in mylist
+ call remove(mylist, 0)
+ endfor
< Note that reordering the list (e.g., with sort() or
reverse()) may have unexpected effects.
Note that the type of each list item should be
identical to avoid errors for the type of {var}
changing. Unlet the variable at the end of the loop
- to allow multiple item types.
+ to allow multiple item types: >
+ for item in ["foo", ["bar"]]
+ echo item
+ unlet item " E706 without this
+ endfor
:for [{var1}, {var2}, ...] in {listlist}
:endfo[r]
@@ -6652,7 +6671,7 @@ This would call the function "my_func_whizz(parameter)".
:try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
<
*:cat* *:catch* *E603* *E604* *E605*
-:cat[ch] /{pattern}/ The following commands until the next ":catch",
+:cat[ch] /{pattern}/ The following commands until the next |:catch|,
|:finally|, or |:endtry| that belongs to the same
|:try| as the ":catch" are executed when an exception
matching {pattern} is being thrown and has not yet
@@ -6825,7 +6844,7 @@ This would call the function "my_func_whizz(parameter)".
:execute 'while i < 5 | echo i | let i = i + 1 | endwhile'
<
- *:comment*
+ *:exe-comment*
":execute", ":echo" and ":echon" cannot be followed by
a comment directly, because they see the '"' as the
start of a string. But, you can use '|' followed by a
@@ -7831,7 +7850,7 @@ a "E600: Missing :endtry" error message is given, see |except-single-line|.
Printing in Binary ~
>
- :" The function Nr2Bin() returns the Hex string of a number.
+ :" The function Nr2Bin() returns the binary string representation of a number.
:func Nr2Bin(nr)
: let n = a:nr
: let r = ""