multi

Neovim Lua API Reference

This document contains type stubs and API references for Neovim's Lua API.

4,466 stars

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/vim/SKILL.md --create-dirs "https://raw.githubusercontent.com/ThePrimeagen/99/main/.agents/skills/vim/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/vim/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How Neovim Lua API Reference Compares

Feature / AgentNeovim Lua API ReferenceStandard Approach
Platform SupportmultiLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

This document contains type stubs and API references for Neovim's Lua API.

Which AI agents support this skill?

This skill is compatible with multi.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Neovim Lua API Reference

This document contains type stubs and API references for Neovim's Lua API.
Use this as a reference when writing Neovim plugins or configurations in Lua.

---

## api

The following are type stubs for all the functions available on `vim.api.*`. Prefer these functions where possible.

```lua
vim.api = {}
vim.api.nvim__buf_debug_extmarks(buffer, keys, dot) 
vim.api.nvim__buf_stats(buffer) 
vim.api.nvim__complete_set(index, opts) 
vim.api.nvim__get_lib_dir() 
vim.api.nvim__get_runtime(pat, all, opts) 
vim.api.nvim__id(obj) 
vim.api.nvim__id_array(arr) 
vim.api.nvim__id_dict(dct) 
vim.api.nvim__id_float(flt) 
vim.api.nvim__inspect_cell(grid, row, col) 
vim.api.nvim__invalidate_glyph_cache() 
vim.api.nvim__ns_get(ns_id) 
vim.api.nvim__ns_set(ns_id, opts) 
vim.api.nvim__redraw(opts) 
vim.api.nvim__runtime_inspect() 
vim.api.nvim__screenshot(path) 
vim.api.nvim__stats() 
vim.api.nvim__unpack(str) 
vim.api.nvim_buf_add_highlight(buffer, ns_id, hl_group, line, col_start, col_end) 
vim.api.nvim_buf_attach(buffer, send_buffer, opts) 
vim.api.nvim_buf_call(buffer, fun) 
vim.api.nvim_buf_clear_highlight(buffer, ns_id, line_start, line_end) 
vim.api.nvim_buf_clear_namespace(buffer, ns_id, line_start, line_end) 
vim.api.nvim_buf_create_user_command(buffer, name, command, opts) 
vim.api.nvim_buf_del_extmark(buffer, ns_id, id) 
vim.api.nvim_buf_del_keymap(buffer, mode, lhs) 
vim.api.nvim_buf_del_mark(buffer, name) 
vim.api.nvim_buf_del_user_command(buffer, name) 
vim.api.nvim_buf_del_var(buffer, name) 
vim.api.nvim_buf_delete(buffer, opts) 
vim.api.nvim_buf_get_changedtick(buffer) 
vim.api.nvim_buf_get_commands(buffer, opts) 
vim.api.nvim_buf_get_extmark_by_id(buffer, ns_id, id, opts) 
vim.api.nvim_buf_get_extmarks(buffer, ns_id, start, end_, opts) 
vim.api.nvim_buf_get_keymap(buffer, mode) 
vim.api.nvim_buf_get_lines(buffer, start, end_, strict_indexing) 
vim.api.nvim_buf_get_mark(buffer, name) 
vim.api.nvim_buf_get_name(buffer) 
vim.api.nvim_buf_get_number(buffer) 
vim.api.nvim_buf_get_offset(buffer, index) 
vim.api.nvim_buf_get_option(buffer, name) 
vim.api.nvim_buf_get_text(buffer, start_row, start_col, end_row, end_col, opts) 
vim.api.nvim_buf_get_var(buffer, name) 
vim.api.nvim_buf_is_loaded(buffer) 
vim.api.nvim_buf_is_valid(buffer) 
vim.api.nvim_buf_line_count(buffer) 
vim.api.nvim_buf_set_extmark(buffer, ns_id, line, col, opts) 
vim.api.nvim_buf_set_keymap(buffer, mode, lhs, rhs, opts) 
vim.api.nvim_buf_set_lines(buffer, start, end_, strict_indexing, replacement) 
vim.api.nvim_buf_set_mark(buffer, name, line, col, opts) 
vim.api.nvim_buf_set_name(buffer, name) 
vim.api.nvim_buf_set_option(buffer, name, value) 
vim.api.nvim_buf_set_text(buffer, start_row, start_col, end_row, end_col, replacement) 
vim.api.nvim_buf_set_var(buffer, name, value) 
vim.api.nvim_buf_set_virtual_text(buffer, src_id, line, chunks, opts) 
vim.api.nvim_call_dict_function(dict, fn, args) 
vim.api.nvim_call_function(fn, args) 
vim.api.nvim_chan_send(chan, data) 
vim.api.nvim_clear_autocmds(opts) 
vim.api.nvim_cmd(cmd, opts) 
vim.api.nvim_command(command) 
vim.api.nvim_command_output(command) 
vim.api.nvim_create_augroup(name, opts) 
vim.api.nvim_create_autocmd(event, opts) 
vim.api.nvim_create_buf(listed, scratch) 
vim.api.nvim_create_namespace(name) 
vim.api.nvim_create_user_command(name, command, opts) 
vim.api.nvim_del_augroup_by_id(id) 
vim.api.nvim_del_augroup_by_name(name) 
vim.api.nvim_del_autocmd(id) 
vim.api.nvim_del_current_line() 
vim.api.nvim_del_keymap(mode, lhs) 
vim.api.nvim_del_mark(name) 
vim.api.nvim_del_user_command(name) 
vim.api.nvim_del_var(name) 
vim.api.nvim_echo(chunks, history, opts) 
vim.api.nvim_err_write(str) 
vim.api.nvim_err_writeln(str) 
vim.api.nvim_eval(expr) 
vim.api.nvim_eval_statusline(str, opts) 
vim.api.nvim_exec(src, output) 
vim.api.nvim_exec2(src, opts) 
vim.api.nvim_exec_autocmds(event, opts) 
vim.api.nvim_feedkeys(keys, mode, escape_ks) 
vim.api.nvim_get_all_options_info() 
vim.api.nvim_get_autocmds(opts) 
vim.api.nvim_get_chan_info(chan) 
vim.api.nvim_get_color_by_name(name) 
vim.api.nvim_get_color_map() 
vim.api.nvim_get_commands(opts) 
vim.api.nvim_get_context(opts) 
vim.api.nvim_get_current_buf() 
vim.api.nvim_get_current_line() 
vim.api.nvim_get_current_tabpage() 
vim.api.nvim_get_current_win() 
vim.api.nvim_get_hl(ns_id, opts) 
vim.api.nvim_get_hl_by_id(hl_id, rgb) 
vim.api.nvim_get_hl_by_name(name, rgb) 
vim.api.nvim_get_hl_id_by_name(name) 
vim.api.nvim_get_hl_ns(opts) 
vim.api.nvim_get_keymap(mode) 
vim.api.nvim_get_mark(name, opts) 
vim.api.nvim_get_mode() 
vim.api.nvim_get_namespaces() 
vim.api.nvim_get_option(name) 
vim.api.nvim_get_option_info(name) 
vim.api.nvim_get_option_info2(name, opts) 
vim.api.nvim_get_option_value(name, opts) 
vim.api.nvim_get_proc(pid) 
vim.api.nvim_get_proc_children(pid) 
vim.api.nvim_get_runtime_file(name, all) 
vim.api.nvim_get_var(name) 
vim.api.nvim_get_vvar(name) 
vim.api.nvim_input(keys) 
vim.api.nvim_input_mouse(button, action, modifier, grid, row, col) 
vim.api.nvim_list_bufs() 
vim.api.nvim_list_chans() 
vim.api.nvim_list_runtime_paths() 
vim.api.nvim_list_tabpages() 
vim.api.nvim_list_uis() 
vim.api.nvim_list_wins() 
vim.api.nvim_load_context(dict) 
vim.api.nvim_notify(msg, log_level, opts) 
vim.api.nvim_open_term(buffer, opts) 
vim.api.nvim_open_win(buffer, enter, config) 
vim.api.nvim_out_write(str) 
vim.api.nvim_parse_cmd(str, opts) 
vim.api.nvim_parse_expression(expr, flags, highlight) 
vim.api.nvim_paste(data, crlf, phase) 
vim.api.nvim_put(lines, type, after, follow) 
vim.api.nvim_replace_termcodes(str, from_part, do_lt, special) 
vim.api.nvim_select_popupmenu_item(item, insert, finish, opts) 
vim.api.nvim_set_current_buf(buffer) 
vim.api.nvim_set_current_dir(dir) 
vim.api.nvim_set_current_line(line) 
vim.api.nvim_set_current_tabpage(tabpage) 
vim.api.nvim_set_current_win(window) 
vim.api.nvim_set_decoration_provider(ns_id, opts) 
vim.api.nvim_set_hl(ns_id, name, val) 
vim.api.nvim_set_hl_ns(ns_id) 
vim.api.nvim_set_hl_ns_fast(ns_id) 
vim.api.nvim_set_keymap(mode, lhs, rhs, opts) 
vim.api.nvim_set_option(name, value) 
vim.api.nvim_set_option_value(name, value, opts) 
vim.api.nvim_set_var(name, value) 
vim.api.nvim_set_vvar(name, value) 
vim.api.nvim_strwidth(text) 
vim.api.nvim_tabpage_del_var(tabpage, name) 
vim.api.nvim_tabpage_get_number(tabpage) 
vim.api.nvim_tabpage_get_var(tabpage, name) 
vim.api.nvim_tabpage_get_win(tabpage) 
vim.api.nvim_tabpage_is_valid(tabpage) 
vim.api.nvim_tabpage_list_wins(tabpage) 
vim.api.nvim_tabpage_set_var(tabpage, name, value) 
vim.api.nvim_tabpage_set_win(tabpage, win) 
vim.api.nvim_win_call(window, fun) 
vim.api.nvim_win_close(window, force) 
vim.api.nvim_win_del_var(window, name) 
vim.api.nvim_win_get_buf(window) 
vim.api.nvim_win_get_config(window) 
vim.api.nvim_win_get_cursor(window) 
vim.api.nvim_win_get_height(window) 
vim.api.nvim_win_get_number(window) 
vim.api.nvim_win_get_option(window, name) 
vim.api.nvim_win_get_position(window) 
vim.api.nvim_win_get_tabpage(window) 
vim.api.nvim_win_get_var(window, name) 
vim.api.nvim_win_get_width(window) 
vim.api.nvim_win_hide(window) 
vim.api.nvim_win_is_valid(window) 
vim.api.nvim_win_set_buf(window, buffer) 
vim.api.nvim_win_set_config(window, config) 
vim.api.nvim_win_set_cursor(window, pos) 
vim.api.nvim_win_set_height(window, height) 
vim.api.nvim_win_set_hl_ns(window, ns_id) 
vim.api.nvim_win_set_option(window, name, value) 
vim.api.nvim_win_set_var(window, name, value) 
vim.api.nvim_win_set_width(window, width) 
vim.api.nvim_win_text_height(window, opts) 
```

