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.
- #19598 changed
vim.keymap.set()to always replace keycodes in the result of
<expr>mappings by default (previously, this was only the default for Lua functions as RHS). Pass
replace_keycodes = falsein
optsexplicitly to disable this behavior.
Neovim Plugin Community updates
Neovim is full of active plugins. This section is about the community and what is going on.
rust-tools.nvimis a plugin which goal is to provide a better experience at developing Rust in Neovim by using the internal LSP client and additional extra tools, such as inlay hints, crate graph, workspace support, etc. etc.
@simrat39 is looking for testers before merging a new refactoring of the plugin. If you are a Rust programmer and interested into enhancing their plugin, you should probably have a look.
A brand and fresh new plugin by @Vonr to fold multiline comments.
A new plugin allowing to map multiple char sequences to one key.
@mizlan made a plugin to interactively swap things in Neovim! It can handle symbols like function arguments, list elements, function parameters, and more. Powered by tree-sitter.
A new theme by @Tsuzat, based on the super famous
@B4mbus made a theme based on oxocarbon.nvim, which is a theme made in Rust with nvim-oxi. Because the author didn’t want to have to install the Rust toolchain for a theme, they came up with a Lua version.
A new plugin by @Ttibsi to run various pre-commit logics (from LSP, formatters, linters, etc.). It’s designed to only work within a git repository that already has a .pre-commit-config.yaml file.
Hey, a new plugin! This one is by @RoryNesbitt and is a all-in-one Neovim configuration wrapper inside the same
directory.. It’s also known as
seanvim – a reference to @seandewar who helped with the plugin development. The
plugin is still under heavy development, so if you want to test it out and provide feedback to @RoryNesbitt, feel
free to install and experiment!
Plugin by @andythigpen for displaying test coverage. It can display coverage information in the sign column and coverage summary report in a pop-up window. Note: This plugin does not run tests. It justs loads/displays a coverage report generated by a test suite.
Neovim Keys is an application to help new Neovim users to get used to using
HJKLa and switching between modes.
Neovim Keys v2.1 is out! The application is built with Java AWT (a graphics library). It might be interesting if you are new to Neovim. An application by @BooleanCube.
A great update for
lspsaga.nvim this week by @glepnir. This is about asynchrous requests. The plugin now has a
loading / progress bar kind of thing that will provide some useful visual feedback that a request is currently going
nvim-surround released version 1.0.0 which supports Lua pattern-based modifications.
Users can now delete/change quite complex manually defined surrounding pairs.
This caused some breaking changes which
users might need to address.
mini.ai now supports text-objects based on tree-sitter.
a short comparison between
mini.ai’s text-objects and
The plugin by @rmagatti now supports
cwd tracking. This feature is nothing more than knowing when the
cwd is about
to change and then making sure the current session is saved correctly – and that buffers and jumplists are cleared
before attempting to load the next session.
This section is about various Neovim tips. People are free to contribute any tips they have on their mind. Tips are intended for any Neovim user, should they be beginners or advanced users.
Neovim has the support of text-objects, which are used in visual or operator-pending mode.
w for instance stands for
the text-object word. When you are in operator pending mode, for instance right after pressing
d for delete, pressing
dw) will delete from the cursor position to the end of the word. Two modifiers exist to create more powerful
a (for around) and
i (for inner). The former will act on the text-object on its right plus its
surroundings delimiters (for a word, it’s basically the whitespaces). The latter,
i, will apply the operation only
inside the text-object. For a word, it means just the word, ignoring the whitespace around it.
With this, you can do really powerful editing. For instance, if you have this HTML code:
<div class="stuff">I like cookies</div>
And you want to change
I like cookies to
I love pasta, you can simply put your cursor anywhere in that text, and
cit, which translates to:
c = change i = inner t = tag
t is a text-object native to Neovim that can recognize “tags” of the filetype you are editing (here, HTML tags). So
that command will change the text inside the tag. If you wanted to completely replace the whole tag with another one,
you could have pressed
cat, which would have removed the surroundings (i.e. the
If you have any tips that have not been shared yet (or it was a while ago), please feel free to share to the contents repository. Thanks!
And that’s all for this week! See you all next time for a full batch of Neovim updates on the 15th Aug 2022!
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.