News
Nvim :help pages, generated
from source
using the tree-sitter-vimdoc parser.
Notable changes since Nvim 0.12
For changes in the previous release, see
news-0.12.
====== Remove this section before release. ======
The following changes to UNRELEASED features were made during the development
cycle (Nvim HEAD, the "master" branch).
EVENTS
EXPERIMENTS
LSP
LUA
vim.pos, vim.range always require the buf parameter.
range.cursor() and range.to_cursor() are removed.
Use range.mark() and range.to_mark() instead.
DIAGNOSTICS
OPTIONS
TREESITTER
UI
VIMSCRIPT
These changes may require adaptations in your config or plugins.
API
ui-messages msg_show.bufwrite and
msg_show.completion messages are now
msg_show.progress events.
DIAGNOSTICS
vim.diagnostic.Opts.Status.format no longer accepts the table mapping
from severity to text. Use vim.diagnostic.Opts.Signs.text instead.
EDITOR
On Windows, the
trust db now stores paths with "/" slashes. This means the
trust store will be reset.
stdpath("log") moved to stdpath("state")/logs.
EVENTS
LSP
client.attached_buffers[buf] now stores languageId string (was boolean).
LUA
"standalone" Lua interpreter mode
nvim -ll was removed. Use
-l script
mode instead.
OPTIONS
PLUGINS
TREESITTER
The following new features were added.
API
nvim_open_win() zindex controls whether the UI will use a dimmed cursor
shape when an unfocused float is on top of the cursor.
nvim_echo() distinguishes zero percent from omitted percent for Progress
events.
BUILD
Building using "zig build" requires zig 0.16.x.
zig build: "-Dcross" option was removed. Often cross-compilation is now
detected, so e.g. from a linux host
zig build -Dtarget=aarch64-macos
will automatically compile a host Lua for use during build.
The new "-Dhost={target_string}" option can be used to override the used host.
use "-Dhost=native" to force cross-compiling or "-Dhost=" (empty string) to
assume that target binaries can run on the host during the build process (e.g.
if target is x86 on a x86_64 system, or if emulation set up with binfmt or
similar)
DEFAULTS
DIAGNOSTICS
EDITOR
v_al and
v_il text objects select the whole buffer and the current line
without leading or trailing white space.
EVENTS
TabMoved is triggered when tabs are reordered.
HIGHLIGHTS
Dimmed for text that should be de-emphasized.
LSP
LSP capabilities:
:checkhealth vim.lsp highlights the "current buffer".
Support for nested snippets.
LUA
vim.ui.img can display images. Use
:checkhealth img to confirm your
terminal supports it.
writefile() treats Lua strings as "blob", so it can be used to write
binary data.
Added
__eq metamethod to
vim.VersionRange. 2 distinct but representing
the same range instances now compare equal.
Documentation for
vim.fn now points to preferred Lua alternatives when
available.
vim.pos can now convert between positions and buffer offsets.
vim.log provides a logging interface.
OPTIONS
'winpinned' prevents window from closing unless specifically targeted.
treesitter-highlight performance on large injection-heavy files improves
by 50% to 100% by reusing edited child-tree ranges.
Nvim architecture allows pure-Lua implementations of some vim.fn
functions, which skips the Vimscript <=> Lua "bridge" (no data
conversion/marshalling) entirely, if the vim.fn function is called from
Lua.
Internal LSP data is cleared using table.clear, which reduces GC and
memory reallocation during each data reset.
RPC client avoids string allocations when parsing Content-Length messages.
PLUGINS
provider: add bun support for Node.js plugins
STARTUP
TERMINAL
TREESITTER
v_]N v_[N expand selection to sibling treesitter node.
TUI
The TUI will re-query the terminal's background color when resuming from
a suspended state, and Nvim will update
'background' accordingly.
User can override the builtin "terminfo" via
$NVIM_TERMDEFS. This is
similar to Vim's
t_xx options.
UI
:checkhealth shows filewatcher info in the Performance section.
:browse oldfiles
VIMSCRIPT
v:starttime is the process start time (nanoseconds since UNIX epoch).
serverlist() with
info=true returns details for each server (own + peers).
These existing features changed their behavior.
nvim_exec_autocmds({buf=…}) runs in the context of the target buffer.
:Open with no arguments uses the current file.
The "buffer" key was renamed to "buf" in these functions (but the old name
"buffer" is still accepted, for backwards compatibility):
These deprecated features were removed.