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

117 lines
4.0 KiB
Markdown

# 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](https://github.com/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](https://github.com/yorickpeterse/nvim-jump/pull/8) 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](https://github.com/yorickpeterse/nvim-jump) (upstream) | 1 | 131 |
| [echasnovski/mini.jump2d](https://github.com/echasnovski/mini.nvim) | 1 | 553 |
| [rlane/pounce.nvim](https://github.com/rlane/pounce.nvim) | 4 | 634 |
| [smoka7/hop.nvim](https://github.com/smoka7/hop.nvim) | 18 | 1,489 |
| [ggandor/leap.nvim](https://github.com/ggandor/leap.nvim) | 11 | 2,549 |
| [folke/flash.nvim](https://github.com/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+):
```lua
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:
```lua
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:
```lua
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:
```lua
require('tiny-jump').setup({
label = { fg = '#ffff00', bg = '#000000', bold = true },
})
```
### Colemak
```lua
require('tiny-jump').setup({
labels = 'tnseriaogmplfuwyqbjdhvkzxc',
})
```
## License
MPL-2.0, inherited from the upstream project. See `LICENSE`.