# The Find builtin (SPC f f) = `fd`, in-core: it arms the SAME tag input `/` # does, but Enter walks the pane's DIRECTORY instead of its text and writes one # matching path per row into a "+Search" OUTPUT BUFFER. Every row is therefore # an ordinary look target, which is the whole point: n/N step the rows and look # them with no code of their own, opening each found file, and focus returns to # the pane that owns the search so the next n keeps stepping. The walk skips # .git, matches the NAME case-insensitively, and sorts (readdir order is not # stable). `SPC f s` is Save, which moved out of `w` to make this group. dirmk sub dirmk sub/nest dirmk .git file here.txt Find file zqmark-alpha.txt alpha body file sub/ZQMARK-beta.txt beta body file sub/nest/zqmark-gamma.txt gamma body file other.txt nothing to match here file .git/zqmark-hidden.txt hidden body start 40 120 here.txt wait 8000 here.txt stable 700 20000 # SPC f is a GROUP now (Find + New + Save): the indicator stays on the tag key space key f stable 400 5000 snap group # ... and the second f arms the input, marker visible in the tag key f stable 400 5000 snap armed text zqm stable 400 5000 snap typing # Enter walks: three hits, sorted, .git's copy skipped, other.txt not matched key enter wait 10000 zqmark-alpha.txt stable 700 15000 snap results # n looks row 1 — a path, so the file OPENS — and focus comes back here. The # look comes FROM the results buffer, but that is an output pane and not a # document, so the file joins the docs above it (below here.txt) instead of # stacking under the list: the +Search stays at the foot of the column. key n wait 10000 beta body stable 700 15000 snap first snapstyle first key n wait 10000 gamma body stable 700 15000 snap second key n wait 10000 alpha body stable 700 15000 snap third # N walks back up: the file is already open, so the look just focuses it key N stable 700 15000 snap back # executing the WORD Find (middle-click in a body) arms the same input — the # enum IS the dispatch — and Esc abandons it, restoring the tag tail press middle 8 3 release middle 8 3 stable 700 10000 snap word key esc settle 100 stable 400 5000 snap cancel # a no-match walk opens an empty list; n then has nowhere to go. The list is # exactly as tall as its results — one blank row plus its tag — and it stacks # above the earlier one, whose height is untouched. key space key f key f text zzqq key enter stable 700 10000 key n stable 400 5000 snap nomatch # ... and asking for `zqm` AGAIN re-arms the list it ALREADY filled instead of # stacking an identical twin under the empty one — even though n/N were armed # on the zzqq list, so the reuse is by what a buffer HOLDS (this search, this # pattern, this directory), not by which one the pane happens to point at. The # frame is therefore the `results` frame unchanged, down to the byte. key space key f key f text zqm key enter wait 10000 zqmark-alpha.txt stable 700 15000 snap refit # Find is a TOPBAR word too (row 1, its own column, next to Grep): the same # builtin the leader path runs, reached with the mouse. Chorded — a selection # held when it runs IS the argument — so dragging over `alpha` and clicking # Find walks for that name with nothing typed and no input armed. press left 8 8 drag left 13 8 release left 13 8 stable 400 5000 press middle 12 1 release middle 12 1 stable 700 15000 snap topbar