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:07ad5d71ab
clipboard: 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 CursorLinebddcbbb571
signs: Add "numhl" argument #911305f9c7c2f7
clipboard: 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 namespacesb1aaa0a881
API: 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 buffers88f77c28e5
API: nvim_buf_get_offset_for_line94841e5eae
API/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 used5f15788dc3
TUI: 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 OptionSet67f80d485c
TUI: 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:231de72539
RPC: turn errors from async calls into notifications907ad921bc
TUI: Restore terminal title via "title stacking" (#9407)cb76a8a95f
genappimage: Unset $ARGV0 at invocation #9376b48efd9ba7
#9347 TUI: FreeBSD: Improve support for BSD vt consolec16529afa5
TUI: Konsole 18.07.70 supports DECSCUSR (#9364)aec096fc5b
os/lang: use the correct LC_NUMERIC also for OS X5fee0be915
provider: improve error message (#9344)3c42d7a10a
TUI: alacritty supports set_cursor_color #93537bff9a5de8
TUI: Alacritty supports DECSCUSR (#9048)57acfceabe
macOS: infer primary language if $LANG is empty #9345bc132ae123
runtime/syntax: Fix highlighting of augroup contents (#9328)715fdfee1e
#9297 VimL/confirm(): Show dialog even if :silent799d9c3215
clipboard: Prefer xclip (#9302)6dae7776ed
provider/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 = NULLd581398779
ruby: detect rbenv shims for other versions (#8733)e568ac7a68
#9123 third-party/unibilium: Fix parsing of extended capability entriesc4c74c3883
jobstart(): Fix hang on non-executable cwd #92041cf50cbfd9
provider/nodejs: Simultaneously query npm and yarn #90546c496db4b7
undo: 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"deb18a050e
defaults: background=dark #2894 (#9205)c1187d4af0
defaults: 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.txt
contains the resolved values of all CMake variables.build/compile_commands.json
shows 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-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.