Vim-fork focused on extensibility and usability
Go to file
Justin M. Keyes 535fb9488c NVIM v0.7.1
BREAKING CHANGES:
fdd5178581 #18986 introduce $NVIM, unset $NVIM_LISTEN_ADDRESS

VIM PATCHES:
git log --oneline --grep "vim-patch" v0.7.0..v0.7.1

FEATURES:
0b8faccade #18440 feat(api): add `group_name` to `nvim_get_autocmds`
b7a5278249 #18440 feat(api): add `group_name` to `nvim_get_autocmds`
9e5cef945a #18264 feat(tui): query terminal for CSI u support

FIXES:
b477afa3ea #19088
    71e2c49b17 refactor(tests): introduce testprg()
    175892fa37 #15913 fix: make_filter_cmd for :! powershell
f2b465232d #18331 fix(lsp): make sure to always reset active codelens refreshes
b3d754ccd7 #18869 fix(lsp): fix multi client handling in code action
e820c6d7c3 #19069
    cf9c097f34 fix(api): check for inclusive buffer line index out of bounds correctly
a05da1c05a #19053
    17299b302c fix(input): use correct grid when restoring cursor for <expr> mapping
7266150eff #19025
    40e13c8d95 #19010 fix(decorations): nvim_buf_set_extmark breaks conceal
38928b5cc2 #19023
    18e0d64666 fix(tui): fix piping output make nvim unusable
cd7ac0eb29 #19014
    433f3067a0 fix: use ctermbg/fg instead of bg/fg when use_rgb is false
30ae06c8fe #19009
    777d415da8 fix(highlight): let winhighlight use cursor
    f70e0832b1 #18981 fix(hl): return cterm fg/bg even if they match Normal
    ee210b0f74 fix(hl): DRY set_hl_group() sg_attr set
    512a8197c8 test(hl): Add Normal group set_hl/get_hl_by_name check
    79ca64a1ef #18024) fix(hl): set Normal hl group sg_attr value (fixes
2ebc76b226 #19001
    41709831ae fix(startup): nvim with --clean should not load user rplugins
ed9e6d19ab #18990 fix(treesitter): new iter if folded
05ce04e994 #18984
    fe42dea674 #18976 fix(lua): highlight.on_yank can close timer in twice
    f15d6094fc #18824 fix(lua): stop pending highlight.on_yank timer, if any
5243cb8a4b #18975
    bf4df2a629 fix(ui): do not call showmode() when setting window height
3cea4d6de9 #18942
    05f6883ee2 fix(buffer): disable buffer-updates before removing buffer from window
1dba6cf8f0 #18918
    0c9d666205 fix(input): fix macro recording with ALT and special key
fc4e4b38b2 #18905
    bd3bb128c0 test(ts): skip test if C parser is not available
d317cb2322 #18886
    1496f4212b fix(input): allow Ctrl-C to interrupt a recursive mapping even if mapped
0dc5bcd072 #18680
    3a1e8ef881 #18617 fix(autocmds): separate command from desc
cb1b4bbeae #18655 fix(lsp): only send diagnostics from current buffer in code_action()
01d0d2ce64 #18517 build(deps): bump Luv to HEAD - c51e7052e
f3ffb73b18 #18612 fix(health): return 0 if file not exists
496e786cad #18534
    0377973769 fix(runtime/genvimvim): omit s[ubstitute] from vimCommand
35075dcc22 #18469 fix(lsp): fix unnecessary buffers being added on empty diagnostics
9e040acfa3 #18468 fix(lsp): unify progress message handling
e28799f2d8 #18436 fix: display global statusline correctly with ext_messages
1e28068d0d #18415 fix: ensure has() does not change v:shell_error
203b088d75 #18411 build(deps): bump LuaJIT to HEAD - 91bc6b8ad
e502e8106a #18400 fix(treesitter): bump match limit up
7567d2195a #18390
    d165289055 fix(lsp): add missing bufnr argument
f3587babfd #18367
    631393a712 fix(filetype.lua): escape expansion of ~ when used as a pattern
08cd391047 #18360 fix(shared): avoid indexing unindexable values in vim.tbl_get()
508c8a597e #18362 fix(ftdetect): source plugins in autogroup
ffd46b7688 #18351
    2a6198319f fix(mac): use same $LANG fallback mechanism as Vim
8d4fbcb5b1 #18324
    b80ef0de2f fix(tui): disable extended keys before exiting alternate screen
14a5b6b8d4 #18312
    89260ea5d6 fix(input): only disable mapped CTRL-C interrupts when getting input
ef43e7d1f6 #18298 fix: suppress "is a directory" messages with shortmess 'F'
aff05c5730 #18256 fix: show autocmd output when F is in shortmess
fa7d8c333f #18229
    d916d2f876 #18227 fix(lua): don't mutate opts parameter of vim.keymap.del
