0.7.0
NVIM v0.7.0
NVIM v0.7.0
Build type: Release
LuaJIT 2.1.0-beta3
Install
Windows
Zip
- Download nvim-win64.zip
- Extract the zip.
- Run
nvim-qt.exe
MSI
- Download nvim-win64.msi
- Run the MSI
- Search and run
nvim-qt.exeor runnvim.exeon your CLI of choice.
macOS
- Download nvim-macos.tar.gz
- Extract:
tar xzvf nvim-macos.tar.gz - Run
./nvim-osx64/bin/nvim
Linux (x64)
Tarball
- Download nvim-linux64.tar.gz
- Extract:
tar xzvf nvim-linux64.tar.gz - Run
./nvim-linux64/bin/nvim
Debian Package
- Download nvim-linux64.deb
- Install the package using
sudo apt install ./nvim-linux64.deb - Run
nvim
AppImage
- Download nvim.appimage
- Run
chmod u+x nvim.appimage && ./nvim.appimage- If your system does not have FUSE you can extract the appimage:
./nvim.appimage --appimage-extract ./squashfs-root/usr/bin/nvim
- If your system does not have FUSE you can extract the appimage:
Other
- Install by package manager
SHA256 Checksums
5b3fced3f185ae1e1497cb5f949597c4065585fc26e7cd25a31f5f791dbd9b59 nvim-linux64.tar.gz
4c36e1708b99f24327cde6fff2c19c2b4217e1a289fac90c2c10492df3ea7a71 nvim-linux64.deb
ac1caae4f1c54e0ce126b9313d993cb0d1cc4a81ef3e09dd26772be37aaa61db nvim.appimage
9711fd721732ac189e8fa40aea6aadc5816861cf53f6ac498bd21cd6cf602f85 nvim.appimage.zsync
6260a2edb2da35af02b986c8a6506138afcb3f78f81a80734214b2cadf390a42 nvim-macos.tar.gz
a72a90e2897ea296b777c325a37c981a0b51e2fe0c8b8735e3366b65e958cddc nvim-win64.zip
c79b647338c3728e8d690ff70f81a4dda815adf9195cfdcfaa4f715514b0b3b2 nvim-win64.msi
BREAKING CHANGES
Support for Python 2 is dropped. For Python 3, the minimum supported version is 3.6. Legacy
:pythonxcommands are still available, and always uses the python 3 provider.api: Existing usages of
nvim_buf_set_textthat use negative line numbers will be off-by-one.highlight: signature of
vim.highlight.rangewas changed.input: distinguish between some input keys which previously were synonyms. This will break some exiting mappings.
<cr>,<tab>and<esc>are no longer considered equivalent to<c-m>,<c-i>and<c-[> respectively. In case the terminal or GUI supports distinguishing these keys, these can now be mapped separately. But even if the terminal only can send one code you might still need to change what variant is used in the config.
Features
Core APIs:
api: add support for lua function & description in keymap (b411f43)
api: add api and lua autocmds (991e472)
api: nvim_clear_autocmd (b80651e)
api: pass args table to autocommand callbacks (30bc02c)
api: remove Lua autocommand callbacks when they return true (#17784) (be35d3c)
api: implement nvim_{add,del}_user_command (eff11b3)
api: add nvim_get_option_value (71ac00c)
highlight: ns=0 to set :highlight namespace (4aa0cdd)
highlight: support for blend in nvim_set_hl (#17516) (b5bf487)
api: add strikethrough, nocombine to set_hl (cb18545)
api: relax statusline fillchar width check (3011794)
Lua:
lua: add vim.keymap (6d41f65)
lua: add proper support of luv threads (b87867e)
lua: make :lua =expr print result of expr (d442546)
lua: handle lazy submodules in
:lua vim.wildmenu completion (5ed6080)lua: add support for multiple optional types in vim.validate (#16864) (55c4393)
lua: show proper verbose output for lua configuration (ebfe083)
lua: more conversions between LuaRef and Vim Funcref (c8656e4)
lua: support converting nested Funcref back to LuaRef (#17749) (cac90d2)
call __tostring on lua errors if possible before reporting to user (81bffbd)
filetype.lua: add support for files under .git (7a574e5)
filetype.lua: add support for patch files (27b664a)
filetype.lua: add support for tmux.conf files (94d5358)
filetype.lua: Add typescript extension to filetype detection (#16923) (8ade800)
filetype.lua: fix .cc file not detected (c38d602)
filetype.lua: fix .env file not detected (19864bd)
filetype: convert patterns for mail buffers (#17238) (4458413)
filetype: support scripts.vim with filetype.lua (#17517) (fdea157)
UI and decorations:
- decorations: support signs (30e4cc3)
- extmarks: add strict option (11142f6)
- api: expose extmark more details (5971b86)
- api: expose extmark right_gravity and end_right_gravity (3d9ae9d)
- use nvim_buf_set_extmark for vim.highlight (#16963) (b455e01)
- statusline: support multibyte fillchar (be15ac0)
- add support for global statusline (5ab1229), closes #9342
Treesitter:
- ui: allow conceal to be defined in decorations and tree-sitter queries (6eca9b6)
- tree-sitter: allow Atom-style capture fallbacks (#14196) (8ab5ec4)
- treesitter: add more default groups to highlight map (#17835) (6d648f5)
- treesitter: multiline match predicates (6e6c36c)
- treesitter: set allocator when possible (b1e0aa6)
- ts: add support for multiline nodes in get_node_text (#14999) (1f3c059)
- ts: expose minimum language version to lua (#17186) (8c140be)
- runtime: add query filetype (#17905) (2e85af4)
LSP and diagnostic:
- diagnostic: add "code" to the diagnostic structure (#17510) (5d6006f)
- diagnostic: allow retrieving current diagnostic config (c915571)
- lsp,diagnostic: open folds in jump-related functions (#16520) (222ef0c)
- lsp: add buf_detach_client (#16250) (1b04da5)
- lsp: add handler for workspace/workspaceFolders (#17149) (8e702c1)
- lsp: dynamically generate list title in response_to_list (#17081) (574a582)
- lsp: enable default debounce of 150 ms (#16908) (55a59e5)
- lsp: skip or reduce debounce after idle (#16881) (b680392)
- lsp: use
vim.ui.selectfor selecting lsp client (#16531) (f99f3d9)
Initial work to support remote TUI (and ui client library):
ui_client: connect to remote ui (a4400bf)
ui_client: implement event handlers (794d274)
ui_client: handle resize events (c6640d0)
ui_client: implement async paste handling (55b6ade)
ui_client: pass user input to remote server (6636160)
--headless: add on_print callback to stdioopen (a4069a3)
add autocommand event when search wraps around (#8487) (8ad6015)
autocmd: add Recording autocmds (8a4e26c)
autocmd: populate v:event in RecordingLeave (#16828) (f65b0d4)
completion: support selecting item via API from Lua mapping (c7aa646)
eval/method: partially port v8.1.1993 (4efcb72), closes #10848
eval/method: partially port v8.1.1996 (2ee0bc0)
eval/method: partially port v8.1.2004 (0f4510c)
eval: partially port v8.2.0878 (d746f5a), closes vim/vim#5481
eval: port emsg from v8.2.3284 (8adbba7)
events: add DirChangedPre (059d36e), closes vim/vim#9721
events: support SIGWINCH for Signal event #18029 (b2cb05b), closes #15411
hardcopy: check gui colours for highlights first (e5b5cbd)
highlight: support color names for cterm (dc24eeb)
ignore nore on maps (0347875)
input: delay some conversions to vgetc() (d7488bf)
input: enable /, /, /<c-[> pairs unconditionally (ed88ca7)
keymap: return nil from an expr keymap (58140a9)
mappings: considering map description when filtering (#17423) (9a74c2b)
provider: remove support for python2 and python3.[3-5] (baec0d3)
remote: add basic --remote support (5862176)
term: use vterm_output_set_callback() (7813b48)
test: use nvim_exec in helpers.source() #16064 (72652cb), closes #16071
trigger ModeChanged for terminal modes (fdfd1ed)
tui: add support for
CSI 4 : [2,4,5] m(f89fb41), closes #17362tui: enable CSI u keys (a11ff55)
vim-patch.sh: support additional args for -s (0ec92bb)
Performance Improvements
- lsp: request only changed portions of the buffer in changetracking (#17118) (9055ec5)
- only redraw concealed line if cursor has moved horizontally (595c1a7), closes #17889
- pre-compile embedded Lua source into bytecode (#16631) (4240ce8)
- screen: reduce cursorline redrawing when jumping around (c29a14d), closes vim/vim#9996
- treesitter: cache query parsing (9c26939)
- api: elide luaref copy when setting 'callback' in nvim_set_keymap (9f489f5)
Bug Fixes
- --headless: do not block on press-enter prompts when no UI (5b34c2a), closes #9358 #11718 #15910
- not shown in :map commands (07a98b1)
- add forkpty for SunOS variants (2c8f4d0)
- add STRNLEN compatability macro (8f1fdbc)
- anonymous sid not working (7b6ee3e)
- api, lua: return NIL on failure to find converted function (#17779) (77eb6f9)
- api/nvim_win_call: share common win_execute logic (452b46f)
- api: allow empty list for cterm in nvim_set_hl (e35a2d8)
- api: allow nvim_buf_set_extmark to accept end_row key (#16548) (cf32053)
- api: convert blob to NUL-terminated API string (f6cc604)
- api: correctly handle negative line numbers for nvim_buf_set_text (#17498) (1500447), closes #15181
- api: correctly pass f-args for nvim_create_user_command (#18098) (e463eb8)
- api: delete all autocmds with the same ID (dc3bbd3)
- api: force redefinition of user commands by default (#16918) (3923843)
- api: highlight attribute for underline (96bb178), closes #17624
- api: improve autocmd error handling (9292938)
- api: include event in get_autocmds (#17553) (37a86a2)
- api: make nil value in nvim_set_option_value clear local value (#16710) (33cd1ba)
- api: nvim__set_hl_ns causes extra redraws (505c12c)
- api: nvim_win_set_cursor() redraw for cursorline and statusline (f92e749)
- api: re-route nvim_get_runtime_file errors (d512be5)
- api: use changedir_func() in nvim_set_current_dir() (23c3f7f)
- api: validate command names in nvim_add_user_command (#17406) (238b944)
- api: validate user_command name (#17004) (a34652e)
- append test for checking zero width node range (58d81ef)
- aucmd_win: always make aucmd_win the last window (89712dc)
- aucmd_win: ensure aucmd_win stays floating (2deffb5)
- autocmd: clean up autocmds only when needed (#17593) (d5bd7ff)
- autocmd: restore autocmd showing behavior (74a2774)
- autoload variables not loaded with vim.g & nvim_get_var (f292dd2)
- bounds check for underdot (7fd1182)
- build: check for empty value of LUAC_PRG (#16711) (eceb0b3)
- build: check that LuaJIT has required modules for compilation (#16714) (abdf3a8)
- build: install luajit modules on windows (#16658) (2abd178)
- channel: fix channel consistency (5051510)
- check for interrupt in nvim_echo, write_msg and nlua_print (#16537) (db4bc32)
- checkhealth: make provider checkhealth output more consistent (#17722) (33ada23)
- ci/backport: check for event_name == "pull_request_target" (50c8cc3)
- ci: provide necessary permissions for calling workflow (b55e659)
- clang/'Dead store': do not assign endcol (#17788) (876d22f)
- close floating windows when calling win_close() (85ae04d)
- completion: prevent K_LUA from closing pum (42e5fd3)
- completion: update submode message when selecting from API (#17022) (69f3719)
- correct vertical dragging room calculation with global statusline (#17928) (0d4bd42)
- coverity/175977: big parameter passed by value (da89725)
- coverity/188749: nullify pointer to fix use-after-free (d224957)
- coverity/340720: error if nvim_eval_statusline given invalid winid (e850a92)
- coverity: dead code and operands don't affect result #17662 (c3a6ff6)
- decorations: do not put empty virt_text (#17872) (ba257d7)
- define NAME_MAX from _XOPEN_NAME_MAX (8fdf1b2)
- diagnostic: allow setting arbitrary config values (984270c)
- diagnostic: assert that diagnostics have line number and column (#16683) (b515160)
- diagnostic: clamp diagnostics on negative line numbers (#16496) (254c22a)
- diagnostic: escape special chars in file names (#16527) (62f0157)
- diagnostic: improve validation for list arguments (#16855) (838631e)
- diagnostic: make
open_floatrespect global diagnostic options (#17879) (a8e2c45), closes #17878 - diagnostic: only set default handler config if unset (8a27205)
- diagnostic: resolve nil opts tables (fc8af96)
- diagnostic: respect "if_many" source option for virtual text (#16653) (818ae74)
- diagnostic: set effective buffer number for DiagnosticChanged autocmd (#16474) (99f6260)
- diagnostic: set effective buffer number in autocmd (again) (#16589) (6063e07), closes #16474
- diagnostic: use botright copen for qflist (#17475) (d80c9b9)
- diff: make algorithm work for vim.diff (#17300) (92e92f0), closes #17207
- do not cast offset to char_u (1a88729)
- do not pass aucmd to the callback (#17650) (4f007a7)
- do not save K_EVENT as lastc in Insert mode (ab1ceaa)
- docs: add bufnr and user_data to diagnostic-structure (#16619) (3aff3d6)
- docs: spelling in new underlines docs (4472820)
- don't include pty.h on SunOS (435dd04)
- don't use cfsetspeed, use i and o variants (05f9f63)
- enable filetype detection and syntax highlighting with --clean (
These notes run past the length kept in the archive. The rest is on the publisher’s page.