Issue #3

Disclaimer: the beginning of this third edition of TWiN requires a small disclaimer about licensing. From the very first commit in TWiN and the first commit in the contents repository, all the work has been licensed BSD-3 New Clause. It was brought to my attention that even though that license is fine for code, it does not really apply to prose content.

For this reason, all the contributions made to the contents repository are licensed CC-BY-SA-4.0. You can find the license here.

And now, let’s get a full batch of Neovim news!

Neovim Core updates

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

Nothing much this week… 🤷

Neovim Plugin Community updates

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

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

Lua autocmd and project testing

This week, @tjdevries teaches you how to use Lua autocmds to test your project on save.

Auto generate help docs for your Lua plugins


With the storm of awesome Lua plugins, there is one thing that most plugin authors don't consider is :help docs. Which is understandable, as help docs are tedious to write. So, why not auto-generate your plugin's help doc from emmylua. Using lemmy-help you can autogenerate help for lua API docs, create custom section, table-of-contents and more.

Use Overseer.nvim to run commands on save

@stevearc shows us how to use their plugin to run commands on save!

(blog) LSP and Neovim, a retrospective

@numToStr writes about their personal experience from going from CoC (a very famous completion framework for Vim and Neovim, which now can do lots of things like managing extensions, implementing an LSP client, etc. etc.) to the native Neovim LSP. A chill read to look back on how we used to deal with code intelligence between the era of the native LSP.

New plugins {#new-plugins}


This week, we have a new plugin and it’s about system clipboards! nvim-osc52 uses the ANSI OSC52 sequence to copy directly into your system clipboard, wherever you are (local machine, remote, etc.). The way it works is by writing what you want to copy to the system clipboard into Neovim’s stderr stream. When the OSC52 sequence is read by your terminal, it does the job to copy that content to your system clipboard.

The main advantage of this is being able to copy text whatever your pty is (so it works through SSH!).

A plugin by @ojroques, which is a rewrite of their older vim-oscyank plugin.


A plugin written by @barreiroleo, providing external LTeX file handling (off-spec LSP) and other functions.


A new plugin to perform conversions between epoch timestamps, by @hlucco. If you work a lot with different epoch timestamps, that might be a very interesting plugin to try out! (Yes, I’m looking at you, cryptocurrency developers, with your crazy epochs).


@lukas-reineke made a new plugin this week: cbfmt. That plugin allows to format embedded codeblocks inside Markdown and Org documents. It’s not a plugin per-se — it’s a CLI tool — but it was worth mentioning it there.


A plugin by @smolovk to create and manage multiple sub-configs for projects. It currently has two commands: one to load a configuration, and one to edit it. The plugin stores the configurations in stdpath('data') — which is most of the time in ~/.local/share/nvim.

A module of mini.nvim (by @echasnovski) for extending and creating a / i textobjects (like in di( or va"). It enhances some built-in textobjects (like a(, a), a', and more), creates new ones (like a*, a<Space>, af, a?, and more), and allows users to create their own. Supports dot-repeat, v:count, different search methods, consecutive application, and customization via Lua patterns or functions. The plugin has built-ins for brackets, quotes, function calls, arguments, tasg, user prompts, and any punctuation / digit / whitespace character.


This is a plugin that is doing something a bit different than the plugins we announced in TWiN lately. According to its author, @Pocco81, it “de-clutters NeoVim's UI to enhance your coding experience”. The plugin provides four main features, implemented as modes:

  • Ataraxis: good ol' zen mode.
  • Minimalist: disable ui components (e.g. numbers, tabline, statusline).
  • Narrow: narrow a text region for better focus.
  • Focus: focus the current window.

Clearly a plugin to try out!

neo-tree.nvim + neo-tree-diagnostics.nvim

neo-tree.nvim, which has been around since the 1st of January 2022, is a tree view plugin similar to (and inspired by) nvim-tree.lua.


A new companion plugin was introduced by @mrbjarksen: neo-tree-diagnostics.nvim. The look is similar to trouble.nvim. The plugin has some candies, such as sidebars, float windows, etc.

Updates {#updates}


The plugin now has a public API module.


Add support for jsonnet, elvish and glsl support.


The plugin got a couple of changes:

  • Comment generator.
  • if err != nil generator.
  • Add setup support.

@olexsmir is also looking for help and any new idea for their plugin. If you have any, feel free to open an issue or a PR here.


lsp-zero is a plugin that handles the configuration of nvim-lspconfig and nvim-cmp, so you don't have to. The goal is to be able to start using the built-in LSP client quickly with minimal configuration (three lines of configuration is the minimal needed).

lsp-zero.nvim just got support for mason.nvim.


lab.nvim provides a collection of unique prototyping tools for Neovim, a bit similar to what you have with runjs, quokka and such.

lab.nvim now supports TypeScript, Python and Lua. The initial discussion started in this Reddit thread, if you are interested.

That new release also adds support for quick data, a way to insert data into your buffer quickly by randomizing it (automatically insert email addresses, people names, cities, etc.).


This week, nvim-docker received a huge update. @dgrbrady announced on Reddit the feature list part of the update:

  • Bring a container up with the u key.
  • Bring a container down with the d key.
  • Restart a container with the r key.
  • Delete a container by pressing dd.
  • Tail a container's logs by pressing t.
  • Focus the log popup by pressing tab.
  • Toggle whether the cursor should stick to the bottom of the log popup by pressing t while inside the log popup.
  • Focus the main popup by pressing shift-tab.

Lots of internal cleanups and improvements as well.


The plugin now allows for adding mapping descriptions.


hop.nvim is a motion plugin written by @phaazon made to move anywhere in the buffers with as few keystrokes as possible. It was made to replace EasyMotion in the context of Neovim and its API (using virtual text, etc.) and be extensible and full-featured.

This week, it’s a patch version release (hop-v2.0.2). This update is all about fixing bugs, among:

  • Fix “col value outside range” error, which occurred when trying to hop at the very beginning or very last of a line / empty line with some special combination of options.
  • Make ctrl-c equivalent to esc in HopPattern prompt.
  • Support nl and ctrl-h in HopPattern prompt.
  • Fix pending operation column increment so that we can correctly use f / t and F / T in operator-pending modes.

Happy hopping!

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.