Neovim is a fork of the venerable text-editor vim, focused on extensibility and usability. It is not a rewrite but a continuation and extension of Vim. Many clones and derivatives exist, some very clever—but none are Vim. Neovim is built for users who want the good parts of Vim, and more. See a list of differences via :help vim-differences.
If you are interested in contributing to Neovim, visit the github page for details. We have a great test suite and automated CI, so you can just jump in and have a go. Don’t be afraid to open a PR to get comments or just take advantage of the infrastructure!
To get in touch with the team, join the gitter channel (also accessible via IRC), or visit the Neovim subreddit, which many of the developers read. Taking part in conversations is a contribution, too!
New contributor shoutout: @janlazo has been on a rampage for both windows support and porting neovim patches since about September 2017. Thank you!
Old contributor shoutout: @jamessan has been around since March 2014, and, while being generally smart and helpful, has been doing tremendous work on the debian package of neovim. Thank you!
The last newsletter covered everything up to release 0.2.2 of Neovim. Two years have passed, and the project has been as busy as ever improving both user and developer experience. Along the way we released in June 2018 the version 0.3. Though this newsletter arrives late (after version 0.4 was released), we still deemed it worth to introduce 0.3 in case you missed anything (0.4 will be covered in a future newsletter):
As always, check Following HEAD for any breaking changes.
A lot of work has been put into making Neovim work better with different terminal emulators, and is still ongoing (@justinmk, #7664, #7653, #7720, #7640, #7624, @florolf, #7676 and @erw7 #8408)
Output from system()
and :!
supports multibyte chars, and also handles control chars (CR, TAB) somewhat better (@bfredl, #7844)
An unmapped META key will be interpreted as Escape (@justinmk, #8226)
msgsep
for display
to avoid fullscreen scrolling for messages (@bfredl, #8088)
The --listen
command line option replaces the usage of $NVIM_LISTEN_ADDRESS
(@justinmk, #8247)
Neovim treats stdin as text, rather than commands. If you want to run stdin as normal mode commands, use nvim -s -
(@justinmk, #7679, @ZyX-I, #6299 and @b-r-o-c-k, #8276)
Neovim recognizes mouse events in (u)rxvt (@symphorien, #8309)
Macros apply :lmap
when executing (@hardenedapple, #5658)
The list implementation has been hidden behind an API to foster further improvements (@ZyX-l, #7708). Developers, in particular people that port patches from vim, should have a look at the wiki page.
nvim_list_uis
@geekodour, #8004)nvim_get_commands
(@nimitbhardwaj, @justinmk, #8375)stdpath
(@docwhat, #6272)nvim_set_client_info
, nvim_get_chan_info
and nvim_list_chans
(@bfredl, #6743)nvim_buf_attach
/-detach
implement buffer change notifications. Using these functions, you can subscribe to events that are sent when a buffer has been updated, no matter the source or method (@phodge, @KillTheMule, #7917)Channels: support buffered output and bytes sockets/stdio (@bfredl, #6844)
Neovim had been accepted into the Google Summer of Code(GSOC). We’ve had two students working on interesting developments:
Thanks for your awesome contributions, and thanks to the mentors @bfredl and @justinmk!
The wiki page of related projects is an evergrowing list of projects that somehow make use of Neovim’s extended capabilities. Here’s a gist of additions since the last newsletter:
The following plugins have found their way into our wiki:
If you thought 3 C++ clients wasn’t enough, you will be happy to hear that a 4th contender has entered the arena:
If you happen to prefer a language with no API client listed, a good starting point are the docs, and be sure to come talk about it on the gitter channel.
Three new GUIs were added since the last newsletter:
Some blog posts that talk about some specifically Neovim things:
Testing plugins from Neovim
walks you through using the Neovim test infrastructure for your pluginRpc benchmarks
shows and benchmarks different approaches in using the RPC API to create folds from a plugin.Neovim for Haskell Development
shows how Neovim can help you with your haskell development needsFor quite some time @mhinz has been maintaining neovim-remote. While only available on unices (though windows support is on the table), it solves some use cases people ask about frequently, such as:
To whet your appetite, here’s a little gif
Know more than the wiki? Just edit the page to let the world know!
Changes lines since the last newsletter:
git log --since="2017-12-16" --numstat --pretty=tformat: --numstat|gawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
added lines: 109127 removed lines: 40267 total lines: 68860
Merged commits:
git log --since="2017-12-16"|wc -l
24167
Different commit authors:
git shortlog -e -s -n --since="2017-12-16"|wc -l
129
Documentation changes:
git log --since="2017-12-16" --numstat --pretty=tformat: --numstat runtime/doc|gawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
added lines: 4369 removed lines: 3645 total lines: 724
Thank you contributors, sponsors, bug-reporters, supporters. Thank you @justinmk for the awesome project and thank you @brammool for your foundational work.
Find more updates in the news archive. There's also an RSS feed.
Neovim is a Vim-based text editor engineered for extensibility and usability, to encourage new applications and contributions.
Visit #neovim:matrix.org or #neovim on irc.libera.chat to chat with the team.