Issue #4
Email Newsletter
Sign up with your email address to receive an email when a new issue of This Week in Neovim is available
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). Passreplace_keycodes = false
inopts
explicitly to disable this behavior.
Neovim Plugin Community updates
need-help-{#need-help}">Neovim is full of active plugins. This section is about the community and what is going on.
Need help {#need-help}
rust-tools.nvim is looking for testers
rust-tools.nvim
is 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.
guides,-tours,-articles,-etc-{#guides}">
Guides, tours, articles, etc. {#guides}
(blog) From UltiSnips to LuaSnip
Let’s start this week with a nice blog article by @cljoly about migrating from UltiSnips to Luasnip.
new-plugins-{#new-plugins}">
New plugins {#new-plugins}
foldcus.nvim
A brand and fresh new plugin by @Vonr to fold multiline comments.
mcc.nvim
A new plugin allowing to map multiple char sequences to one key.
iswap.nvim
@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.
NeoSolarized.nvim
A new theme by @Tsuzat, based on the super famous solarized
plugin.
oxocarbon-lua.nvim
@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.
pre-commit.nvim
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.
pvim
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!
nvim-coverage
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.
updates-{#updates}">
Updates {#updates}
Neovim Keys
Neovim Keys is an application to help new Neovim users to get used to using
HJKL
a 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.
import.nvim
This week, @miversen33 and the contributors of import.nvim
added support for lualine.nvim, along with on_click
support. A great addition!
lspsaga.nvim
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
on.
nvim-surround
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
mini.ai
now supports text-objects based on tree-sitter.
Here is
a short comparison between mini.ai
’s text-objects and nvim-treesitter-textobjects
’ ones.
auto-session
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.
did-you-know?-{#tips}">
Did you know? {#tips}
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
w
(so dw
) will delete from the cursor position to the end of the word. Two modifiers exist to create more powerful
text-objects: 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
press 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 <div>
and </div>
).
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!
want-to-contribute?-{#contribute}">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.