vim-patch:8.2.1091: no check if opening a pty works
vim-patch:8.2.1120: Python code not tested properly
vim-patch:9.2.0911: makefiles do not build hardcopy_postscript.c
vim-patch:9.2.0915: tests: two terminal tests in test_popupwin fail on FreeBSD
vim-patch:8.2.0290: running individual test differs from all tests
vim-patch:8.2.1132: Vim9: return type of repeat() is not specific enough
vim-patch:8.2.1133: Vim9: return type of add() is not specific enough
vim-patch:8.2.1136: Vim9: return type of argv() is always any
vim-patch:8.2.1138: Vim9: return type of copy() and deepcopy() is any
vim-patch:8.2.1140: Vim9: return type of extend() is any
vim-patch:8.2.1141: Vim9: return type of filter() is any
vim-patch:8.2.1142: Vim9: return type of insert() is any
vim-patch:8.2.1143: Vim9: return type of remove() is any
vim-patch:8.2.1144: Vim9: return type of reverse() is any
vim-patch:8.2.1158: build error
vim-patch:8.2.1176: Vim9: not enough type checking in Vim9 script
vim-patch:8.2.1191: Vim9: crash when function calls itself
vim-patch:8.2.1205: Vim9: && and || work different when not compiled
vim-patch:8.2.1290: Vim9: cannot replace a global function
vim-patch:8.2.1355: Vim9: no error using :let for options and registers
vim-patch:8.2.1373: Vim9: no error for assigning to non-existing script var
vim-patch:8.2.1376: Vim9: expression mapping causes error for using :import
vim-patch:8.2.1380: Vim9: return type of getreg() is always a string
vim-patch:8.2.1387: Vim9: cannot assign to single letter variable with type
vim-patch:8.2.1403: Vim9: Vim highlighting may fail in cmdline window
vim-patch:8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
vim-patch:8.2.1447: Vim9: return type of keys() is list
vim-patch:8.2.1459: Vim9: declaring script var in script does not infer the type
vim-patch:8.2.1477: Vim9: error when using bufnr('%')
vim-patch:8.2.1502: Vim9: can use += with a :let command at script level
vim-patch:8.2.1509: vertical separator is cleared when dragging a popup window
vim-patch:8.2.1514: multibyte vertical separator is cleared when dragging popup
vim-patch:8.2.4962: files show up in git status
vim-patch:9.2.0918: screen: fill char with a zero low byte is stored as a NUL cell
vim-patch:9.2.0919: screen: the wrong array is copied into ScreenCols on a resize
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.txt for details.
