Besides the "visible" improvements, this release features numerous internal improvements to the UI/screen code and test infrastructure. Numerous patches were merged from Vim, which are not mentioned below. FEATURES:07ad5d71abclipboard: Support custom VimL functions #9304725da1feeb#9401 win/TUI: Improve terminal/console support7a8dadbedb#9077 startup: Use $XDG_CONFIG_DIRS/nvim/sysinit.vim if it existsfeec926633#9299 support <cmd> mapping in more places0653ed63a5#9028 diff/highlight: Show underline for low-priority CursorLinebddcbbb571signs: Add "numhl" argument #911305f9c7c2f7clipboard: support Wayland (#9230)14ae394532#9052 TUI: add support for undercurl and underline color4fa3492a6f#9023 man.vim: soft (dynamic) wrap #9023 API:8b39e4ec79#6920 API: implement object namespacesb1aaa0a881API: Implement nvim_win_set_buf() #91008de87c7b1c#8180 API: virtual text annotations (nvim_buf_set_virtual_text)2b9fc9a13f#8660 API: add nvim_buf_is_loaded() API: buf_get_lines, buf_line_count handle unloaded buffers88f77c28e5API: nvim_buf_get_offset_for_line94841e5eaeAPI/UI: #8221 ext_newgrid, ext_hlstate (use line-based rather than char-based updates) UIb5cfac0894#8806 TUI: use BCE again more often, (smoother resizes/scrolling)77b5e9ae25#9315 screen: add missing status redraw when redraw_later(CLEAR) was used5f15788dc3TUI: clip invalid regions on resize (#8779), fixes #8774c936ae0f36#9193 TUI: improvements for scrolling and clearingf20427451e#9143 UI: disable clearing almost everywheref4b2b66661#9079 TUI: always use safe cursor movement after resized36afafc8d#9211 ui_options: also send when starting or from OptionSet67f80d485cTUI: Avoid reset_cursor_color in old VTE #9191e55ebae373#9021 don't erase screen on `:hi Normal` during startupc5790d9189#8915 TUI: Hint wrapped lines to terminals. FIXES:231de72539RPC: turn errors from async calls into notifications907ad921bcTUI: Restore terminal title via "title stacking" (#9407)cb76a8a95fgenappimage: Unset $ARGV0 at invocation #9376b48efd9ba7#9347 TUI: FreeBSD: Improve support for BSD vt consolec16529afa5TUI: Konsole 18.07.70 supports DECSCUSR (#9364)aec096fc5bos/lang: use the correct LC_NUMERIC also for OS X5fee0be915provider: improve error message (#9344)3c42d7a10aTUI: alacritty supports set_cursor_color #93537bff9a5de8TUI: Alacritty supports DECSCUSR (#9048)57acfceabemacOS: infer primary language if $LANG is empty #9345bc132ae123runtime/syntax: Fix highlighting of augroup contents (#9328)715fdfee1e#9297 VimL/confirm(): Show dialog even if :silent799d9c3215clipboard: Prefer xclip (#9302)6dae7776edprovider/nodejs: fix npm,yarn detection16bc1e9c17#9218 channel: avoid buffering output when only terminal and no callbacks are active72fecad1ff#8804 Fix crash in lang_init() on macOS if lang_region = NULLd581398779ruby: detect rbenv shims for other versions (#8733)e568ac7a68#9123 third-party/unibilium: Fix parsing of extended capability entriesc4c74c3883jobstart(): Fix hang on non-executable cwd #92041cf50cbfd9provider/nodejs: Simultaneously query npm and yarn #90546c496db4b7undo: Fix infinite loop if undo_read_byte returns EOF #2880f8f83579ff#9034 'swapfile: always show dialog' CHANGES:c236e80cf3#9024 --embed: wait for UI unless --headless180b50dddc#9248 python: 'neovim' module was renamed to 'pynvim'2000b6a64a#8589 VimL: Remove legacy aliases "v:errmsg", "v:shell_error", "v:this_session"deb18a050edefaults: background=dark #2894 (#9205)c1187d4af0defaults: win: 'shellpipe' for cmd.exe (#8827)
Wiki | Documentation | Twitter | Community | Gitter Chat
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 Clojure, Lisp, Go, Haskell, Lua, JavaScript, Perl, Python, Ruby, and 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!
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, Gentoo, and more!
Install from source
make CMAKE_BUILD_TYPE=RelWithDebInfo
sudo make install
To install to a non-default location, set CMAKE_INSTALL_PREFIX:
make CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX=/full/path/"
make install
To skip bundled (third-party/*) dependencies:
- Install the dependencies using a package manager.
sudo apt install gperf luajit luarocks libuv1-dev libluajit-5.1-dev libunibilium-dev libmsgpack-dev libtermkey-dev libvterm-dev libjemalloc-dev sudo luarocks build mpack sudo luarocks build lpeg sudo luarocks build inspect - Build with
USE_BUNDLED=OFF:make CMAKE_BUILD_TYPE=RelWithDebInfo USE_BUNDLED=OFF sudo make install
CMake features:
- List all build targets:
cmake --build build --target help - Print all variable definitions:
cmake -LAH build/CMakeCache.txtcontains the resolved values of all CMake variables.build/compile_commands.jsonshows the full compiler invocations for each translation unit.
See the Building Neovim wiki page for details.
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 is licensed under the terms of the Apache 2.0 license, except for parts that were contributed under the Vim license.
-
Contributions committed before b17d96 remain under the Vim license.
-
Contributions committed after b17d96 are licensed under Apache 2.0 unless those contributions were copied from Vim (identified in the commit logs by the
vim-patchtoken).
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.
