vim-patch: 8.1.1985: code for dealing with paths is spread out vim-patch:8.2.0375: Coverity warning for not using return value vim-patch:8.2.0471: missing change to compile_list() vim-patch:8.2.0489: Vim9: memory leaks vim-patch:8.2.0494: Vim9: asan error vim-patch:8.2.0685: Build failure vim-patch:8.2.0759: Vim9: missing changes for performance improvements vim-patch:8.2.1740: test fails without the terminal feature vim-patch:8.2.1742: test still fails without the terminal feature vim-patch:8.2.1880: Vim9: asan complains about adding zero to NULL vim-patch:8.2.1958: build failure with timers vim-patch:8.2.2248: ASAN error on exit with GUI vim-patch:8.2.2273: build failure vim-patch:8.2.2382: build failure vim-patch:8.2.2401: build fails without +profiling feature vim-patch:8.2.2536: Coverity complains about unchecked return value vim-patch:8.2.2599: build failure vim-patch:8.2.2715: Vim9: tests fail without the channel feature vim-patch:8.2.2987: build failure with normal features vim-patch:8.2.3092: Vim9: builtin function test fails without +channel feature vim-patch:8.2.3291: Coverity warns for not checking return value vim-patch:8.2.3505: Vim9: build failure without the +eval feature vim-patch:8.2.3541: compiler warning for unused variable in tiny version vim-patch:8.2.3546: build failure without the +eval feature vim-patch:8.2.3563: build failure with +eval but without GUI or +termguicolors vim-patch:8.2.3566: build failure on old systems when using nano timestamp vim-patch:8.2.3621: build failure vim-patch:8.2.3636: Coverity warns for unreachable code vim-patch:8.2.3672: build failure with unsigned char vim-patch:8.2.3691: build failure with small features vim-patch:8.2.3693: Coverity warns for possibly using a NULL pointer vim-patch:8.2.3718: compiler warns for unused variable without +textprop vim-patch:8.2.3724: build error for missing error message in small build vim-patch:8.2.3736: test fails without the channel feature vim-patch:8.2.3740: memory left allocated on exit when using Tcl vim-patch:8.2.3752: build error when using Photon GUI vim-patch:8.2.3791: build error with +cindent but without +smartindent vim-patch:8.2.3868: Vim9: function test fails vim-patch:8.2.3926: build failure without the 'autochdir' option vim-patch:8.2.3931: Coverity reports a memory leak vim-patch:8.2.3958: build failure compiling xxd with "-std=c2x" vim-patch:8.2.3963: build failure with tiny and small features vim-patch:8.2.3988: tiny build fails vim-patch:8.2.3998: asan error for adding zero to NULL vim-patch:8.2.4015: build failure with tiny features vim-patch:8.2.4034: Coverity warns for possibly using a NULL pointer vim-patch:8.2.4042: Vim9: build error vim-patch:8.2.4054: Vim9 script test fails vim-patch:8.2.4079: MS-Windows: "gvim --version" didn't work with VIMDLL vim-patch:8.2.4081: CodeQL reports problem in if_cscope causing it to fail vim-patch:8.2.4119: build failure when disabling the channel feature vim-patch:8.2.4127: build failure without the +eval feature vim-patch:8.2.4150: Coverity warns for using pointer after free vim-patch:8.2.4239: build fails with unusual configuration vim-patch:8.2.4272: Vim9 expr test fails without the channel feature vim-patch:8.2.4278: build with Athena GUI fails vim-patch:8.2.4300: cannot build tiny version vim-patch:8.2.4368: Amiga: a few compiler warnings vim-patch:8.2.4369: redundant #ifdef argument vim-patch:8.2.4385: cannot build tiny version vim-patch:8.2.4386: still cannot build tiny version vim-patch:8.2.4405: compiler warning for unused variable without +folding vim-patch:8.2.4413: Vim9: Coverity warns for using NULL pointer vim-patch:8.2.4470: Coverity warns for uninitialized variable vim-patch:8.2.4488: build error with +eval but without +channel or +job vim-patch:8.2.4516: build failure without the +eval feature vim-patch:8.2.4521: build failure without the +diff feature vim-patch:8.2.4532: suspending with CTRL-Z does not work on OpenBSD vim-patch:8.2.4549: cannot build with Motif and editres vim-patch:8.2.4550: Motif: cannot set the color of the scrollbar thumb vim-patch:8.2.4556: test fails without the +job or +channel feature vim-patch:8.2.4560: suspending with CTRL-Z does not work on DragonFlyBSD vim-patch:8.2.4654: missing changes for import check vim-patch:8.2.4680: build failure without +postscript vim-patch:8.2.4681: build fails with a combination of features vim-patch:8.2.4725: unused variable in tiny build vim-patch:8.2.4756: build error without the +eval feature vim-patch:8.2.4769: build warning with UCRT vim-patch:8.2.4771: Coverity warns for not checking return value vim-patch:8.2.4815: cannot build with older GTK version vim-patch:8.2.4863: accessing freed memory in test without the +channel feature vim-patch:8.2.4878: valgrind warning for using uninitialized variable vim-patch:8.2.4884: test fails without the job/channel feature vim-patch:8.2.4898: Coverity complains about pointer usage vim-patch:8.2.4900: Vim9 expression test fails without the job feature vim-patch:8.2.4976: Coverity complains about not restoring a saved value vim-patch:8.2.5021: build fails with normal features and +terminal vim-patch:8.2.5067: timer_create is not available on every Mac system vim-patch:8.2.5071: with some Mac OS version clockid_t is redefined vim-patch:8.2.5125: MS-Windows: warnings from MinGW compiler vim-patch:8.2.5133: MacOS: build fails vim-patch:8.2.5137: cannot build without the +channel feature vim-patch:8.2.5168: cannot build with Python 3.11 vim-patch:9.0.0123: cannot build with small features vim-patch:9.0.0159: cannot build with small features vim-patch:9.0.0161: warning for uninitialized variable vim-patch:9.0.0237: Mac: cannot build if dispatch.h is not available vim-patch:9.0.0256: compiler warning for uninitialized variables vim-patch:9.0.0378: compiler warning for uninitialized variable vim-patch:9.0.0413: ASAN reports a memory leak vim-patch:9.0.0462: ASAN warning for integer overflow vim-patch:9.0.0970: Coverity warns for uninitialized variable vim-patch:9.0.1042: ASAN gives false alarm about array access. vim-patch:9.0.1076: ASAN complains about NULL argument vim-patch:9.0.1085: compiler warns for uninitialized variable vim-patch:9.0.1666: compiler may warn for uninitialized variable vim-patch:9.1.0816: tests: not clear what tests cause asan failures vim-patch:9.1.1345: tests: Test_xxd_color2() test failure dump diff is misleading
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.
