neovim/neovim
Glossary
Terms that appear in the Neovim source tree and that often need explaining.
Editor concepts (inherited from Vim)
Buffer. The in-memory representation of a file. A buffer has lines, options, marks, undo history, and (optionally) is associated with a file on disk. Defined by buf_T in src/nvim/buffer_defs.h.
Window. A view onto a buffer. Multiple windows can show the same buffer. Defined by win_T in src/nvim/buffer_defs.h.
Tab page. A collection of windows. The :tabnew command opens a new tab page. Defined by tabpage_T.
Autocmd / autocommand / editor event. A user-defined command that fires on a named event (BufRead, TextChanged, ...). Implemented in src/nvim/autocmd.c; events are listed in src/nvim/auevents.lua.
Ex command. Anything you can type after :. Listed in src/nvim/ex_cmds.lua; dispatched by do_one_cmd() in src/nvim/ex_docmd.c.
Vimscript. Vim's legacy scripting language, alias "VimL" or "eval expression language". Lives under src/nvim/eval/ and src/nvim/eval.c. The grammar is defined in src/nvim/viml/.
Mark. A named cursor position. Lowercase marks (a–z) are buffer-local; uppercase marks (A–Z) are global. Implemented in src/nvim/mark.c.
Register. A named buffer for yanked/deleted text. Implemented in src/nvim/register.c.
Mode. Normal, Insert, Visual, Operator-pending, Command-line, Terminal, ... Stored in the global State variable; transitions go through state_enter() in src/nvim/state.c.
Operator-pending. The state after pressing an operator like d or y but before the motion. Handled inside Normal mode (src/nvim/normal.c).
Quickfix list / location list. A list of file:line:message entries (e.g., compiler errors). Implemented in src/nvim/quickfix.c.
Fold. A collapsible range of lines. Implemented in src/nvim/fold.c.
Sign. A glyph drawn in the sign column next to a line. Implemented in src/nvim/sign.c (legacy) and now mostly through extmarks (src/nvim/extmark.c).
Tag. A named symbol from a tags file (Ctags-style). Implemented in src/nvim/tag.c.
Neovim-specific concepts
Extmark / extended mark. A robust mark that can carry highlight, virtual text, sign, and conceal data. Survives buffer changes by being stored in a per-buffer marktree. Implemented in src/nvim/extmark.c and src/nvim/marktree.c. The public API is vim.api.nvim_buf_set_extmark().
Marktree. The data structure that stores extmarks: a B+-tree of (row, col) keyed entries with O(log n) shift on insertions. src/nvim/marktree.c (~75k lines including the B+-tree implementation).
Memline. Vim's persistent line storage: lines are kept in a tree of disk-backed pages so editing huge files doesn't blow up memory. src/nvim/memline.c and src/nvim/memfile.c.
Shada ("shared data"). The successor to Vim's viminfo. A msgpack-encoded file that persists registers, marks, search history, jumplist, and command-line history across sessions and across multiple concurrent Nvim instances. src/nvim/shada.c.
TUI. The built-in terminal UI client that renders to the user's terminal emulator. Lives in src/nvim/tui/ and is started automatically by the binary in terminal mode.
Embedded mode (--embed). Start the server without a built-in TUI, expecting a UI on stdin/stdout. The flag a GUI like Neovide uses to spawn a Neovim core.
Headless mode (--headless). Like --embed but no UI is required at all. Used by tests and for batch scripts.
RPC channel. A msgpack-rpc connection to the editor. Channels can be stdin/stdout, a TCP socket, a Unix socket, a Windows named pipe, or stdio of a child process spawned with jobstart({rpc = true}). Implemented in src/nvim/msgpack_rpc/channel.c and src/nvim/api/private/.
API function. A C function in src/nvim/api/*.c whose name starts with nvim_. The dispatcher (gen_api_dispatch.lua) auto-generates the wiring so that the function is callable over RPC and from Lua as vim.api.nvim_….
API-fast (api-fast). An API function annotated as safe to call from any context, including arbitrary Lua callbacks. Fast functions cannot trigger os_breakcheck() or yield.
vim.* (the Lua stdlib). The Lua API exposed to plugins, in runtime/lua/vim/. Top-level submodules include vim.api, vim.lsp, vim.treesitter, vim.diagnostic, vim.pack, vim.fs, vim.ui, vim.iter, vim.uv, vim.system.
VIMRUNTIME. The directory containing the runtime files (runtime/ in this repo). Set automatically when nvim is installed, but you must set it yourself when running an in-source build.
stdpath(). Lua/Vimscript helper that returns XDG-style standard paths: config, data, cache, state, log, run. Backed by src/nvim/os/stdpaths.c.
Provider. A bridge to a host-language runtime that supports Vim plugins not yet ported to Lua. Examples: Python (pynvim), Ruby, Node.js, Perl. See runtime/lua/vim/provider/.
vim-patch. A commit prefix and workflow for porting changes from upstream Vim. See runtime/doc/dev_vimpatch.txt and vim_patches.yml workflow.
Implementation building blocks
libuv. Cross-platform async I/O library. Backbone of the event loop. Vendored as a CMake fetch, not in-tree.
LuaJIT. The Lua interpreter shipped in the binary. Vendored as a CMake fetch.
luv. Lua bindings to libuv, exposed as vim.uv. Vendored as LUV_URL in cmake.deps/deps.txt.
lpeg. PEG library used to implement vim.lpeg and the LuaCATS grammar.
libvterm. In-tree fork (src/nvim/vterm/) of the libvterm terminal-emulator-as-buffer library used by :terminal.
unibilium. Terminfo parser used by the TUI (src/nvim/tui/terminfo.c).
termkey. Vendored input parser that turns escape sequences into key events (src/nvim/tui/termkey/).
tree-sitter. Incremental parser library. Used for :syntax replacements and for general parsing in plugins. Bindings live in src/nvim/lua/treesitter.c plus runtime/lua/vim/treesitter/.
msgpack. Binary serialization format used for the RPC protocol and the shada file. Vendored at src/mpack/.
typval_T. The Vimscript variant value type: number, float, string, list, dict, blob, funcref, partial. Defined in src/nvim/eval/typval_defs.h. Conversions to/from the API Object type live in src/nvim/eval/typval.c and to/from Lua values in src/nvim/lua/converter.c.
Object. The API's variant value type. Defined in src/nvim/api/private/defs.h. Used for everything that crosses the C↔Lua and C↔RPC boundaries.
MultiQueue. A multi-producer queue with a "child queue" hierarchy, used by the event loop to route events to the right worker. src/nvim/event/multiqueue.c.
StringBuilder. Append-only growable string buffer. src/nvim/lib/.
kvec. Macro-based dynamic vector library, vendored from klib. Use it for most lists.
garray. Older growable-array helper that predates kvec. Still pervasive; new code should prefer kvec or StringBuilder.
queue. "Intrusive" linked list (src/nvim/lib/queue_defs.h). Use only when an intrusive list is genuinely needed.
tv_*. Functions that operate on Vimscript typval_T values.
f_*. Vimscript built-in functions (e.g., f_searchpos, f_chansend).
api_*. Internal helpers in src/nvim/api/private/.
nlua_*. Functions in the Lua bridge (src/nvim/lua/).
os_*. Platform-abstraction helpers in src/nvim/os/.
ex_*. Implementations of Ex commands.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.