neovim 0.7 releases: Vim-fork focused on extensibility and usability
Neovim is a project that seeks to aggressively refactor Vim source code in order to achieve the following goals:
- Simplify maintenance to improve the speed that bug fixes and features get merged.
- Split the work among multiple developers.
- Enable the implementation of new/modern user interfaces without any modifications to the core source.
- Improve the extensibility power with a new plugin architecture based on coprocesses. Plugins will be written in any programming language without any explicit support from the editor.
By achieving those goals new developers will soon join the community, consequently improving the editor for all users.
It is important to emphasize that this is not a project to rewrite Vim from scratch or transform it into an IDE (though the new features provided will enable IDE-like distributions of the editor). The changes implemented here should have little impact on Vim’s editing model or Vimscript in general. Most Vimscript plugins should continue to work normally.
The following topics contain brief explanations of the major changes (and motivations) that will be performed in the first iteration.
Neovim Features
- Modern GUIs
- API access from any language including Clojure, lisp, go, Haskell, Lua, javascript, Perl, Python, 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.
Neovim 0.7 released.
Changelog
BREAKING CHANGES
- Support for Python 2 is dropped. For Python 3, the minimum supported version is 3.6. Legacy
:pythonx
commands are still available, and always uses the python 3 provider.- api: Existing usages of
nvim_buf_set_text
that use negative line numbers will be off-by-one.- highlight: signature of
vim.highlight.range
was changed.- input: distinguish between some input keys which previously were synonyms. This will break some exiting mappings.
<cr>
,<tab>
and<esc>
are no longer considered equivalent to<c-m>
,<c-i>
and<c-[
> respectively. In case the terminal or GUI supports distinguishing these keys, these can now be mapped separately. But even if the terminal only can send one code you might still need to change what variant is used in the config.More…