Issue #29

Neovim Core updates {#core}

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.

  • #21832: libiconv is now a required build dependency.

Neovim Plugin Community updates {#plugins}

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

Need help {#need-help}

neo-tree.nvim is looking for developers / maintainers

Neovim plugin to manage the file system and other tree like structures.


The project could really use some awesome developers that have some free time and love that they can dedicate to maintaining the project. Up until recently, the author has been the primary person to triage issues, fix bugs, plan new features, etc. The plugin received lots of great contributions from the community, which is very much appreciated by the author, but the project needs to continue growing and calls for someone to step up and take a lead role on the project. More than one person would even be better!

From the author:

I don't have the same amount of free time that I had when I started the project, and I am no longer really keeping up the way I should. I'm not looking to completely drop out of the project, but I would like to take a backseat if there's anyone out there interested in being a maintainer.

New plugins {#new-plugins}


The new mini.basics module of mini.nvim provides common configuration presets for options, mappings, and autocommands. After a single require('mini.basics').setup() you will get:

  • Common options set: termguicolors, number, ignorecase, etc. Which ones are set is mostly based on results of the Neovim built-in options survey. If you set option manually beforehand, it won't get changed.
  • Mappings for common actions created (if you didn't manually create particular mapping beforehand):
    • j/k will move by visible lines.
    • <C-s> will save buffer.
    • go/gO will create empty line after/before cursor line.
    • Mappings like \x will toggle common options: \w toggles 'wrap', \s - 'spell', etc.
    • And many more.
  • Common autocommands created: highlight on yank, start Terminal mode when opening built-in terminal, etc.

A new addition to the “mini” series of plugin, by @echasnovski.



This new plugin calculates your WPM as you type in insert mode, and provides a few functions for displaying your WPM in other UI plugins.


An unofficial native (Lua and nvim-cmp) alternative to the official Codeium plugin. Codeium is an AI code assistance tool.


Telescope extension from @tsakirist that provides handy functionality about plugins installed plugins via lazy.nvim.


  • Open selected plugin repository in browser.
  • Open selected plugin either with find_files or live_grep.
  • Open lazy root directory with either find_files or live_grep.
  • Resume last telescope-picker to ease searching.




A PHP namespace resolver plugin for Neovim, written by @ccaglak.


A new navigation plugin, based on mark-like locations you can leave behind and trace back. This is like the native mark feature but it adds the concept of a “stack you can pop to track back locations”, which sounds interesting! By @LeonHeidelbach.



A plugin designed to keep your secrets safe! Useful for content creators or anyone who finds themselves often sharing their screens to people who could be annoying and use their secrets. This plugin shows a warning popup whenever you enter a file you have specified usually contains your project secrets.

By @roberte777.


A ReactJS like framework for Neovim, for building reactive UI in Neovim. This plugin is in early stage but the author, @s1n7ax could use some help to stress test and try out new features!


A terminal manager plugin that treats terminals as buffers, not windows. Providing smooth window navigation like Vim8 and freedom for window management.

  • Enter terminal buffer in any window you like.
  • <C-w> keymap for window navigation even in terminal mode.
  • Save terminal mode by each terminal buffer and restore it when re-entering.
  • Easily switch between listed terminal buffers.
  • High compatibility with native commands like :terminal, :wincmd, and :buffer.

Made by @boltlessengineer.



Minimally invasive session manager powered by fzf-lua: nvim-possession does only what you need and no more, making managing sessions quick and visually appealing! Browse, create and delete sessions dynamically, add your statusline component and you are ready to go!

Sessions can also be loaded and saved automagically, and you can provide post-hooks callbacks to make sure your terminal windows and file managers and properly restored too!


surround-ui demo

A NeoVIM plugin which can be used as a training aid or leader-triggered replacement for some of the key combinations when using kylechui/nvim-surround.

This plugin uses folke/which-key.nvim.

Updates {#updates}


Supercharge your Haskell experience in neovim!


The plugin author announced on Reddit that they are maintaining a stable v1.x.x branch of the plugin.


An arctic, north-bluish clean and elegant Neovim theme.


A contribution between a couple of people ended up as adding colorblind mode to the colorscheme!r


A simple usecase of floating window to help you focus.

The plugin now supports your-plugin.nvim.

Did you know? {#tips}

We know how to compare changes in a file with the HEAD in our git repo. But how to compare changes in the current buffer with a related file on your disk, before it will be saved, if Git does not track this file yet?

Bram Moolenaar took care of it in usr_05.txt. Here is an example with little improvements in Lua:

vim.api.nvim_create_user_command('DiffOrig', function()
  -- Get start buffer
  local start = vim.api.nvim_get_current_buf()

  -- `vnew` - Create empty vertical split window
  -- `set buftype=nofile` - Buffer is not related to a file, will not be written
  -- `0d_` - Remove an extra empty start row
  -- `diffthis` - Set diff mode to a new vertical split
  vim.cmd('vnew | set buftype=nofile | read ++edit # | 0d_ | diffthis')

  -- Get scratch buffer
  local scratch = vim.api.nvim_get_current_buf()

  -- `wincmd p` - Go to the start window
  -- `diffthis` - Set diff mode to a start window
  vim.cmd('wincmd p | diffthis')

  -- Map `q` for both buffers to exit diff view and delete scratch buffer
  for _, buf in ipairs({ scratch, start }) do
    vim.keymap.set('n', 'q', function()
      vim.api.nvim_buf_delete(scratch, { force = true })
      vim.keymap.del('n', 'q', { buffer = start })
    end, { buffer = buf })
end, {})

More with :h :DiffOrig.

Special thanks {#special-thanks}

These people help contributing various updates about Neovim and its ecosystem! Thanks for your contributions! ❤️

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.