Skip to content

Fuzzy Finder ​

A modal panel for jumping straight to a file or an open buffer, without leaving the keyboard: type a few characters, watch the list narrow, Enter to go there.

Setup ​

scheme
(load-plugin! "core:stdlib")
(load-plugin! "core:pickers")

It has no manifest, so it loads at startup: z f and z b are the only way to reach its commands, and nothing else could wake it. core:stdlib only needs to be loaded before it.

Picking files ​

z f opens a file picker scoped to HUME's working directory (:pwd; change it with :cd):

  • Inside a git repository, it lists every file git knows about: tracked files plus untracked-but-not-ignored ones. This reads straight from git's index, so it stays fast even in huge repos.
  • Outside a git repository, it lists files with fd (or Debian's fdfind package) if you have it installed.
  • If neither applies, the picker tells you to install fd.

Selecting a tracked-but-deleted file (removed from disk without git rm) fails to open: git's index doesn't know it's gone.

Picking buffers ​

z b opens a picker over every open buffer, showing each one's full path rather than just its filename, so two open files that happen to share a name, like two different mod.rs files, show up as distinct, disambiguated rows.

Picking modified files ​

z m opens a picker over every file with staged or unstaged changes, as reported by git status: the row shows the two-letter status (M staged, M unstaged, ?? untracked, and so on) alongside the path, so you can tell at a glance what kind of change each file has. Selecting a row opens that file, regardless of which subdirectory :pwd currently points at.

A working directory outside any git repository shows a status message instead of opening a picker. A clean tree (nothing changed) opens the picker with no rows.

By default, untracked files are included, each shown as its own row. Turn them off when loading the plugin:

scheme
(load-plugin! "core:stdlib")
(load-plugin! "core:pickers" #:config (hash "untracked" #f))
ValueEffect
#t (default)Untracked files are included.
#fUntracked files are left out entirely.

Keys ​

KeyEffect
z fOpen the file picker
z bOpen the buffer picker
z mOpen the modified-files picker

Once a picker is open:

KeyEffect
TypeFilter the list
BackspaceEdit the query
Down / Ctrl-nMove selection down
Up / Ctrl-pMove selection up
PageDown / PageUpPage the list
Ctrl-d / Ctrl-uMove selection by half a page
Enter / Ctrl-oOpen the selected item in the current pane
Ctrl-tOpen the selected item in a new tab
Ctrl-vOpen the selected item in a side-by-side split
Ctrl-sOpen the selected item in a stacked split
EscDismiss without opening anything

Released under the MIT License.