vim-patch:8.1.2194: modifyOtherKeys is not enabled by default vim-patch:8.2.0513: reading past allocate memory when using varargs vim-patch:8.2.0556: Vim9: memory leak when finding common type vim-patch:8.2.1446: Vim9: line number in error message is not correct vim-patch:8.2.1680: Vim9: line number for compare error is wrong vim-patch:8.2.1817: Vim9: wrong instruction when reusing a local variable spot vim-patch:8.2.2159: Vim9: when declaring a list it is not allocated yet vim-patch:8.2.2210: Vim9: allocating a type to set TTFLAG_BOOL_OK vim-patch:8.2.2550: signal stack size is wrong with latest glibc 2.34 vim-patch:8.2.2585: Vim9: illegal memory access vim-patch:8.2.2615: test is sourcing the wrong file vim-patch:8.2.2791: Vim9: memory leak when using \=expr in :substitute vim-patch:8.2.3065: Vim9: error when sourcing script twice and reusing function vim-patch:8.2.3310: Vim9: unpack assignment does not mention source of type error vim-patch:8.2.3327: no check for sysconf() failing vim-patch:8.2.4558: Motif: using default colors does not work as expected vim-patch:9.0.0039: not all systems have GDK_KEY_dead_circumflex vim-patch:9.0.0068: build fails with tiny features vim-patch:9.0.0074: Coverity warns for double free vim-patch:9.0.0172: trying to allocate zero bytes vim-patch:9.0.0209: build error with small features vim-patch:9.0.0239: build failure without the +wildmenu feature vim-patch:9.0.0255: build failure without the eval feature vim-patch:9.0.0290: compiler warning for variable set but not used vim-patch:9.0.0367: Coverity complains about dropping sign of character vim-patch:9.0.0368: old Coverity warning for using NULL pointer vim-patch:9.0.0467: build failure vim-patch:9.0.0494: small build misses float function declaraitons vim-patch:9.0.0501: warning for using uninitialized value in mouse test vim-patch:9.0.0503: build failure vim-patch:9.0.0504: still a build failure vim-patch:9.0.0522: build fails on Appveyor vim-patch:9.0.0624: leaking argument type array vim-patch:9.0.0628: Coverity warns for not checking return value vim-patch:9.0.0658: tiny build fails on Mac OS vim-patch:9.0.0685: FORTIFY_SOURCE causes a crash in Vim9 script vim-patch:9.0.0689: compiler warning for unused function vim-patch:9.0.0717: compiler warning for unused variable in tiny build vim-patch:9.0.0787: mouse scrolling in terminal misbehaves without dll vim-patch:9.0.0792: MS-Windows: compiler complains about unused function vim-patch:9.0.0832: deprecation warning causes build failure vim-patch:9.0.0838: compiler warnings for unused variables vim-patch:9.0.0921: missing defined(PROTO) in #ifdef vim-patch:9.0.0929: build failure with tiny version vim-patch:9.0.0972: build failure on some systems vim-patch:9.0.0981: build error in tiny version vim-patch:9.0.0986: build failure with tiny version vim-patch:9.0.0997: Coverity warns for dead code vim-patch:9.0.1003: tiny build fails vim-patch:9.0.1037: lalloc(0) error for a class without members vim-patch:9.0.1055: Coverity warns for using uninitialized memory vim-patch:9.0.1059: build failure with some compilers vim-patch:9.0.1075: build fails if compiler doesn't allow declaration after case vim-patch:9.0.1102: complicated use of #ifdef vim-patch:9.0.1109: leaking allocated type vim-patch:9.0.1110: build fails on Mac OS X 10.4/10.5 vim-patch:9.0.1116: compiler may complain about an unused function vim-patch:9.0.1131: build failure without the +eval feature vim-patch:9.0.1153: build error with some compilers vim-patch:9.0.1154: Coverity warns for dead code vim-patch:9.0.1162: configure does not handle all FORTIFY_SOURCE variants vim-patch:9.0.1173: compiler warning for unused variable on non-Unix systems vim-patch:9.0.1180: compiler warnings without the +job feature vim-patch:9.0.1216: Coverity warns for ignoring return value vim-patch:9.0.1219: handling of FORTIFY_SOURCE flags doesn't match Fedora usage vim-patch:9.0.1260: Coverity warns for possible NULL pointer usage vim-patch:9.0.1323: build failure with +eval feature vim-patch:9.0.1340: Coverity warns for using NULL pointer vim-patch:9.0.1341: build error with mzscheme but without GUI vim-patch:9.0.1364: build error with older Mac OS vim-patch:9.0.1420: build failure because SIZE_MAX is not defined vim-patch:9.0.1465: Haiku build fails vim-patch:9.0.1642: build failure with tiny features vim-patch:9.0.1780: Vim9 type not defined during object creation vim-patch:9.0.1850: Vim9: wrong line number where options set vim-patch:9.0.1902: Vim9: Coverity complains about dead code vim-patch:9.0.1905: FEAT_FLOAT no longer defined vim-patch:9.0.1988: Vim9: potential use-after-free for class members vim-patch:9.0.1993: warning about unused function definition vim-patch:9.0.2003: xxd: compilation warning vim-patch:9.0.2014: confusing ifdefs in if_<lang>.c vim-patch:9.0.2048: python: uninitialized warning vim-patch:9.0.2115: crash when callback function aborts because of recursiveness vim-patch:9.0.2120: un-used assignment in do_source_buffer_init vim-patch:9.0.2129: [security]: use-after-free in call_dfunc() vim-patch:9.0.2166: Memory leak in Configure Script when checking GTK vim-patch:9.0.2175: Compiler warning for uninitialized var vim-patch:9.0.2185: Coverity complains about not checking return value vim-patch:9.1.0018: use of #if instead of #ifdef vim-patch:9.1.0031: Link Error on Windows vim-patch:9.1.0036: MS-Windows: Warning about unused variable vim-patch:9.1.0072: Not able to build without FEAT_DIFF vim-patch:9.1.0203: build-error on GNU/Hurd vim-patch:9.1.0209: leaking memory in exe_newdict() on error vim-patch:9.1.0210: Motif: leaking memory when mui_mch_dialog() fails vim-patch:9.1.0298: MS-Windows: GETTEXT_PATH hard-coded in src/po/Make_mvc.mak vim-patch:9.1.0346: Patch v9.1.0338 fixed sourcing a script with import vim-patch:9.1.0362: expanding rc config files does not work well vim-patch:9.1.0432: Ancient XPM preprocessor hack may cause build errors vim-patch:9.1.0530: xxd: MSVC warning about non-ASCII character vim-patch:9.1.0561: netbeans: variable used un-initialized (Coverity) vim-patch:9.1.0609: outdated comments in Makefile vim-patch:9.1.0621: MS-Windows: startup code can be improved vim-patch:9.1.0627: MinGW: build-error when COVERAGE is enabled vim-patch:9.1.0630: MS-Windows: build fails with VIMDLL and mzscheme vim-patch:9.1.0825: compile error for non-diff builds vim-patch:9.1.0829: Vim source code uses a mix of tabs and spaces vim-patch:9.1.0842: not checking for the sync() systemcall vim-patch:9.1.0858: Coverity complains about dead code vim-patch:9.1.0947: short-description vim-patch:9.1.0959: Coverity complains about type conversion vim-patch:9.1.0970: VMS: build errors on VMS architecture vim-patch:9.1.1032: link error when FEAT_SPELL not defined vim-patch:9.1.1041: Vim9: out-of-bound access when echoing an enum vim-patch:9.1.1079: GUI late startup leads to uninitialized scrollbars vim-patch:9.1.1153: build error on Haiku vim-patch:9.1.1199: gvim uses hardcoded xpm icon file vim-patch:9.1.1248: compile error when building without FEAT_QUICKFIX vim-patch:9.1.1251: if_python: build error with tuples and dynamic python vim-patch:9.1.1270: missing out-of-memory checks in buffer.c vim-patch:9.1.1316: missing memory allocation failure in os_mswin.c vim-patch:9.1.1440: too many strlen() calls in os_win32.c rim-patch:9.1.1514: Coverity complains about the use of tmpfile() vim-patch:9.1.1547: Wayland: missing ifdef vim-patch:9.1.1580: possible memory leak in vim9type.c vim-patch:9.1.1581: possible memory leak in vim9generics.c vim-patch:9.1.1624: Cscope not enabled on MacOS vim-patch:9.1.1661: Coverity finds a few issues in clientserver.c vim-patch:9.1.1662: Issues with proto files: missing or inconsistent prototypes. vim-patch:9.1.1677: wrong ifdef in message.c vim-patch:9.1.1678: Amiga: cannot handle large undo files vim-patch:9.1.1705: time.h include is available on all platforms vim-patch:9.1.1707: diff.pro contains #ifdefs vim-patch:9.1.1716: wrong indent in win_line() vim-patch:9.1.1723: Missing ifdefs vim-patch:9.1.1793: Link error when build without channel feature vim-patch:9.1.1804: Wrong indentation of nested ifdefs in findfile.c vim-patch:9.1.1806: Missing PROTO defines vim-patch:9.1.1842: MS-Windows: build failure when mzscheme is included vim-patch:9.1.1851: memory leak in heredoc_get() vim-patch:9.1.1852: vim9class: memory leak in parse_member()
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.