f7e2ad7915 #18220 fix(treesitter): create new parser if language is not the same as cached parser
7f8faac39e #18205 fix(diagnostic): use nvim_exec_autocmds to trigger DiagnosticChanged
3ee089ebf4 #18167
    0f811afc96 fix(tui): update modifyOtherKeys reporting
2022-06-26 03:19:05 -07:00
.builds ci(freebsd): enable oldtests 2022-03-08 07:00:40 +08:00
.github ci(release): build a universal binary on macOS 2022-06-25 14:14:29 +02:00
ci ci(provider): skip installing perl provider on macOS 2022-06-05 22:04:01 +00:00
cmake ci: show failed message on Windows 2022-03-03 08:16:31 +08:00
config fix: add forkpty for SunOS variants 2021-12-12 11:29:56 +00:00
contrib chore(flake): bump flake (#17632) 2022-03-07 10:57:08 +01:00
man docs(man): omit misleading mention of environment for -u NORC (#16379) 2021-11-22 12:00:04 +01:00
packaging refactor(packaging): Windows: improve MSI, remove NSIS #18069 2022-04-11 07:58:46 -07:00
runtime NVIM v0.7.1 2022-06-26 03:19:05 -07:00
scripts fix(runtime/genvimvim): omit s[ubstitute] from vimCommand 2022-05-12 00:09:01 +00:00
snap cmake: install app icon in XDG hicolor icon theme (#14656) 2021-05-27 22:37:24 +02:00
src refactor(tests): introduce testprg() 2022-06-25 19:09:29 +02:00
test refactor(tests): introduce testprg() 2022-06-25 19:09:29 +02:00
third-party fix(build): strip trailing newline from variable (#19084) 2022-06-25 14:14:39 +02:00
unicode Update unicode files 2020-10-04 11:50:38 -04:00
.clang-format chore: align clang-format configuration with clint 2022-03-09 19:44:03 +08:00
.clangd Adding clangd language serever config file to point to build/ directory for compile_commands.json 2021-06-28 11:03:09 -04:00
.editorconfig chore(editorconfig): set max_line_length for .h and .in files (#16775) 2021-12-24 22:35:38 -07:00
.flake8 ci: pylint target via flake8 2019-07-29 22:14:23 +02:00
.git-blame-ignore-revs chore: update .git-blame-ignore-revs 2022-04-03 16:12:30 -07:00
.gitattributes fix: include ci/ in exported tarball 2021-10-01 19:53:27 -04:00
.gitignore feat(lua): add api and lua autocmds 2022-02-27 22:04:55 +01:00
.luacheckrc fix(filetype): set default ft_ignore_pat in filetype.lua (#16917) 2022-01-04 15:02:01 -07:00
.luacov Lua: vim.validate() 2019-11-10 22:50:24 -08:00
.mailmap chore: add .mailmap (#17453) 2022-03-29 19:44:35 +02:00
.travis.yml build: update cmake min version to 3.10 #16065 2021-10-19 19:19:33 -07:00
BACKERS.md Update backer URL 2015-11-11 19:50:33 -08:00
BSDmakefile feat(lua)!: register_keystroke_callback => on_key 2021-09-09 06:09:33 -07:00
CMakeLists.txt NVIM v0.7.1 2022-06-26 03:19:05 -07:00
CONTRIBUTING.md docs: typo fixes (#17859) 2022-04-15 12:35:06 +02:00
LICENSE.txt ci: improved cpack packaging 2022-02-24 19:54:44 +10:00
MAINTAIN.md docs: typo fixes (#17859) 2022-04-15 12:35:06 +02:00
Makefile ci(commitlint): use -u NONE instead of --clean 2022-03-27 18:28:11 +02:00
README.md feat(test): use nvim_exec in helpers.source() #16064 2022-03-27 10:25:55 -07:00
codecov.yml bundle: move tree-sitter as a bundled dep 2020-11-03 10:39:35 +01:00

README.md

Neovim

Documentation | Chat | Twitter

GitHub CI Codecov coverage Coverity Scan analysis Clang analysis PVS-Studio analysis

Packages Debian CI Downloads nvim

Neovim is a project that seeks to aggressively refactor Vim in order to:

See the Introduction wiki page and Roadmap for more information.

Features

See :help nvim-features for the full list!

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 the Building Neovim wiki page 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_INSTALL_PREFIX=/full/path/
make install

CMake hints for inspecting the build:

  • cmake --build build --target help lists all build targets.
  • build/CMakeCache.txt (or cmake -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

├─ ci/              build automation
├─ cmake/           build scripts
├─ runtime/         user plugins/docs
├─ src/nvim/        application source code (see src/nvim/README.md)
│  ├─ api/          API subsystem
│  ├─ eval/         VimL 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
├─ third-party/     CMake subproject to build dependencies
└─ 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:

        http://iccf-holland.org/
        http://www.vim.org/iccf/
        http://www.iccf.nl/

You can also sponsor the development of Vim.  Vim sponsors can vote for
features.  The money goes to Uganda anyway.