Files
tiny-jump.nvim/README.md
T
swaits 6d1ba5af91 chore: repoint remaining links at git.swaits.com
Rewrites lingering github.com / *.sr.ht references to this Gitea instance,
translating GitHub and Sourcehut URL shapes to Gitea's (/blob/<ref>/ and
sr.ht /tree/<ref>/item/ -> /src/branch/<ref>/, /tree/<tag> -> /src/tag/<tag>,
/actions/workflows/X -> /actions?workflow=X, /edit/ -> /_edit/).

Left pointing at the old hosts on purpose: pull-request links (PRs were not
migrated), forks that were never migrated, and GitHub-only surfaces Gitea
lacks. OpenPGP identity proofs are untouched by design.
2026-08-31 18:32:28 -06:00

4.0 KiB

tiny-jump.nvim

A tiny, no-nonsense jump plugin for Neovim. Press a key to trigger, type one or more characters to narrow the matches, then press the label to jump. Like / but you don't have to n your way to the match you actually wanted.

Credit and history

This plugin is a fork of yorickpeterse/nvim-jump, which is excellent and which I used happily for a long time. Big thanks to the original author for a clean, focused implementation.

I forked it because I wanted to pass label highlight attributes directly to setup() (instead of having to define a separate highlight group and re-apply it on every colorscheme change). I submitted that as a PR but it was declined, which is the maintainer's right — the upstream plugin is explicitly considered feature-complete.

Since the upstream code is MPL-2.0, a fork is fair game. This plugin is a tiny extension of it — same core behavior, plus a slightly friendlier highlight API — maintained under the tiny-* family of my other Neovim plugins.

Size vs. the alternatives

tokei lua/ (code lines only, ignoring comments and blank lines), run against a fresh git clone --depth=1 of each project:

Plugin Files SLOC
swaits/tiny-jump.nvim (this fork) 1 126
yorickpeterse/nvim-jump (upstream) 1 131
echasnovski/mini.jump2d 1 553
rlane/pounce.nvim 4 634
smoka7/hop.nvim 18 1,489
ggandor/leap.nvim 11 2,549
folke/flash.nvim 22 2,695

Despite fixing a double-setup() bug, adding inline label-color configuration, cursor-proximity sorting, and two-char labels for overflow matches, this fork is slightly smaller than upstream — and an order of magnitude smaller than every other alternative on this list.

A note on style

The code is intentionally dense. Comments are thorough by design — they do the explanatory work that would otherwise be done by helper functions and verbose names. If you're reading or editing lua/tiny-jump/init.lua, read the comments first. Don't "clean them up" — they're the docs.

Requirements

  • Neovim 0.11.0 or newer.

Install & basic usage

With vim.pack (Neovim 0.12+):

vim.pack.add({ 'https://git.swaits.com/swaits/tiny-jump.nvim' })

vim.keymap.set({ 'n', 'x', 'o' }, 's', require('tiny-jump').start)

Any plugin manager works — just point it at this repo and map require('tiny-jump').start to a key.

Configuration

All settings are optional. Defaults:

require('tiny-jump').setup({
  -- Labels that may be used, in order of preference.
  labels = 'fdsaghjklrewqtyuiopvcxzbnm',

  -- Highlight group used for match highlights (before labels are shown).
  search = 'Search',

  -- Highlight for labels. Accepts a group name (string) or a table of
  -- `nvim_set_hl` attributes.
  label = 'IncSearch',
})

Label colors

Point label at any existing highlight group:

require('tiny-jump').setup({ label = 'IncSearch' })

Or pass attributes inline and let the plugin manage the group for you. It creates an internal TinyJumpLabel group and re-applies it on ColorScheme so your colors survive theme changes:

require('tiny-jump').setup({
  label = { fg = '#ffff00', bg = '#000000', bold = true },
})

Colemak

require('tiny-jump').setup({
  labels = 'tnseriaogmplfuwyqbjdhvkzxc',
})

License

MPL-2.0, inherited from the upstream project. See LICENSE.