Issue #16

This Week In Neovim updates {#twin-updates}

Woh, a new section?! No, this is just an exceptional section that will spawn from time to time to provide you with some information about itself.

This TWiN #16 is a special weekly update, so I need to make a small announcement in your feed to ensure people read this right away. I (@phaazon) took the time this week to update the Rust library I use to parse the weekly updates (called twin). Next week, for TWiN #17, the contribution process changes a bit, following the changes I introduced in twin-0.2. If you have already contributed to TWiN or plan to, then you will probably want to read the following updated section on the README. If not, jump directly to the next section!

Neovim Core updates {#neovim-core-updates}

Updates of Neovim itself, which are available on Neovim nightly.

Important: if you are a plugin author, you are strongly advised to follow the #14090 breaking changes on master GitHub thread, as it contains important breaking changes information.

Neovim Plugin Community updates {#neovim-plugin-updates}

Neovim is full of active plugins. This section is about the community and what is going on.

Need help {#need-help}

noice.nvim is looking for feedback

The plugin has been around for a couple of weeks now, and it’s time to provide some feedback on it! A poll was opened on Reddit here to ask people whether they would like a single plugin or several ones to split the features. The first two options, “I'm fine with all functionality in one plugin” and “I prefer multiple plugins” are pretty even! The poll is over but feedback is always appreciated.

The background discussion is interesting, because it’s about whether we want an ecosystem thriving of new, small plugins, or whether we want bigger, more monolithic plugins.

Guides, tours, articles, etc. {#guides}

An introduction and sample neovim configuration for Rust development in Lua

This living blog post introduces piece by piece a sample Neovim configuration to kickstart your configuration targeting Rust development. The blog was recently updated to remove all VimL and uses Lua as its main configuration language.

The reader will learn how to setup packer.nvim and install plugins such as rust-tools.nvim to take full advantage of the built-in LSP of neovim.

Poll about Git in Neovim

On Reddit, a poll was opened to discuss how people use Git in their Neovim workflow. You still have some time to answer the poll if you haven’t already! (but hurry, it’s about to be closed). We will be discussing the result in the next TWiN.

New plugins {#new-plugins}


A plugin helping you to write tree-sitter queries. By @ziontee113.



@PatschD made a plugin to help with debugging by inserting meaningful print statements. A plugin similar to the VS Code Turbo Console log extension.


A new plugin by @NarutoXY to create screenshots of your code. Very similar to silicon.nvim, but this new plugin is written in Lua (versus Rust for the other one).



@MrcJkb made a plugin for Haskellers wanting to leverage the power of both Haskell and Neovim! Besides support for the famous HLS, the plugin configures the LSP client with sane and good defaults, like automatically refreshing lenses, adding the right capabilities depending on your installed plugins, etc.

The plugin also supports Hoogle so that you can search what’s under your cursor, and a list of planned features is available here.

Amazing work! 👏


A harpoon and bufjump.nvim inspired plugin, written by @cbochs. The plugin allows you to mark files you want to eventually go back to, and provides several ways of moving around your marked buffers.



Do you need to rest your eyes with some nice looking, sweet and soothing colors? This new theme by @kvrohit was made for you! There is something calming and relaxing with this colorscheme. A really nice addition!


It provides several Nvim lua APIs to turn on the ascii mode of Rime based on Fcitx5's DBUS API. By @haolian9.



Spooky is a Leap extension that allows for remote operations on Vim's native text objects. It exposes atomic bundles of (virtual or actual) leaping motions and text object selections, so that you can e.g. yank a paragraph without leaving your position (yarp<leap>), or fix a typo in a very short, atomic command sequence, even from another window (ciRw<leap>). The origin of this idea can be traced to the "leaping motions" feature of vim-seek. (The name clash is a funny coincidence. We should probably have named our feature "seeking motions" in exchange...)

The plugin is highly experimental at the moment - it would be great to gather as much feedback as possible. (@ggandor)



@LintaoAmons’s very first plugin!, allowing to create temporary (scratch) buffers. Useful when wanting REPL workflows, for instance.

Updates {#updates}


NeoSolarized colorscheme for NeoVim with full transparency.


The theme was introduced in TWiN #4, but it recently received some updates, like a better support for other plugins and better syntax highlightings, especially for some specific terminals (Alacritty, Kitty and Konsole).

It still looks pretty good!


The 'mini.nvim' plugin now comes not only as a library of independent Lua modules. Thanks to the new dual distribution model, all modules are now also available as standalone plugins in separate Git repositories. They will be updated in sync with 'mini.nvim' using only commits relevant to the module.


Neovim motions on speed!


Hop was released in version v2.0.3. This new version is mostly about fixing some bugs and optimizing performances:

  • Fix quitting in commands using multi_windows = true when a float is present.
  • Fix broken matching when magic chars are included in opts.keys.
  • Support motion with count, as in 2dw.
  • Fix incorrect behavior in multi-byte chars.
  • Link HopPreview to IncSearch by default. Colorschemes can still override that (no change for them).
  • Cleanup some regexes by computing them once.
  • Lazy import all the modules.

The next batch of updates will focus on virtual windows (popups, floats, etc.) which sometimes cause invalid ID buffer errors and such, and the column bug that is present if you use some specific commands on empty lines / at the end of lines.

Did you know? {#tips}

Are you tired of having your cursor jump all around the place when you cross the path of a line that is shorter than the line you are currently on? Some people can be upset with that, so there is a drastic solution: :set virtualedit=all. This will cause Neovim to authorize you to edit anywhere in the view (not only the buffer). What it means is that you can put your cursor in an empty zone, press your insert key and add text. It will automatically fill the left part of the line with empty space.

A less drastic option of virtualedit is the onemore variant (:set virtualedit=onemore), which allows you to edit past the end of the line by one character. Pressing $ will put your cursor on the last character, and pressing l (or whatever key is bound for you) will move the cursor by end extra character.

Want to contribute? {#contribute}

You have noticed something missing that you saw lately? Do not keep the candies for yourself and please feel free to share with us! You can open a PR at This Week In Neovim Contents.

Feel free to read how to contribute to get started.