Newsletter #9 - Three's company

April 2020

What is Neovim?

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.

Participating

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!

What’s new

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.

0.3 for Users

0.3 for Developers

  • 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.

  • Changed API functions:
  • New API functions:
  • Channels: support buffered output and bytes sockets/stdio (@bfredl, #6844)

  • A proper viml expression parser is now available (@ZyX-l, #7234)
    • It comes with various highlight groups, have a look at the following screen recording: Demonstration of expression highlighting

The near future: Upcoming

Around Neovim

GSOC

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:

Plugins

The following plugins have found their way into our wiki:

  • neomake-multiprocess: A vim plugin for running multiple process asynchronously based on neomake
  • neopipe: send lines of text to an external command and display output in a scratch buffer
  • nuake: A Quake-style terminal panel for Neovim
  • semshi: Semantic Highlighting for Python
  • vim-ghost: Neovim client for GhostText browser extension (firefox and chrome)

API Clients

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.

GUIs

Three new GUIs were added since the last newsletter:

Blog posts

Some blog posts that talk about some specifically Neovim things:

For 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:

  • How can I open a file in an already existing Neovim instance?
  • How can I open a file from a Neovim terminal without nesting editor instances?
  • How can I remotely send a command to a running Neovim instance?

To whet your appetite, here’s a little gif

Opening files from a Neovim terminal

Something missing?

Know more than the wiki? Just edit the page to let the world know!

Stats

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

Thanks

Thank you contributors, sponsors, bug-reporters, supporters. Thank you @justinmk for the awesome project and thank you @brammool for your foundational work.

News

Find more updates in the news archive. There's also an RSS feed.

What is Neovim?

Neovim is a Vim-based text editor engineered for extensibility and usability, to encourage new applications and contributions.

Discuss

Visit #neovim:matrix.org or #neovim on irc.libera.chat to chat with the team.