For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim). Following is a list of fixes/features commits. BREAKING -------------------------------------------------------------------------------- -bbf912d72f
provider: drop Python 3.7, 3.8 support #33088 FEATURES -------------------------------------------------------------------------------- -66953b16a2
lsp: workspace_required (#33608) -7efb3ba6f7
checkhealth: use emoji for OK/WARN/ERROR (#33195) -91d11c8bc1
clipboard: g:clipboard="foo" forces the "foo" clipboard tool #33235 -12da443930
float: 'winborder' "bold" style #33189 -5829b5de0a
vim.hl: allow multiple timed highlights simultaneously #33283 FIXES -------------------------------------------------------------------------------- -91481ae7d5
bug in stylize_markdown -5fc6bd6454
api: nvim_set_keymap() throws error even in pcall() #33228 -2b2a90051e
api: use E226 instead of E227 for duplicate abbreviation (#33159) -056dbf3ea7
api: use original LHS in keymap error message #33135 -fb71d631a5
api: wrong return value with reverse range + overlap #32956 -fcee5df0fc
checkhealth: check g:loaded_xx_provider for all providers #33168 -89e0ea1788
checkhealth: check outdated pynvim version properly #33175 -adfd4b9f4f
checkhealth: don't override user "q" keymap #33132 -06df3e0c0d
cmdline: avoid empty @: register after :<CR> (#33126) -53def2a877
cmdline: empty ext_cmdline block events for :<CR> #33118 -b8e5fd51fd
column: don't count signs on lines beyond eob #33410 -e4007551c4
completion: avoid freeing uninitialized value (#33459) -6e51d39696
decor: enable decoration provider in on_start #33337 -837c9d0409
defaults: enable :terminal [[,]] motion in operator-pending mode #33217 -2182272139
defaults: keywordprg=:help on Windows #33336 -7e884b78bf
defaults: visual-mode [[,]] for :terminal shell prompts #33203 -2a04161a35
desktop: cannot open filename with spaces using OS file manager #33161 -2cd735d159
display: scroll logic does not take into account concealed topline (#33054) -c4a19bff4e
display: scroll redrawing doesn't account for virt_lines above fold #33374 -02123bac0d
display: wrong cursor column with 'concealcursor' = "n" and virt_text (#33218) -837faf7065
editor: respect [+cmd] when executing :drop #33339 -155529b91a
events: avoid superfluous CursorMovedI on first autocmd (#33588) -c158d41cec
health: expecting nonexistent "inotifywait" function #33312 -06c2886569
health: message should mention "vim.provider" #33095 -279a0e78c9
highlight: no match highlight during :substitute prompt #33262 -b5158e8e92
lsp: "bold" border for vim.lsp.buf.hover #33395 -1e8e74dbff
lsp: better handling of "*" configs -478f5d0070
lsp: cycling signatures with the default `config.focusable` -2435d72283
lsp: opts.reuse_win does not jump if buf is already open #33476 -95f96a3d1b
lsp: prioritize showing active signature -a9afa6b152
lsp: warn on missing config in :checkhealth #33087 -2b14447803
man.lua: noisy "ENOENT" error on Windows #33435 -8aa49a8e9b
man.lua: useless executability check #33438 -4d87229789
marks: clamp conceal_lines corrected line number #33464 -9da90af0f7
marks: wrong display after inserting/deleting lines #33389 -3b0c88a537
messages: single msg_show event for multiple :set options #33555 -3df9db58dc
messages: verbose message emitted without kind #33305 -c61e8c6e70
mouse: crash with click on win-separator in statusline (#33091) -dcd5e4574a
mouse: do not fetch clipboard twice when pasting with middle button #33494 -526444c4ff
mouse: mouseclick after conceal_lines is miscalculated #33451 -326eacef93
move: adjust for concealed lines above topline after scrolling up (#33211) -649bce6e73
provider: misleading :checkhealth if user sets g:loaded_python3_provider=1 #32696 -c57a36cd59
pum: fix heap-buffer-overflow with 'rightleft' (#33146) -c1d3777db2
snippet: use <cmd>call cursor() for visual range -70f3e15298
treesitter: don't memoize modified headings (#33186) -e342b9a25a
treesitter: fix `:InspectTree` incorrect injections -4c1121bd33
treesitter: not refreshing virtualtext contents #33361 -646a8f663e
tui: ensure all pending escape sequences are processed before exiting #32151 -9909580df2
ui: exclude unfocusable windows from 'complete' "w" completion -ccb078bbb0
ui: wincmd _ should not increase 'cmdheight' above 0 (#33056) -29011e4d45
vim.hl: nvim_buf_del_extmark on invalid buffer #33331 -9056c01a95
vim.lsp.inlay_hint: requesting inlay_hints even when disabled #32999 -4422b9bbd0
vim.system: unclear non-executable message #33455 -a4b6705e87
window: crash on negative window height with 'winbar' #33250 PERFORMANCE -------------------------------------------------------------------------------- -b9c9b15ad7
snippet: use "[count]|" to move cursor #33571 VIM PATCHES -------------------------------------------------------------------------------- -a97713485d
9.0.1653: Amiga: default 'viewdir' may not work -cdd3f2a2e6
9.0.1654: MS-Windows: test for default 'viewdir' fails -b7de104d86
9.1.0721: tests: test_mksession does not consider XDG_CONFIG_HOME -6514e2c7ba
9.1.1247: fragile setup to get (preferred) keys from key_name_entry (#33102) -2084cda6f9
9.1.1260: Hang when filtering buffer with NUL bytes (#33192) -02bf23b4bf
9.1.1269: completion: compl_shown_match is updated when starting keyword completion -e3506ede27
9.1.1272: completion: in keyword completion Ctrl_P cannot go back after Ctrl_N -a92155b86b
9.1.1286: filetype: help files not detected when 'iskeyword' includes ":" (#33377) -b694131c3b
9.1.1303: missing out-of-memory check in linematch.c (#33487) -0c315feddf
9.1.1305: completion menu active after switching windows/tabs (#33488) -12298be0fe
9.1.1310: completion: redundant check for preinsert effect (#33505) -4205fdee1d
9.1.1314: max allowed string width too small -248528c907
9.1.1317: noisy error when restoring folds from session fails -1a6ddeee41
9.1.1318: tests: test_format fails -448c2cec9d
9.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 help
lists all build targets.build/CMakeCache.txt
(orcmake -LAH build/
) contains the resolved values of all CMake variables.build/compile_commands.json
shows 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.