Add a 5-line style note at the top of lua/tiny-jump/init.lua and mirror the same message in the README under the size-comparison section. The comments in this file are load-bearing — they do the explanatory work that would otherwise be done by helper functions and verbose names. Prevents future-me (or a drive-by PR) from 'cleaning up' the comments as redundant.
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://github.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.