For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim). Following is a list of fixes/features commits. BREAKING -------------------------------------------------------------------------------- -bbf912d72fprovider: drop Python 3.7, 3.8 support #33088 FEATURES -------------------------------------------------------------------------------- -66953b16a2lsp: workspace_required (#33608) -7efb3ba6f7checkhealth: use emoji for OK/WARN/ERROR (#33195) -91d11c8bc1clipboard: g:clipboard="foo" forces the "foo" clipboard tool #33235 -12da443930float: 'winborder' "bold" style #33189 -5829b5de0avim.hl: allow multiple timed highlights simultaneously #33283 FIXES -------------------------------------------------------------------------------- -91481ae7d5bug in stylize_markdown -5fc6bd6454api: nvim_set_keymap() throws error even in pcall() #33228 -2b2a90051eapi: use E226 instead of E227 for duplicate abbreviation (#33159) -056dbf3ea7api: use original LHS in keymap error message #33135 -fb71d631a5api: wrong return value with reverse range + overlap #32956 -fcee5df0fccheckhealth: check g:loaded_xx_provider for all providers #33168 -89e0ea1788checkhealth: check outdated pynvim version properly #33175 -adfd4b9f4fcheckhealth: don't override user "q" keymap #33132 -06df3e0c0dcmdline: avoid empty @: register after :<CR> (#33126) -53def2a877cmdline: empty ext_cmdline block events for :<CR> #33118 -b8e5fd51fdcolumn: don't count signs on lines beyond eob #33410 -e4007551c4completion: avoid freeing uninitialized value (#33459) -6e51d39696decor: enable decoration provider in on_start #33337 -837c9d0409defaults: enable :terminal [[,]] motion in operator-pending mode #33217 -2182272139defaults: keywordprg=:help on Windows #33336 -7e884b78bfdefaults: visual-mode [[,]] for :terminal shell prompts #33203 -2a04161a35desktop: cannot open filename with spaces using OS file manager #33161 -2cd735d159display: scroll logic does not take into account concealed topline (#33054) -c4a19bff4edisplay: scroll redrawing doesn't account for virt_lines above fold #33374 -02123bac0ddisplay: wrong cursor column with 'concealcursor' = "n" and virt_text (#33218) -837faf7065editor: respect [+cmd] when executing :drop #33339 -155529b91aevents: avoid superfluous CursorMovedI on first autocmd (#33588) -c158d41cechealth: expecting nonexistent "inotifywait" function #33312 -06c2886569health: message should mention "vim.provider" #33095 -279a0e78c9highlight: no match highlight during :substitute prompt #33262 -b5158e8e92lsp: "bold" border for vim.lsp.buf.hover #33395 -1e8e74dbfflsp: better handling of "*" configs -478f5d0070lsp: cycling signatures with the default `config.focusable` -2435d72283lsp: opts.reuse_win does not jump if buf is already open #33476 -95f96a3d1blsp: prioritize showing active signature -a9afa6b152lsp: warn on missing config in :checkhealth #33087 -2b14447803man.lua: noisy "ENOENT" error on Windows #33435 -8aa49a8e9bman.lua: useless executability check #33438 -4d87229789marks: clamp conceal_lines corrected line number #33464 -9da90af0f7marks: wrong display after inserting/deleting lines #33389 -3b0c88a537messages: single msg_show event for multiple :set options #33555 -3df9db58dcmessages: verbose message emitted without kind #33305 -c61e8c6e70mouse: crash with click on win-separator in statusline (#33091) -dcd5e4574amouse: do not fetch clipboard twice when pasting with middle button #33494 -526444c4ffmouse: mouseclick after conceal_lines is miscalculated #33451 -326eacef93move: adjust for concealed lines above topline after scrolling up (#33211) -649bce6e73provider: misleading :checkhealth if user sets g:loaded_python3_provider=1 #32696 -c57a36cd59pum: fix heap-buffer-overflow with 'rightleft' (#33146) -c1d3777db2snippet: use <cmd>call cursor() for visual range -70f3e15298treesitter: don't memoize modified headings (#33186) -e342b9a25atreesitter: fix `:InspectTree` incorrect injections -4c1121bd33treesitter: not refreshing virtualtext contents #33361 -646a8f663etui: ensure all pending escape sequences are processed before exiting #32151 -9909580df2ui: exclude unfocusable windows from 'complete' "w" completion -ccb078bbb0ui: wincmd _ should not increase 'cmdheight' above 0 (#33056) -29011e4d45vim.hl: nvim_buf_del_extmark on invalid buffer #33331 -9056c01a95vim.lsp.inlay_hint: requesting inlay_hints even when disabled #32999 -4422b9bbd0vim.system: unclear non-executable message #33455 -a4b6705e87window: crash on negative window height with 'winbar' #33250 PERFORMANCE -------------------------------------------------------------------------------- -b9c9b15ad7snippet: use "[count]|" to move cursor #33571 VIM PATCHES -------------------------------------------------------------------------------- -a97713485d9.0.1653: Amiga: default 'viewdir' may not work -cdd3f2a2e69.0.1654: MS-Windows: test for default 'viewdir' fails -b7de104d869.1.0721: tests: test_mksession does not consider XDG_CONFIG_HOME -6514e2c7ba9.1.1247: fragile setup to get (preferred) keys from key_name_entry (#33102) -2084cda6f99.1.1260: Hang when filtering buffer with NUL bytes (#33192) -02bf23b4bf9.1.1269: completion: compl_shown_match is updated when starting keyword completion -e3506ede279.1.1272: completion: in keyword completion Ctrl_P cannot go back after Ctrl_N -a92155b86b9.1.1286: filetype: help files not detected when 'iskeyword' includes ":" (#33377) -b694131c3b9.1.1303: missing out-of-memory check in linematch.c (#33487) -0c315feddf9.1.1305: completion menu active after switching windows/tabs (#33488) -12298be0fe9.1.1310: completion: redundant check for preinsert effect (#33505) -4205fdee1d9.1.1314: max allowed string width too small -248528c9079.1.1317: noisy error when restoring folds from session fails -1a6ddeee419.1.1318: tests: test_format fails -448c2cec9d9.1.1337: Undo corrupted with 'completeopt' "preinsert" when switching buffer (#33600)
Neovim is a project that seeks to aggressively refactor Vim in order to:
- Simplify maintenance and encourage contributions
- Split the work between multiple developers
- Enable advanced UIs without modifications to the core
- Maximize extensibility
See the Introduction wiki page and Roadmap for more information.
Features
- Modern GUIs
- API access from any language including C/C++, C#, Clojure, D, Elixir, Go, Haskell, Java/Kotlin, JavaScript/Node.js, Julia, Lisp, Lua, Perl, Python, Racket, Ruby, Rust
- Embedded, scriptable terminal emulator
- Asynchronous job control
- Shared data (shada) among multiple editor instances
- XDG base directories support
- Compatible with most Vim plugins, including Ruby and Python plugins
See :help nvim-features for the full list, and :help news for noteworthy changes in the latest version!
Install from package
Pre-built packages for Windows, macOS, and Linux are found on the Releases page.
Managed packages are in Homebrew, Debian, Ubuntu, Fedora, Arch Linux, Void Linux, Gentoo, and more!
Install from source
See BUILD.md and supported platforms for details.
The build is CMake-based, but a Makefile is provided as a convenience. After installing the dependencies, run the following command.
make CMAKE_BUILD_TYPE=RelWithDebInfo
sudo make install
To install to a non-default location:
make CMAKE_BUILD_TYPE=RelWithDebInfo CMAKE_INSTALL_PREFIX=/full/path/
make install
CMake hints for inspecting the build:
cmake --build build --target helplists all build targets.build/CMakeCache.txt(orcmake -LAH build/) contains the resolved values of all CMake variables.build/compile_commands.jsonshows the full compiler invocations for each translation unit.
Transitioning from Vim
See :help nvim-from-vim for instructions.
Project layout
├─ cmake/ CMake utils
├─ cmake.config/ CMake defines
├─ cmake.deps/ subproject to fetch and build dependencies (optional)
├─ runtime/ plugins and docs
├─ src/nvim/ application source code (see src/nvim/README.md)
│ ├─ api/ API subsystem
│ ├─ eval/ Vimscript subsystem
│ ├─ event/ event-loop subsystem
│ ├─ generators/ code generation (pre-compilation)
│ ├─ lib/ generic data structures
│ ├─ lua/ Lua subsystem
│ ├─ msgpack_rpc/ RPC subsystem
│ ├─ os/ low-level platform code
│ └─ tui/ built-in UI
└─ test/ tests (see test/README.md)
License
Neovim contributions since b17d96 are licensed under the
Apache 2.0 license, except for contributions copied from Vim (identified by the
vim-patch token). See LICENSE for details.
Vim is Charityware. You can use and copy it as much as you like, but you are
encouraged to make a donation for needy children in Uganda. Please see the
kcc section of the vim docs or visit the ICCF web site, available at these URLs:
https://iccf-holland.org/
https://www.vim.org/iccf/
https://www.iccf.nl/
You can also sponsor the development of Vim. Vim sponsors can vote for
features. The money goes to Uganda anyway.
