Skip to content

Instantly share code, notes, and snippets.

View RaafatTurki's full-sized avatar
🥔
sprouting

Raafat Turki RaafatTurki

🥔
sprouting
  • Iraq
  • 21:37 (UTC +03:00)
View GitHub Profile
@kylechui
kylechui / dot-repeating.md
Last active October 23, 2024 10:55
A basic overview of how to manage dot-repeating in your Neovim plugin, as well as manipulate it to "force" what action is repeated.

Adding dot-repeat to your Neovim plugin

In Neovim, the . character repeats "the most recent action"; however, this is not always respected by plugin actions. Here we will explore how to build dot-repeat support directly into your plugin, bypassing the requirement of dependencies like repeat.vim.

The Basics

When some buffer-modifying action is performed, Neovim implicitly remembers the operator (e.g. d), motion (e.g. iw), and some other miscellaneous information. When the dot-repeat command is called, Neovim repeats that operator-motion combination. For example, if we type ci"text<Esc>, then we replace the inner contents of some double quotes with text, i.e. "hello world""text". Dot-repeating from here will do the same, i.e. "more samples""text".

Using operatorfunc