---

## builtin

Various APIs that are provided by Neovim, that are unique to the Lua API.

```lua
vim.NIL = ...
function vim.in_fast_event() end
function vim.empty_dict() end
function vim.rpcnotify(channel, method, ...) end
function vim.rpcrequest(channel, method, ...) end
function vim.stricmp(a, b) end
function vim.str_utf_pos(str) end
function vim.str_utf_start(str, index) end
function vim.str_utf_end(str, index) end
function vim.iconv(str, from, to, opts) end
function vim.schedule(fn) end
function vim.wait(time, callback, interval, fast_only) end
function vim.ui_attach(ns, options, callback) end
function vim.ui_detach(ns) end
```

---

## api_keysets

The following describe various types that are used in Neovim's API.

```lua

```

---

## api_keysets_extra

Additional types that are used in Neovim's API.

```lua

```

---

## builtin_types

Various types used by Neovim's builtin APIs.

```lua

```

---

## vimfn

Functions available from Neovim's vimscript APIs. They are available via `vim.fn.*`.

```lua
vim.fn.abs(expr) 
vim.fn.acos(expr) 
vim.fn.add(object, expr) 
vim.fn['and'] = function(expr, expr1) 
vim.fn.api_info() 
vim.fn.append(lnum, text) 
vim.fn.appendbufline(buf, lnum, text) 
vim.fn.argc(winid) 
vim.fn.argidx() 
vim.fn.arglistid(winnr, tabnr) 
vim.fn.argv(nr, winid) 
vim.fn.asin(expr) 
vim.fn.assert_beeps(cmd) 
vim.fn.assert_equal(expected, actual, msg) 
vim.fn.assert_equalfile(fname_one, fname_two) 
vim.fn.assert_exception(error, msg) 
vim.fn.assert_fails(cmd, error, msg, lnum, context) 
vim.fn.assert_false(actual, msg) 
vim.fn.assert_inrange(lower, upper, actual, msg) 
vim.fn.assert_match(pattern, actual, msg) 
vim.fn.assert_nobeep(cmd) 
vim.fn.assert_notequal(expected, actual, msg) 
vim.fn.assert_notmatch(pattern, actual, msg) 
vim.fn.assert_report(msg) 
vim.fn.assert_true(actual, msg) 
vim.fn.atan(expr) 
vim.fn.atan2(expr1, expr2) 
vim.fn.blob2list(blob) 
vim.fn.browse(save, title, initdir, default) 
vim.fn.browsedir(title, initdir) 
vim.fn.bufadd(name) 
vim.fn.bufexists(buf) 
vim.fn.buffer_exists(...) 
vim.fn.buffer_name(...) 
vim.fn.buffer_number(...) 
vim.fn.buflisted(buf) 
vim.fn.bufload(buf) 
vim.fn.bufloaded(buf) 
vim.fn.bufname(buf) 
vim.fn.bufnr(buf, create) 
vim.fn.bufwinid(buf) 
vim.fn.bufwinnr(buf) 
vim.fn.byte2line(byte) 
vim.fn.byteidx(expr, nr, utf16) 
vim.fn.byteidxcomp(expr, nr, utf16) 
vim.fn.call(func, arglist, dict) 
vim.fn.ceil(expr) 
vim.fn.chanclose(id, stream) 
vim.fn.changenr() 
vim.fn.chansend(id, data) 
vim.fn.char2nr(string, utf8) 
vim.fn.charclass(string) 
vim.fn.charcol(expr, winid) 
vim.fn.charidx(string, idx, countcc, utf16) 
vim.fn.chdir(dir) 
vim.fn.cindent(lnum) 
vim.fn.clearmatches(win) 
vim.fn.col(expr, winid) 
vim.fn.complete(startcol, matches) 
vim.fn.complete_add(expr) 
vim.fn.complete_check() 
vim.fn.complete_info(what) 
vim.fn.confirm(msg, choices, default, type) 
vim.fn.copy(expr) 
vim.fn.cos(expr) 
vim.fn.cosh(expr) 
vim.fn.count(comp, expr, ic, start) 
vim.fn.ctxget(index) 
vim.fn.ctxpop() 
vim.fn.ctxpush(types) 
vim.fn.ctxset(context, index) 
vim.fn.ctxsize() 
vim.fn.cursor(lnum, col, off) 
vim.fn.cursor(list) 
vim.fn.debugbreak(pid) 
vim.fn.deepcopy(expr, noref) 
vim.fn.delete(fname, flags) 
vim.fn.deletebufline(buf, first, last) 
vim.fn.dictwatcheradd(dict, pattern, callback) 
vim.fn.dictwatcherdel(dict, pattern, callback) 
vim.fn.did_filetype() 
vim.fn.diff_filler(lnum) 
vim.fn.diff_hlID(lnum, col) 
vim.fn.digraph_get(chars) 
vim.fn.digraph_getlist(listall) 
vim.fn.digraph_set(chars, digraph) 
vim.fn.digraph_setlist(digraphlist) 
vim.fn.empty(expr) 
vim.fn.environ() 
vim.fn.escape(string, chars) 
vim.fn.eval(string) 
vim.fn.eventhandler() 
vim.fn.executable(expr) 
vim.fn.execute(command, silent) 
vim.fn.exepath(expr) 
vim.fn.exists(expr) 
vim.fn.exp(expr) 
vim.fn.expand(string, nosuf, list) 
vim.fn.expand(string, nosuf, list) 
vim.fn.expandcmd(string, options) 
vim.fn.extend(expr1, expr2, expr3) 
vim.fn.extendnew(expr1, expr2, expr3) 
vim.fn.feedkeys(string, mode) 
vim.fn.file_readable(file) 
vim.fn.filecopy(from, to) 
vim.fn.filereadable(file) 
vim.fn.filewritable(file) 
vim.fn.filter(expr1, expr2) 
vim.fn.finddir(name, path, count) 
vim.fn.findfile(name, path, count) 
vim.fn.flatten(list, maxdepth) 
vim.fn.flattennew(list, maxdepth) 
vim.fn.float2nr(expr) 
vim.fn.floor(expr) 
vim.fn.fmod(expr1, expr2) 
vim.fn.fnameescape(string) 
vim.fn.fnamemodify(fname, mods) 
vim.fn.foldclosed(lnum) 
vim.fn.foldclosedend(lnum) 
vim.fn.foldlevel(lnum) 
vim.fn.foldtext() 
vim.fn.foldtextresult(lnum) 
vim.fn.foreach(expr1, expr2) 
vim.fn.fullcommand(name) 
vim.fn.funcref(name, arglist, dict) 
vim.fn['function'] = function(name, arglist, dict) 
vim.fn.garbagecollect(atexit) 
vim.fn.get(list, idx, default) 
vim.fn.get(blob, idx, default) 
vim.fn.get(dict, key, default) 
vim.fn.get(func, what) 
vim.fn.getbufinfo(buf) 
vim.fn.getbufinfo(dict) 
vim.fn.getbufline(buf, lnum, end_) 
vim.fn.getbufoneline(buf, lnum) 
vim.fn.getbufvar(buf, varname, def) 
vim.fn.getcellwidths() 
vim.fn.getchangelist(buf) 
vim.fn.getchar(expr, opts) 
vim.fn.getcharmod() 
vim.fn.getcharpos(expr) 
vim.fn.getcharsearch() 
vim.fn.getcharstr(expr, opts) 
vim.fn.getcmdcomplpat() 
vim.fn.getcmdcompltype() 
vim.fn.getcmdline() 
vim.fn.getcmdpos() 
vim.fn.getcmdprompt() 
vim.fn.getcmdscreenpos() 
vim.fn.getcmdtype() 
vim.fn.getcmdwintype() 
vim.fn.getcompletion(pat, type, filtered) 
vim.fn.getcurpos(winid) 
vim.fn.getcursorcharpos(winid) 
vim.fn.getcwd(winnr, tabnr) 
vim.fn.getenv(name) 
vim.fn.getfontname(name) 
vim.fn.getfperm(fname) 
vim.fn.getfsize(fname) 
vim.fn.getftime(fname) 
vim.fn.getftype(fname) 
vim.fn.getjumplist(winnr, tabnr) 
vim.fn.getline(lnum, end_) 
vim.fn.getline(lnum, end_) 
vim.fn.getloclist(nr, what) 
vim.fn.getmarklist(buf) 
vim.fn.getmatches(win) 
vim.fn.getmousepos() 
vim.fn.getpid() 
vim.fn.getpos(expr) 
vim.fn.getqflist(what) 
vim.fn.getreg(regname, list) 
vim.fn.getreg(regname, list) 
vim.fn.getreginfo(regname) 
vim.fn.getregion(pos1, pos2, opts) 
vim.fn.getregionpos(pos1, pos2, opts) 
vim.fn.getregtype(regname) 
vim.fn.getscriptinfo(opts) 
vim.fn.getstacktrace() 
vim.fn.gettabinfo(tabnr) 
vim.fn.gettabvar(tabnr, varname, def) 
vim.fn.gettabwinvar(tabnr, winnr, varname, def) 
vim.fn.gettagstack(winnr) 
vim.fn.gettext(text) 
vim.fn.getwininfo(winid) 
vim.fn.getwinpos(timeout) 
vim.fn.getwinposx() 
vim.fn.getwinposy() 
vim.fn.getwinvar(winnr, varname, def) 
vim.fn.glob(expr, nosuf, list, alllinks) 
vim.fn.glob2regpat(string) 
vim.fn.globpath(path, expr, nosuf, list, allinks) 
vim.fn.has(feature) 
vim.fn.has_key(dict, key) 
vim.fn.haslocaldir(winnr, tabnr) 
vim.fn.hasmapto(what, mode, abbr) 
vim.fn.highlightID(name) 
vim.fn.highlight_exists(name) 
vim.fn.histadd(history, item) 
vim.fn.histdel(history, item) 
vim.fn.histget(history, index) 
vim.fn.histnr(history) 
vim.fn.hlID(name) 
vim.fn.hlexists(name) 
vim.fn.hostname() 
vim.fn.iconv(string, from, to) 
vim.fn.id(expr) 
vim.fn.indent(lnum) 
vim.fn.index(object, expr, start, ic) 
vim.fn.indexof(object, expr, opts) 
vim.fn.input(prompt, text, completion) 
vim.fn.input(opts) 
vim.fn.inputdialog(...) 
vim.fn.inputlist(textlist) 
vim.fn.inputrestore() 
vim.fn.inputsave() 
vim.fn.inputsecret(prompt, text) 
vim.fn.insert(object, item, idx) 
vim.fn.interrupt() 
vim.fn.invert(expr) 
vim.fn.isabsolutepath(path) 
vim.fn.isdirectory(directory) 
vim.fn.isinf(expr) 
vim.fn.islocked(expr) 
vim.fn.isnan(expr) 
vim.fn.items(dict) 
vim.fn.jobclose(...) 
vim.fn.jobpid(job) 
vim.fn.jobresize(job, width, height) 
vim.fn.jobsend(...) 
vim.fn.jobstart(cmd, opts) 
vim.fn.jobstop(id) 
vim.fn.jobwait(jobs, timeout) 
vim.fn.join(list, sep) 
vim.fn.json_decode(expr) 
vim.fn.json_encode(expr) 
vim.fn.keys(dict) 
vim.fn.keytrans(string) 
vim.fn.last_buffer_nr() 
vim.fn.len(expr) 
vim.fn.libcall(libname, funcname, argument) 
vim.fn.libcallnr(libname, funcname, argument) 
vim.fn.line(expr, winid) 
vim.fn.line2byte(lnum) 
vim.fn.lispindent(lnum) 
vim.fn.list2blob(list) 
vim.fn.list2str(list, utf8) 
vim.fn.localtime() 
vim.fn.log(expr) 
vim.fn.log10(expr) 
vim.fn.map(expr1, expr2) 
vim.fn.maparg(name, mode, abbr, dict) 
vim.fn.maparg(name, mode, abbr, dict) 
vim.fn.mapcheck(name, mode, abbr) 
vim.fn.maplist(abbr) 
vim.fn.mapnew(expr1, expr2) 
vim.fn.mapset(mode, abbr, dict) 
vim.fn.mapset(dict) 
vim.fn.match(expr, pat, start, count) 
vim.fn.matchadd(group, pattern, priority, id, dict) 
vim.fn.matchaddpos(group, pos, priority, id, dict) 
vim.fn.matcharg(nr) 
vim.fn.matchbufline(buf, pat, lnum, end_, dict) 
vim.fn.matchdelete(id, win) 
vim.fn.matchend(expr, pat, start, count) 
vim.fn.matchfuzzy(list, str, dict) 
vim.fn.matchfuzzypos(list, str, dict) 
vim.fn.matchlist(expr, pat, start, count) 
vim.fn.matchstr(expr, pat, start, count) 
vim.fn.matchstrlist(list, pat, dict) 
vim.fn.matchstrpos(expr, pat, start, count) 
vim.fn.max(expr) 
vim.fn.menu_get(path, modes) 
vim.fn.menu_info(name, mode) 
vim.fn.min(expr) 
vim.fn.mkdir(name, flags, prot) 
vim.fn.mode(expr) 
vim.fn.msgpackdump(list, type) 
vim.fn.msgpackparse(data) 
vim.fn.nextnonblank(lnum) 
vim.fn.nr2char(expr, utf8) 
vim.fn['or'] = function(expr, expr1) 
vim.fn.pathshorten(path, len) 
vim.fn.perleval(expr) 
vim.fn.pow(x, y) 
vim.fn.prevnonblank(lnum) 
vim.fn.printf(fmt, expr1) 
vim.fn.prompt_getprompt(buf) 
vim.fn.prompt_setcallback(buf, expr) 
vim.fn.prompt_setinterrupt(buf, expr) 
vim.fn.prompt_setprompt(buf, text) 
vim.fn.pum_getpos() 
vim.fn.pumvisible() 
vim.fn.py3eval(expr) 
vim.fn.pyeval(expr) 
vim.fn.pyxeval(expr) 
vim.fn.rand(expr) 
vim.fn.range(expr, max, stride) 
vim.fn.readblob(fname, offset, size) 
vim.fn.readdir(directory, expr) 
vim.fn.readfile(fname, type, max) 
vim.fn.reduce(object, func, initial) 
vim.fn.reg_executing() 
vim.fn.reg_recorded() 
vim.fn.reg_recording() 
vim.fn.reltime() 
vim.fn.reltime(start) 
vim.fn.reltime(start, end_) 
vim.fn.reltimefloat(time) 
vim.fn.reltimestr(time) 
vim.fn.remove(list, idx) 
vim.fn.remove(list, idx, end_) 
vim.fn.remove(blob, idx) 
vim.fn.remove(blob, idx, end_) 
vim.fn.remove(dict, key) 
vim.fn.rename(from, to) 
vim.fn['repeat'] = function(expr, count) 
vim.fn.resolve(filename) 
vim.fn.reverse(object) 
vim.fn.round(expr) 
vim.fn.rpcnotify(channel, event, ...) 
vim.fn.rpcrequest(channel, method, ...) 
vim.fn.rpcstart(prog, argv) 
vim.fn.rpcstop(...) 
vim.fn.rubyeval(expr) 
vim.fn.screenattr(row, col) 
vim.fn.screenchar(row, col) 
vim.fn.screenchars(row, col) 
vim.fn.screencol() 
vim.fn.screenpos(winid, lnum, col) 
vim.fn.screenrow() 
vim.fn.screenstring(row, col) 
vim.fn.search(pattern, flags, stopline, timeout, skip) 
vim.fn.searchcount(options) 
vim.fn.searchdecl(name, global, thisblock) 
vim.fn.searchpair(start, middle, end_, flags, skip, stopline, timeout) 
vim.fn.searchpairpos(start, middle, end_, flags, skip, stopline, timeout) 
vim.fn.searchpos(pattern, flags, stopline, timeout, skip) 
vim.fn.serverlist() 
vim.fn.serverstart(address) 
vim.fn.serverstop(address) 
vim.fn.setbufline(buf, lnum, text) 
vim.fn.setbufvar(buf, varname, val) 
vim.fn.setcellwidths(list) 
vim.fn.setcharpos(expr, list) 
vim.fn.setcharsearch(dict) 
vim.fn.setcmdline(str, pos) 
vim.fn.setcmdpos(pos) 
vim.fn.setcursorcharpos(lnum, col, off) 
vim.fn.setcursorcharpos(list) 
vim.fn.setenv(name, val) 
vim.fn.setfperm(fname, mode) 
vim.fn.setline(lnum, text) 
vim.fn.setloclist(nr, list, action, what) 
vim.fn.setmatches(list, win) 
vim.fn.setpos(expr, list) 
vim.fn.setqflist(list, action, what) 
vim.fn.setreg(regname, value, options) 
vim.fn.settabvar(tabnr, varname, val) 
vim.fn.settabwinvar(tabnr, winnr, varname, val) 
vim.fn.settagstack(nr, dict, action) 
vim.fn.setwinvar(nr, varname, val) 
vim.fn.sha256(string) 
vim.fn.shellescape(string, special) 
vim.fn.shiftwidth(col) 
vim.fn.sign_define(name, dict) 
vim.fn.sign_define(list) 
vim.fn.sign_getdefined(name) 
vim.fn.sign_getplaced(buf, dict) 
vim.fn.sign_jump(id, group, buf) 
vim.fn.sign_place(id, group, name, buf, dict) 
vim.fn.sign_placelist(list) 
vim.fn.sign_undefine(name) 
vim.fn.sign_undefine(list) 
vim.fn.sign_unplace(group, dict) 
vim.fn.sign_unplacelist(list) 
vim.fn.simplify(filename) 
vim.fn.sin(expr) 
vim.fn.sinh(expr) 
vim.fn.slice(expr, start, end_) 
vim.fn.sockconnect(mode, address, opts) 
vim.fn.sort(list, how, dict) 
vim.fn.soundfold(word) 
vim.fn.spellbadword(sentence) 
vim.fn.spellsuggest(word, max, capital) 
vim.fn.split(string, pattern, keepempty) 
vim.fn.sqrt(expr) 
vim.fn.srand(expr) 
vim.fn.state(what) 
vim.fn.stdioopen(opts) 
vim.fn.stdpath(what) 
vim.fn.stdpath(what) 
vim.fn.stdpath(what) 
vim.fn.str2float(string, quoted) 
vim.fn.str2list(string, utf8) 
vim.fn.str2nr(string, base) 
vim.fn.strcharlen(string) 
vim.fn.strcharpart(src, start, len, skipcc) 
vim.fn.strchars(string, skipcc) 
vim.fn.strdisplaywidth(string, col) 
vim.fn.strftime(format, time) 
vim.fn.strgetchar(str, index) 
vim.fn.stridx(haystack, needle, start) 
vim.fn.string(expr) 
vim.fn.strlen(string) 
vim.fn.strpart(src, start, len, chars) 
vim.fn.strptime(format, timestring) 
vim.fn.strridx(haystack, needle, start) 
vim.fn.strtrans(string) 
vim.fn.strutf16len(string, countcc) 
vim.fn.strwidth(string) 
vim.fn.submatch(nr, list) 
vim.fn.submatch(nr, list) 
vim.fn.substitute(string, pat, sub, flags) 
vim.fn.swapfilelist() 
vim.fn.swapinfo(fname) 
vim.fn.swapname(buf) 
vim.fn.synID(lnum, col, trans) 
vim.fn.synIDattr(synID, what, mode) 
vim.fn.synIDtrans(synID) 
vim.fn.synconcealed(lnum, col) 
vim.fn.synstack(lnum, col) 
vim.fn.system(cmd, input) 
vim.fn.systemlist(cmd, input, keepempty) 
vim.fn.tabpagebuflist(arg) 
vim.fn.tabpagenr(arg) 
vim.fn.tabpagewinnr(tabarg, arg) 
vim.fn.tagfiles() 
vim.fn.taglist(expr, filename) 
vim.fn.tan(expr) 
vim.fn.tanh(expr) 
vim.fn.tempname() 
vim.fn.termopen(cmd, opts) 
vim.fn.timer_info(id) 
vim.fn.timer_pause(timer, paused) 
vim.fn.timer_start(time, callback, options) 
vim.fn.timer_stop(timer) 
vim.fn.timer_stopall() 
vim.fn.tolower(expr) 
vim.fn.toupper(expr) 
vim.fn.tr(src, fromstr, tostr) 
vim.fn.trim(text, mask, dir) 
vim.fn.trunc(expr) 
vim.fn.type(expr) 
vim.fn.undofile(name) 
vim.fn.undotree(buf) 
vim.fn.uniq(list, func, dict) 
vim.fn.utf16idx(string, idx, countcc, charidx) 
vim.fn.values(dict) 
vim.fn.virtcol(expr, list, winid) 
vim.fn.virtcol2col(winid, lnum, col) 
vim.fn.visualmode(expr) 
vim.fn.wait(timeout, condition, interval) 
vim.fn.wildmenumode() 
vim.fn.win_execute(id, command, silent) 
vim.fn.win_findbuf(bufnr) 
vim.fn.win_getid(win, tab) 
vim.fn.win_gettype(nr) 
vim.fn.win_gotoid(expr) 
vim.fn.win_id2tabwin(expr) 
vim.fn.win_id2win(expr) 
vim.fn.win_move_separator(nr, offset) 
vim.fn.win_move_statusline(nr, offset) 
vim.fn.win_screenpos(nr) 
vim.fn.win_splitmove(nr, target, options) 
vim.fn.winbufnr(nr) 
vim.fn.wincol() 
vim.fn.windowsversion() 
vim.fn.winheight(nr) 
vim.fn.winlayout(tabnr) 
vim.fn.winline() 
vim.fn.winnr(arg) 
vim.fn.winrestcmd() 
vim.fn.winrestview(dict) 
vim.fn.winsaveview() 
vim.fn.winwidth(nr) 
vim.fn.wordcount() 
vim.fn.writefile(object, fname, flags) 
vim.fn.xor(expr, expr1) 
```