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.

  • nvim-0.8 freeze (text extracted from the Reddit post by u/bfredl):

    As of today, Neovim nighty is entering the feature freeze period for the upcoming 0.8 release. No further features will be merged for 0.8, just bug fixes and documentation improvements (and possibly minor adjustments to new features/API).

    The preliminary release date for 0.8 is 30 September (as has been our aim for some time), but might get delayed if needed for critical bug fixes to land. As an example, cmdheight=0 feature recently received a larger change in implementation, is expected to need more testing and bug fixes before it is considered to be stable enough for a general release.

    The general advice of always updating Neovim nightly together with plugins applies. In particular, nvim-treesitter and other tree-sitter dependent plugins need to be updated for changes in Neovim core.

  • #20217 made Lua Funcrefs work as methods in Vim script. When using a Funcref converted from a Lua function as a method in Vim script, the result of the base expression is now passed as the first argument instead of being ignored.

Neovim Plugin Community updates

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

Need help


Guides, tours, articles, etc.


New plugins

azy.nvim

azy.nvim

This plugin written by @vigoux tightly integrates the fzy search engine into neovim, to provide a fast and simple UI for fuzzy searching. It is very much looking for testers and help to add more features !


nvim-peekup

nvim-peekup

nvim-peekup lets you dynamically interact with Neovim registers via floating windows, with visual selections that help you identify the register to copy - plus some other goodies. A plugin by @gennaro-tedesco.


ccc.nvim

ccc.nvim

A new plugin by @uga-rosa. The plugin is a similar plugin to all color pickers plugin, but it has some nice evolutions, such as supporting multiple colorspaces. Serious work here, congrats!


SmoothCursor.nvim

There are some plugins that don’t go unnoticed. SmoothCursor.nvim is when of them. The plugin adds a visual hint to show the scroll direction. By @gen740.


animation.nvim

New plugin by @anuvyklack. It helps creating scheduled execution of a callback function utilizing common animation concepts (like duration, fps, easing).


windows.nvim

Another great plugin from @anuvyklack. This one can automatically manage width of current window… with animations!


vim-lichess

vim-lichess

So how about playing chess… but inside Neovim itself? If this sounds interesting, check out this new plugin by @luk400. You can play Rapid or Classical games (8min and above) and set the time control, increment, variant, rating range and whether to play rated/unrated.

Updates

battery.nvim

Neovim plugin to collect and view information on battery power in your status line.

battery.nvim

@justinhj updated battery.nvim, a pure lua battery status bar plugin, to v0.4.0 with the following improvements since the initial release:

  • Support for linux (requires acpi package).
  • Support for horizontal icons.

You can use branch v0.4.0 explicitly in your plugin manager or update to the latest main branch.


FeMaco

A small plugin allowing to edit injected language trees with correct filetype in a floating window. This allows you to use all of your config for your favorite language.

FeMaco now supports language injections in any language (including inline).


easypick.nvim

A Neovim plugin that lets you easily create telescope.nvim pickers from arbitrary console commands.

easypick.nvim

The plugin now supports a command-palette-like feature and allows users to specify custom actions and options.


nvim-colorizer.lua

A high-performance color highlighter for Neovim which has no external dependencies! Written in Luajit.

nvim-colorizer.lua

The plugin now has support for SASS variables and imports, and Tailwind colors, a CSS LSP.


SJ.nvim

Search based navigation combined with quick jump features.

SJ.nvim

This is an update gathering the release of two versions of the plugin: v0.2 and v0.3.

From v0.2:

  • Labels position is fixed and overlap with the matches like other jump plugins (old behavior is still available via an option).
  • You can now use <Backspace> to delete last characters of the pattern.t
  • You can now use <Alt-Backspace> to restore the last version of the pattern that has matches.

From v0.3:

  • An option was added to limit the maximum length of the pattern.
  • An option was added to reuse the last pattern.
  • A highlight was added to indicate when the next key must be for the label (when using max_length_pattern).

A huge update, then!


Did you know?

The :%s command substitutes text in your current buffer. For instance, :%s/have/had/g substitutes the word have by had everywhere in your buffer. The g modifier makes it so that if you have have twice on the same line, both words will be modified — omitting g will only replace the first occurrence on each line. You can also use c as an extra modifier to be prompted with a replace confirmation for each occurrence.

Now, something that people might not know. Imagine you have the following buffer:

let _ = 32;
let _ = 32;
let _ = 32;

let x = foo(32);
let y = bar(32);
let z = zoo(32);
let a = quux(32);
let b = tronfibulate(32);

let _ = 32;
let _ = 32;
let _ = 32;

And you want to replace all of the 32 arguments to functions by 100, but you don’t want to replace couple of 32 declarations at the top of the buffer and at the end. A way to do that would be to use :%s/32/100/gc and confirm only when replacing 32 inside the functions arguments. But that’s not very practical. A better way is to use visual mode commands! Select all the lines starting from let x = … to let b = … and press :. You can then enter the substitute command to scope it to that selection; remember: % means the whole file; here, your command line will look like something like :'<,'>, which are visual marks (don’t change them!). So the substitute command will look like this:

:'<,'>s/32/100/g

And that’s all! You can see that the replacement was limited to the portion of text you selected. That works in visual, line and block visual modes, so have fun replacing things!

:h s_flags for more information about the substitute flags.


Want to 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.


CC-BY-SA