# IdeaVim Builtin Functions Status This document tracks the progress of implementing Vim's builtin functions. There are a lot of functions, and it will take some time to implement them all. The builtin functions are listed below, grouped by functionality, as in `:help function-list`, with implementation status. * βœ… Indicates that the function has been fully implemented. * β˜‘οΈ Indicates that the function has been partially implemented. Perhaps some optional parameters are not currently supported. * πŸ…ΎοΈ Indicates that the function is not applicable to IdeaVim and there are no current plans to implement it. This is usually because it is related to a feature that is either not implemented by or not relevant to IdeaVim. For example, `lispindent()`, or quick fix window, terminal or syntax highlighting related functions. If there is no status icon, then the function is waiting to be implemented. Contributions are welcome! ## String manipulation See `:help string-functions`. | Status | Function | Description | |--------|---------------------|------------------------------------------------------------------| | βœ… | `nr2char()` | get a character by its number value | | | `list2str()` | get a character string from a list of numbers | | βœ… | `char2nr()` | get number value of a character | | | `str2list()` | get list of numbers from a string | | | `str2nr()` | convert a string to a Number | | | `str2float()` | convert a string to a Float | | | `printf()` | format a string according to % items | | βœ… | `escape()` | escape characters in a string with a '\' | | | `shellescape()` | escape a string for use with a shell command | | | `fnameescape()` | escape a file name for use with a Vim command | | | `tr()` | translate characters from one set to another | | | `strtrans()` | translate a string to make it printable | | | `keytrans()` | translate internal keycodes to a form that can be used by `:map` | | βœ… | `tolower()` | turn a string to lowercase | | βœ… | `toupper()` | turn a string to uppercase | | | `charclass()` | class of a character | | | `match()` | position where a pattern matches in a string | | | `matchbufline()` | all the matches of a pattern in a buffer | | | `matchend()` | position where a pattern match ends in a string | | | `matchfuzzy()` | fuzzy matches a string in a list of strings | | | `matchfuzzypos()` | fuzzy matches a string in a list of strings | | | `matchstr()` | match of a pattern in a string | | | `matchstrlist()` | all the matches of a pattern in a List of strings | | | `matchstrpos()` | match and positions of a pattern in a string | | | `matchlist()` | like `matchstr()` and also return submatches | | | `stridx()` | first index of a short string in a long string | | | `strridx()` | last index of a short string in a long string | | | `strlen()` | length of a string in bytes | | | `strcharlen()` | length of a string in characters | | | `strchars()` | number of characters in a string | | | `strutf16len()` | number of UTF-16 code units in a string | | | `strwidth()` | size of string when displayed | | | `strdisplaywidth()` | size of string when displayed, deals with tabs | | | `setcellwidths()` | set character cell width overrides | | | `getcellwidths()` | get character cell width overrides | | | `getcellpixels()` | get character cell pixel size | | βœ… | `reverse()` | reverse the order of characters in a string | | | `substitute()` | substitute a pattern match with a string | | β˜‘οΈ | `submatch()` | get a specific match in ":s" and substitute() | | | `strpart()` | get part of a string using byte index | | | `strcharpart()` | get part of a string using char index | | βœ… | `slice()` | take a slice of a string, using char index in Vim9 script | | | `strgetchar()` | get character from a string using char index | | | `expand()` | expand special keywords | | | `expandcmd()` | expand a command like done for `:edit` | | | `iconv()` | convert text from one encoding to another | | | `byteidx()` | byte index of a character in a string | | | `byteidxcomp()` | like byteidx() but count composing characters | | | `charidx()` | character index of a byte in a string | | | `utf16idx()` | UTF-16 index of a byte in a string | | βœ… | `repeat()` | repeat a string multiple times | | | `eval()` | evaluate a string expression | | | `execute()` | execute an Ex command and get the output | | | `win_execute()` | like execute() but in a specified window | | βœ… | `trim()` | trim characters from a string | | | `bindtextdomain()` | set message lookup translation base path | | | `gettext()` | lookup message translation | | | `ngettext()` | lookup single/plural message translation | | | `str2blob()` | convert a list of strings into a blob | | | `blob2str()` | convert a blob into a list of strings | ## List manipulation See `:help list-functions`. | Status | Function | Description | |--------|----------------|---------------------------------------------------------------| | βœ… | `get()` | get an item without error for wrong index | | βœ… | `len()` | number of items in a List | | βœ… | `empty()` | check if List is empty | | βœ… | `insert()` | insert an item somewhere in a List | | βœ… | `add()` | append an item to a List | | βœ… | `extend()` | append a List to a List | | βœ… | `extendnew()` | make a new List and append items | | βœ… | `remove()` | remove one or more items from a List | | βœ… | `copy()` | make a shallow copy of a List | | βœ… | `deepcopy()` | make a full copy of a List | | βœ… | `filter()` | remove selected items from a List | | βœ… | `map()` | change each List item | | βœ… | `mapnew()` | make a new List with changed items | | βœ… | `foreach()` | apply function to List items | | βœ… | `reduce()` | reduce a List to a value | | βœ… | `slice()` | take a slice of a List | | βœ… | `sort()` | sort a List | | βœ… | `reverse()` | reverse the order of items in a List | | βœ… | `uniq()` | remove copies of repeated adjacent items | | βœ… | `split()` | split a String into a List | | βœ… | `join()` | join List items into a String | | βœ… | `range()` | return a List with a sequence of numbers | | βœ… | `string()` | String representation of a List | | βœ… | `call()` | call a function with List as arguments | | βœ… | `index()` | index of a value in a List or Blob | | βœ… | `indexof()` | index in a List or Blob where an expression evaluates to true | | βœ… | `max()` | maximum value in a List | | βœ… | `min()` | minimum value in a List | | βœ… | `count()` | count number of times a value appears in a List | | βœ… | `repeat()` | repeat a List multiple times | | βœ… | `flatten()` | flatten a List | | βœ… | `flattennew()` | flatten a copy of a List | | βœ… | `items()` | get List of List index-value pairs | ## Dictionary manipulation See `:help dict-functions`. | Status | Function | Description | |--------|---------------|-----------------------------------------------| | βœ… | `get()` | get an entry without an error for a wrong key | | βœ… | `len()` | number of entries in a Dictionary | | βœ… | `has_key()` | check whether a key appears in a Dictionary | | βœ… | `empty()` | check if Dictionary is empty | | βœ… | `remove()` | remove an entry from a Dictionary | | βœ… | `extend()` | add entries from one Dictionary to another | | βœ… | `extendnew()` | make a new Dictionary and append items | | βœ… | `filter()` | remove selected entries from a Dictionary | | βœ… | `map()` | change each Dictionary entry | | βœ… | `mapnew()` | make a new Dictionary with changed items | | βœ… | `foreach()` | apply function to Dictionary items | | βœ… | `keys()` | get List of Dictionary keys | | βœ… | `values()` | get List of Dictionary values | | βœ… | `items()` | get List of Dictionary key-value pairs | | βœ… | `copy()` | make a shallow copy of a Dictionary | | βœ… | `deepcopy()` | make a full copy of a Dictionary | | βœ… | `string()` | String representation of a Dictionary | | βœ… | `max()` | maximum value in a Dictionary | | βœ… | `min()` | minimum value in a Dictionary | | βœ… | `count()` | count number of times a value appears | ## Floating point computation See `:help float-functions`. | Status | Function | Description | |--------|--------------|------------------------------------------| | βœ… | `float2nr()` | convert Float to Number | | βœ… | `abs()` | absolute value (also works for Number) | | βœ… | `round()` | round off | | βœ… | `ceil()` | round up | | βœ… | `floor()` | round down | | βœ… | `trunc()` | remove value after decimal point | | βœ… | `fmod()` | remainder of division | | βœ… | `exp()` | exponential | | βœ… | `log()` | natural logarithm (logarithm to base e) | | βœ… | `log10()` | logarithm to base 10 | | βœ… | `pow()` | value of x to the exponent y | | βœ… | `sqrt()` | square root | | βœ… | `sin()` | sine | | βœ… | `cos()` | cosine | | βœ… | `tan()` | tangent | | βœ… | `asin()` | arc sine | | βœ… | `acos()` | arc cosine | | βœ… | `atan()` | arc tangent | | βœ… | `atan2()` | arc tangent | | βœ… | `sinh()` | hyperbolic sine | | βœ… | `cosh()` | hyperbolic cosine | | βœ… | `tanh()` | hyperbolic tangent | | βœ… | `isinf()` | check for infinity | | βœ… | `isnan()` | check for not a number | ## Blob manipulation See `help blob-functions`. | Status | Function | Description | |--------|---------------|----------------------------------------| | | `blob2list()` | get a list of numbers from a blob | | | `list2blob()` | get a blob from a list of numbers | | | `reverse()` | reverse the order of numbers in a blob | ## Other computation See `:help bitwise-function`. | Status | Function | Description | |--------|------------|--------------------------------| | βœ… | `and()` | bitwise AND | | βœ… | `invert()` | bitwise invert | | βœ… | `or()` | bitwise OR | | βœ… | `xor()` | bitwise XOR | | | `sha256()` | SHA-256 hash | | | `rand()` | get a pseudo-random number | | | `srand()` | initialize seed used by rand() | ## Variables See `:help var-functions`. | Status | Function | Description | |--------|--------------------|-----------------------------------------------------| | | `instanceof()` | check if a variable is an instance of a given class | | | `type()` | type of a variable as a number | | | `typename()` | type of a variable as text | | | `islocked()` | check if a variable is locked | | βœ… | `funcref()` | get a Funcref for a function reference | | βœ… | `function()` | get a Funcref for a function name | | | `getbufvar()` | get a variable value from a specific buffer | | | `setbufvar()` | set a variable in a specific buffer | | | `getwinvar()` | get a variable from specific window | | | `gettabvar()` | get a variable from specific tab page | | | `gettabwinvar()` | get a variable from specific window & tab page | | | `setwinvar()` | set a variable in a specific window | | | `settabvar()` | set a variable in a specific tab page | | | `settabwinvar()` | set a variable in a specific window & tab page | | | `garbagecollect()` | possibly free memory | ## Cursor and mark position See `:help cursor-functions` and `:help mark-functions`. | Status | Function | Description | |--------|----------------------|-----------------------------------------------| | βœ… | `col()` | column number of the cursor or a mark | | | `virtcol()` | screen column of the cursor or a mark | | βœ… | `line()` | line number of the cursor or mark | | | `wincol()` | window column number of the cursor | | | `winline()` | window line number of the cursor | | | `cursor()` | position the cursor at a line/column | | | `screencol()` | get screen column of the cursor | | | `screenrow()` | get screen row of the cursor | | | `screenpos()` | screen row and col of a text character | | | `virtcol2col()` | byte index of a text character on screen | | | `getcurpos()` | get position of the cursor | | | `getpos()` | get position of cursor, mark, etc. | | | `setpos()` | set position of cursor, mark, etc. | | | `getmarklist()` | list of global/local marks | | | `byte2line()` | get line number at a specific byte count | | | `line2byte()` | byte count at a specific line | | | `diff_filler()` | get the number of filler lines above a line | | | `screenattr()` | get attribute at a screen line/row | | | `screenchar()` | get character code at a screen line/row | | | `screenchars()` | get character codes at a screen line/row | | | `screenstring()` | get string of characters at a screen line/row | | | `charcol()` | character number of the cursor or a mark | | | `getcharpos()` | get character position of cursor, mark, etc. | | | `setcharpos()` | set character position of cursor, mark, etc. | | | `getcursorcharpos()` | get character position of the cursor | | | `setcursorcharpos()` | set character position of the cursor | ## Working with text in the current buffer See `:help text-functions`. | Status | Function | Description | |--------|-------------------|-----------------------------------------------| | βœ… | `getline()` | get a line or list of lines from the buffer | | | `getregion()` | get a region of text from the buffer | | | `getregionpos()` | get a list of positions for a region | | | `setline()` | replace a line in the buffer | | | `append()` | append line or list of lines in the buffer | | | `indent()` | indent of a specific line | | | `cindent()` | indent according to C indenting | | | `lispindent()` | indent according to Lisp indenting | | | `nextnonblank()` | find next non-blank line | | | `prevnonblank()` | find previous non-blank line | | | `search()` | find a match for a pattern | | | `searchpos()` | find a match for a pattern | | | `searchcount()` | get number of matches before/after the cursor | | | `searchpair()` | find the other end of a start/skip/end | | | `searchpairpos()` | find the other end of a start/skip/end | | | `searchdecl()` | search for the declaration of a name | | | `getcharsearch()` | return character search information | | | `setcharsearch()` | set character search information | ## Working with text in another buffer | Status | Function | Description | |--------|-------------------|------------------------------------------------| | | `getbufline()` | get a list of lines from the specified buffer | | | `getbufoneline()` | get a one line from the specified buffer | | | `setbufline()` | replace a line in the specified buffer | | | `appendbufline()` | append a list of lines in the specified buffer | | | `deletebufline()` | delete lines from a specified buffer | ## System functions and manipulation of files See `:help system-functions` and `:help file-functions`. | Status | Function | Description | |--------|--------------------|-----------------------------------------------| | | `glob()` | expand wildcards | | | `globpath()` | expand wildcards in a number of directories | | | `glob2regpat()` | convert a glob pattern into a search pattern | | | `findfile()` | find a file in a list of directories | | | `finddir()` | find a directory in a list of directories | | | `resolve()` | find out where a shortcut points to | | | `fnamemodify()` | modify a file name | | | `pathshorten()` | shorten directory names in a path | | | `simplify()` | simplify a path without changing its meaning | | | `executable()` | check if an executable program exists | | | `exepath()` | full path of an executable program | | | `filereadable()` | check if a file can be read | | | `filewritable()` | check if a file can be written to | | | `getfperm()` | get the permissions of a file | | | `setfperm()` | set the permissions of a file | | | `getftype()` | get the kind of a file | | | `isabsolutepath()` | check if a path is absolute | | | `isdirectory()` | check if a directory exists | | | `getfsize()` | get the size of a file | | | `getcwd()` | get the current working directory | | | `haslocaldir()` | check if current window used | | | `tempname()` | get the name of a temporary file | | | `mkdir()` | create a new directory | | | `chdir()` | change current working directory | | | `delete()` | delete a file | | | `rename()` | rename a file | | | `system()` | get the result of a shell command as a string | | | `systemlist()` | get the result of a shell command as a list | | | `environ()` | get all environment variables | | | `getenv()` | get one environment variable | | | `setenv()` | set an environment variable | | | `hostname()` | name of the system | | | `readfile()` | read a file into a List of lines | | | `readblob()` | read a file into a Blob | | | `readdir()` | get a List of file names in a directory | | | `readdirex()` | get a List of file information in a directory | | | `writefile()` | write a List of lines or Blob into a file | | | `filecopy()` | copy a file {from} to {to} | ## Date and Time See `:help date-functions` and `:help time-functions`. | Status | Function | Description | |--------|------------------|---------------------------------------------| | | `getftime()` | get last modification time of a file | | | `localtime()` | get current time in seconds | | | `strftime()` | convert time to a string | | | `strptime()` | convert a date/time string to time | | | `reltime()` | get the current or elapsed time accurately | | | `reltimestr()` | convert reltime() result to a string | | | `reltimefloat()` | convert reltime() result to a Float | ## Autocmds See `:help autocmd-functions`. | Status | Function | Description | |--------|--------------------|--------------------------------------| | | `autocmd_add()` | add a list of autocmds and groups | | | `autocmd_delete()` | delete a list of autocmds and groups | | | `autocmd_get()` | return a list of autocmds | ## Buffers, windows and the argument list See `:help buffer-functions`, `:help window-functions` and `:help arg-functions`. | Status | Function | Description | |--------|-------------------------|----------------------------------------------| | | `argc()` | number of entries in the argument list | | | `argidx()` | current position in the argument list | | | `arglistid()` | get id of the argument list | | | `argv()` | get one entry from the argument list | | | `bufadd()` | add a file to the list of buffers | | | `bufexists()` | check if a buffer exists | | | `buflisted()` | if a buffer exists and is listed | | | `bufload()` | ensure a buffer is loaded | | | `bufloaded()` | check if a buffer exists and is loaded | | | `bufname()` | get the name of a specific buffer | | | `bufnr()` | get the buffer number of a specific buffer | | | `tabpagebuflist()` | return List of buffers in a tab page | | | `tabpagenr()` | get the number of a tab page | | | `tabpagewinnr()` | like `winnr()` for a specified tab page | | | `winnr()` | get the window number for the current window | | | `bufwinid()` | get the window ID of a specific buffer | | | `bufwinnr()` | get the window number of a specific buffer | | | `winbufnr()` | get the buffer number of a specific window | | | `listener_add()` | add a callback to listen to changes | | | `listener_flush()` | invoke listener callbacks | | | `listener_remove()` | remove a listener callback | | | `win_findbuf()` | find windows containing a buffer | | | `win_getid()` | get window ID of a window | | | `win_gettype()` | get type of window | | | `win_gotoid()` | go to window with ID | | | `win_id2tabwin()` | get tab and window nr from window ID | | | `win_id2win()` | get window nr from window ID | | | `win_move_separator()` | move window vertical separator | | | `win_move_statusline()` | move window status line | | | `win_splitmove()` | move window to a split of another window | | | `getbufinfo()` | get a list with buffer information | | | `gettabinfo()` | get a list with tab page information | | | `getwininfo()` | get a list with window information | | | `getchangelist()` | get a list of change list entries | | | `getjumplist()` | get a list of jump list entries | | | `swapfilelist()` | list of existing swap files in 'directory' | | | `swapinfo()` | information about a swap file | | | `swapname()` | get the swap file path of a buffer | ## Command line: See `:help command-line-functions`. | Status | Function | Description | |--------|---------------------|-------------------------------------------------------| | | `getcmdcomplpat()` | get completion pattern of the current command | | | `getcmdcompltype()` | get the type of the current command line completion | | | `getcmdline()` | get the current command line | | | `getcmdpos()` | get position of the cursor in the command line | | | `getcmdscreenpos()` | get screen position of the cursor in the command line | | | `setcmdline()` | set the current command line | | | `setcmdpos()` | set position of the cursor in the command line | | βœ… | `getcmdtype()` | return the current command-line type | | | `getcmdwintype()` | return the current command-line window type | | | `getcompletion()` | list of command-line completion matches | | | `fullcommand()` | get full command name | ## Quickfix and location lists See `:help quickfix-functions`. | Status | Function | Description | |--------|----------------|-----------------------------| | | `getqflist()` | list of quickfix errors | | | `setqflist()` | modify a quickfix list | | | `getloclist()` | list of location list items | | | `setloclist()` | modify a location list | ## Insert mode completion: See `:help completion-functions`. | Status | Function | Description | |--------|--------------------|--------------------------------------------------------| | | `complete()` | set found matches | | | `complete_add()` | add to found matches | | | `complete_check()` | check if completion should be aborted | | | `complete_info()` | get current completion information | | | `complete_match()` | get insert completion start match col and trigger text | | βœ… | `pumvisible()` | check if the popup menu is displayed | | | `pum_getpos()` | position and size of popup menu if visible | ## Folding See `:help folding-functions`. | Status | Function | Description | |--------|--------------------|-----------------------------------------------| | | `foldclosed()` | check for a closed fold at a specific line | | | `foldclosedend()` | like `foldclosed()` but return the last line | | | `foldlevel()` | check for the fold level at a specific line | | | `foldtext()` | generate the line displayed for a closed fold | | | `foldtextresult()` | get the text displayed for a closed fold | ## Syntax and highlighting: See `:help syntax-functions` and `:help highlighting-functions`. | Status | Function | Description | |--------|------------------|---------------------------------------------------------------------| | | `clearmatches()` | clear all matches defined by `matchadd()` and the `:match` commands | | | `getmatches()` | get all matches defined by `matchadd()` and the `:match` commands | | | `hlexists()` | check if a highlight group exists | | | | `hlget()` | get highlight group attributes | | | | `hlset()` | set highlight group attributes | | | | `hlID()` | get ID of a highlight group | | | | `synID()` | get syntax ID at a specific position | | | | `synIDattr()` | get a specific attribute of a syntax ID | | | | `synIDtrans()` | get translated syntax ID | | | | `synstack()` | get list of syntax IDs at a specific position | | | | `synconcealed()` | get info about (syntax) concealing | | | | `diff_hlID()` | get highlight ID for diff mode at a position | | | | `matchadd()` | define a pattern to highlight (a "match") | | | | `matchaddpos()` | define a list of positions to highlight | | | | `matcharg()` | get info about `:match` arguments | | | `matchdelete()` | delete a match defined by `matchadd()` or a `:match` command | | | `setmatches()` | restore a list of matches saved by `getmatches()` | ## Spelling See `:help spell-functions`. | Status | Function | Description | |--------|------------------|----------------------------------------------| | | `spellbadword()` | locate badly spelled word at or after cursor | | | `spellsuggest()` | return suggested spelling corrections | | | `soundfold()` | return the sound-a-like equivalent of a word | ## History See `:help history-functions`. | Status | Function | Description | |--------|-------------|-------------------------------------| | | `histadd()` | add an item to a history | | | `histdel()` | delete an item from a history | | | `histget()` | get an item from a history | | | `histnr()` | get highest index of a history list | ## Interactive See `:help interactive-functions` | Status | Function | Description | |--------|-------------------|---------------------------------------------| | | `browse()` | put up a file requester | | | `browsedir()` | put up a directory requester | | | `confirm()` | let the user make a choice | | | `getchar()` | get a character from the user | | | `getcharstr()` | get a character from the user as a string | | | `getcharmod()` | get modifiers for the last typed character | | | `getmousepos()` | get last known mouse position | | | `getmouseshape()` | get name of the current mouse shape | | | `echoraw()` | output characters as-is | | | `feedkeys()` | put characters in the typeahead queue | | | `input()` | get a line from the user | | | `inputlist()` | let the user pick an entry from a list | | | `inputsecret()` | get a line from the user without showing it | | | `inputdialog()` | get a line from the user in a dialog | | | `inputsave()` | save and clear typeahead | | | `inputrestore()` | restore typeahead | ## GUI: See `:help gui-functions`. | Status | Function | Description | |--------|---------------------|-------------------------------------| | | `getfontname()` | get name of current font being used | | | `getwinpos()` | position of the Vim window | | | `getwinposx()` | X position of the Vim window | | | `getwinposy()` | Y position of the Vim window | | | `balloon_show()` | set the balloon content | | | `balloon_split()` | split a message for a balloon | | | `balloon_gettext()` | get the text in the balloon | ## Vim server See `:help server-functions`. | Status | Function | Description | |--------|------------------------|----------------------------------------------| | | `serverlist()` | return the list of server names | | | `remote_startserver()` | run a server | | | `remote_send()` | send command characters to a Vim server | | | `remote_expr()` | evaluate an expression in a Vim server | | | `server2client()` | send a reply to a client of a Vim server | | | `remote_peek()` | check if there is a reply from a Vim server | | | `remote_read()` | read a reply from a Vim server | | | `foreground()` | move the Vim window to the foreground | | | `remote_foreground()` | move the Vim server window to the foreground | ## Window size and position See `:help window-size-functions`. | Status | Function | Description | |--------|-------------------|----------------------------------------| | | `winheight()` | get height of a specific window | | | `winwidth()` | get width of a specific window | | | `win_screenpos()` | get screen position of a window | | | `winlayout()` | get layout of windows in a tab page | | | `winrestcmd()` | return command to restore window sizes | | | `winsaveview()` | get view of current window | | | `winrestview()` | restore saved view of current window | ## Mappings and Menus See `:help mapping-functions`. | Status | Function | Description | |--------|---------------------|------------------------------------| | | `digraph_get()` | get `digraph` | | | `digraph_getlist()` | get all `digraph`s | | | `digraph_set()` | register `digraph` | | | `digraph_setlist()` | register multiple `digraph`s | | | `hasmapto()` | check if a mapping exists | | | `mapcheck()` | check if a matching mapping exists | | | `maparg()` | get rhs of a mapping | | | `maplist()` | get list of all mappings | | | `mapset()` | restore a mapping | | | `menu_info()` | get information about a menu item | | | `wildmenumode()` | check if the wildmode is active | ## Testing See `:help test-functions`. | Status | Function | Description | |--------|------------------------------|--------------------------------------------------| | | `assert_equal()` | assert that two expressions values are equal | | | `assert_equalfile()` | assert that two file contents are equal | | | `assert_notequal()` | assert that two expressions values are not equal | | | `assert_inrange()` | assert that an expression is inside a range | | | `assert_match()` | assert that a pattern matches the value | | | `assert_notmatch()` | assert that a pattern does not match the value | | | `assert_false()` | assert that an expression is false | | | `assert_true()` | assert that an expression is true | | | `assert_exception()` | assert that a command throws an exception | | | `assert_beeps()` | assert that a command beeps | | | `assert_nobeep()` | assert that a command does not cause a beep | | | `assert_fails()` | assert that a command fails | | | `assert_report()` | report a test failure | | | `test_alloc_fail()` | make memory allocation fail | | | `test_autochdir()` | enable `'autochdir'` during startup | | | `test_override()` | test with Vim internal overrides | | | `test_garbagecollect_now()` | free memory right now | | | `test_garbagecollect_soon()` | set a flag to free memory soon | | | `test_getvalue()` | get value of an internal variable | | | `test_gui_event()` | generate a GUI event for testing | | | `test_ignore_error()` | ignore a specific error message | | | `test_mswin_event()` | generate an MS-Windows event | | | `test_null_blob()` | return a null Blob | | | `test_null_channel()` | return a null Channel | | | `test_null_dict()` | return a null Dict | | | `test_null_function()` | return a null Funcref | | | `test_null_job()` | return a null Job | | | `test_null_list()` | return a null List | | | `test_null_partial()` | return a null Partial function | | | `test_null_string()` | return a null String | | | `test_null_tuple()` | return a null Tuple | | | `test_settime()` | set the time Vim uses internally | | | `test_setmouse()` | set the mouse position | | | `test_feedinput()` | add key sequence to input buffer | | | `test_option_not_set()` | reset flag indicating option was set | | | `test_refcount()` | return an expression's reference count | | | `test_srand_seed()` | set the seed value for srand() | | | `test_unknown()` | return a value with unknown type | | | `test_void()` | return a value with void type | ## Inter-process communication: See `:help channel-functions`. | Status | Function | Description | |--------|-------------------|-----------------------------------------| | | `ch_canread()` | check if there is something to read | | | `ch_open()` | open a channel | | | `ch_close()` | close a channel | | | `ch_close_in()` | close the in part of a channel | | | `ch_read()` | read a message from a channel | | | `ch_readblob()` | read a Blob from a channel | | | `ch_readraw()` | read a raw message from a channel | | | `ch_sendexpr()` | send a JSON message over a channel | | | `ch_sendraw()` | send a raw message over a channel | | | `ch_evalexpr()` | evaluate an expression over channel | | | `ch_evalraw()` | evaluate a raw string over channel | | | `ch_status()` | get status of a channel | | | `ch_getbufnr()` | get the buffer number of a channel | | | `ch_getjob()` | get the job associated with a channel | | | `ch_info()` | get channel information | | | `ch_log()` | write a message in the channel log file | | | `ch_logfile()` | set the channel log file | | | `ch_setoptions()` | set the options for a channel | | | `json_encode()` | encode an expression to a JSON string | | | `json_decode()` | decode a JSON string to Vim types | | | `js_encode()` | encode an expression to a JSON string | | | `js_decode()` | decode a JSON string to Vim types | | | `base64_encode()` | encode a blob into a base64 string | | | `base64_decode()` | decode a base64 string into a blob | | | `err_teapot()` | give error 418 or 503 | ## Jobs See `:help job-functions`. | Status | Function | Description | |--------|--------------------|-------------------------------| | | `job_start()` | start a job | | | `job_stop()` | stop a job | | | `job_status()` | get the status of a job | | | `job_getchannel()` | get the channel used by a job | | | `job_info()` | get information about a job | | | `job_setoptions()` | set options for a job | ## Signs See `:help sign-functions`. | Status | Function | Description | |--------|----------------------|-----------------------------| | | `sign_define()` | define or update a sign | | | `sign_getdefined()` | get a list of defined signs | | | `sign_getplaced()` | get a list of placed signs | | | `sign_jump()` | jump to a sign | | | `sign_place()` | place a sign | | | `sign_placelist()` | place a list of signs | | | `sign_undefine()` | undefine a sign | | | `sign_unplace()` | unplace a sign | | | `sign_unplacelist()` | unplace a list of signs | ## Terminal window See `:help terminal-functions`. | Status | Function | Description | |--------|------------------------|----------------------------------------------| | | `term_start()` | open a terminal window and run a job | | | `term_list()` | get the list of terminal buffers | | | `term_sendkeys()` | send keystrokes to a terminal | | | `term_wait()` | wait for screen to be updated | | | `term_getjob()` | get the job associated with a terminal | | | `term_scrape()` | get row of a terminal screen | | | `term_getline()` | get a line of text from a terminal | | | `term_getattr()` | get the value of attribute {what} | | | `term_getcursor()` | get the cursor position of a terminal | | | `term_getscrolled()` | get the scroll count of a terminal | | | `term_getaltscreen()` | get the alternate screen flag | | | `term_getsize()` | get the size of a terminal | | | `term_getstatus()` | get the status of a terminal | | | `term_gettitle()` | get the title of a terminal | | | `term_gettty()` | get the tty name of a terminal | | | `term_setansicolors()` | set 16 ANSI colors, used for GUI | | | `term_getansicolors()` | get 16 ANSI colors, used for GUI | | | `term_dumpdiff()` | display difference between two screen dumps | | | `term_dumpload()` | load a terminal screen dump in a window | | | `term_dumpwrite()` | dump contents of a terminal screen to a file | | | `term_setkill()` | set signal to stop job in a terminal | | | `term_setrestore()` | set command to restore a terminal | | | `term_setsize()` | set the size of a terminal | | | `term_setapi()` | set terminal JSON API function name prefix | ## Popup window See `:help popup-window-functions`. | Status | Function | Description | |--------|------------------------|-----------------------------------------------------------------------------------| | | `popup_create()` | create popup centered in the screen | | | `popup_atcursor()` | create popup just above the cursor position, closes when the cursor moves away | | | `popup_beval()` | at the position indicated by v:beval_ variables, closes when the mouse moves away | | | `popup_notification()` | show a notification for three seconds | | | `popup_dialog()` | create popup centered with padding and border | | | `popup_menu()` | prompt for selecting an item from a list | | | `popup_hide()` | hide a popup temporarily | | | `popup_show()` | show a previously hidden popup | | | `popup_move()` | change the position and size of a popup | | | `popup_setoptions()` | override options of a popup | | | `popup_settext()` | replace the popup buffer contents | | | `popup_setbuf()` | set the popup buffer | | | `popup_close()` | close one popup | | | `popup_clear()` | close all popups | | | `popup_filter_menu()` | select from a list of items | | | `popup_filter_yesno()` | block until 'y' or 'n' is pressed | | | `popup_getoptions()` | get current options for a popup | | | `popup_getpos()` | get actual position and size of a popup | | | `popup_findecho()` | get window ID for popup used for `:echowindow` | | | `popup_findinfo()` | get window ID for popup info window | | | `popup_findpreview()` | get window ID for popup preview window | | | `popup_list()` | get list of all popup window IDs | | | `popup_locate()` | get popup window ID from its screen position | ## Timers See `:help timer-functions`. | Status | Function | Description | |--------|-------------------|------------------------------| | | `timer_start()` | create a timer | | | `timer_pause()` | pause or unpause a timer | | | `timer_stop()` | stop a timer | | | `timer_stopall()` | stop all timers | | | `timer_info()` | get information about timers | ## Tags See `:help tag-functions`. | Status | Function | Description | |--------|-----------------|----------------------------------| | | `taglist()` | get list of matching tags | | | `tagfiles()` | get a list of tags files | | | `gettagstack()` | get the tag stack of a window | | | `settagstack()` | modify the tag stack of a window | ## Prompt Buffer See `:help promptbuffer-functions`. | Status | Function | Description | |--------|-------------------------|--------------------------------------------| | | `prompt_getprompt()` | get the effective prompt text for a buffer | | | `prompt_setcallback()` | set prompt callback for a buffer | | | `prompt_setinterrupt()` | set interrupt callback for a buffer | | | `prompt_setprompt()` | set the prompt text for a buffer | ## Registers See `:help register-functions`. | Status | Function | Description | |--------|-------------------|------------------------------------------------| | | `getreg()` | get contents of a register | | | `getreginfo()` | get information about a register | | | `getregtype()` | get type of a register | | | `setreg()` | set contents and type of a register | | | `reg_executing()` | return the name of the register being executed | | | `reg_recording()` | return the name of the register being recorded | ## Text Properties See `:help text-property-functions`. | Status | Function | Description | |--------|----------------------|--------------------------------------------| | | `prop_add()` | attach a property at a position | | | `prop_add_list()` | attach a property at multiple positions | | | `prop_clear()` | remove all properties from a line or lines | | | `prop_find()` | search for a property | | | `prop_list()` | return a list of all properties in a line | | | `prop_remove()` | remove a property from a line | | | `prop_type_add()` | add/define a property type | | | `prop_type_change()` | change properties of a type | | | `prop_type_delete()` | remove a text property type | | | `prop_type_get()` | return the properties of a type | | | `prop_type_list()` | return a list of all property types | ## Sound See `:help sound-functions`. | Status | Function | Description | |--------|---------------------|-------------------------| | | `sound_clear()` | stop playing all sounds | | | `sound_playevent()` | play an event's sound | | | `sound_playfile()` | play a sound file | | | `sound_stop()` | stop playing a sound | ## Various See `:help various-functions`. | Status | Function | Description | |--------|-----------------------|------------------------------------------------| | | `mode()` | get current editing mode | | | `state()` | get current busy state | | | `visualmode()` | last visual mode used | | β˜‘οΈ | `exists()` | check if a variable, function, etc. exists | | | `exists_compiled()` | like exists() but check at compile time | | β˜‘οΈ | `has()` | check if a feature is supported in Vim | | | `changenr()` | return number of most recent change | | | `cscope_connection()` | check if a cscope connection exists | | | `did_filetype()` | check if a FileType autocommand was used | | | `diff()` | diff two Lists of strings | | | `eventhandler()` | check if invoked by an event handler | | | `getcellpixels()` | get List of cell pixel size | | | `getpid()` | get process ID of Vim | | | `getscriptinfo()` | get list of sourced vim scripts | | | `getimstatus()` | check if IME status is active | | | `interrupt()` | interrupt script execution | | | `windowsversion()` | get MS-Windows version | | | `terminalprops()` | properties of the terminal | | | `libcall()` | call a function in an external library | | | `libcallnr()` | idem, returning a number | | | `undofile()` | get the name of the undo file | | | `undotree()` | return the state of the undo tree for a buffer | | | `shiftwidth()` | effective value of 'shiftwidth' | | | `wordcount()` | get byte/word/char count of buffer | | | `id()` | get unique string for item to use as a key | | | `luaeval()` | evaluate `Lua` expression | | | `mzeval()` | evaluate `MzScheme` expression | | | `perleval()` | evaluate Perl expression (`+perl`) | | | `py3eval()` | evaluate Python expression (`+python3`) | | | `pyeval()` | evaluate Python expression (`+python`) | | | `pyxeval()` | evaluate `python_x` expression | | | `rubyeval()` | evaluate `Ruby` expression | | | `debugbreak()` | interrupt a program being debugged | MacVim-specific functions | Status | Function | Description | |--------|--------------------|------------------------------------------------| | | `showdefinition()` | look up and show definition of provided string |