Filtering & searching
Press / to narrow the focused panel. A slim input opens in the status bar and the query applies live as you type.
| Key | Effect |
|---|---|
| enter | Keep the query. The hint bar then shows it, with esc to clear. |
| esc | Clear the query. |
| n / N | In Main and Status: jump to the next / previous match. |
The query is remembered per panel, so the Files panel can stay narrowed to state:M
while you search inside a diff in Main.
Two behaviours
Section titled “Two behaviours”List panels filter. In Files and Log, non-matching rows are hidden. The panel footer
keeps counting, and appends the full unfiltered count in brackets — 1 of 16 (29) — so
you always know how much is out of view.
Detail panels search. In Main and Status, nothing is removed. Matching lines are
highlighted in place: the current match is a reverse-video bar and the rest get a subtle
highlight. n / N move between them, wrapping at the
ends, and the hint bar shows the position — 2/5. If nothing matches, a toast says so.
Query syntax
Section titled “Query syntax”Every query accepts free text. The list panels also accept key:value parameters, which
can be combined in any order with the free text. Keys are case-insensitive, and so is
matching.
| Panel | Behaviour | Parameters | Free text matches |
|---|---|---|---|
| Log | filter | rev: (exact revision, with or without the leading r), user: / author:, path: (a changed path), date: (YYYY-MM-DD) |
The full commit message, not just its first line |
| Files — Changes, Changelists, Diffs, Rejects | filter | state: (a status code such as M, or part of a state name such as modified), cl: / changelist: |
The file path |
| Main / Status | highlight + jump | — | The visible lines |
Anything that is not a recognised key:value pair — including an unknown key — is treated
as free text.
state:M app.goModified files whose path contains app.go.
cl:stagedOnly the staged set. cl:unstaged is its counterpart, and cl:feature-x narrows to a
named changelist.
The Files filter is shared by all four views — Changes, Changelists, Diffs and Rejects — so switching views with [ / ] keeps the same query. In the Diffs view only the free text applies, matched against the patch file name, and in the Rejects view likewise, matched against the reject’s path below the root.
rev:128 user:alice parserRevision 128, authored by alice, with parser anywhere in the commit message.
date:2026-07 path:internal/svnJuly 2026 revisions that touched something under internal/svn. date: is a substring
match over YYYY-MM-DD HH:MM, so date:2026-07-14 pins a single day and date:2026-07
covers a month.
rev: is exact — rev:12 does not match revision 128.
Main and Status
Section titled “Main and Status”No parameters; the whole query is a case-insensitive substring match over the visible lines. This is how you search inside a diff:
- 0 to focus Main.
- /, type the term, enter.
- n / N to walk the matches.
Clearing
Section titled “Clearing”esc clears the focused panel’s query. It only consumes the keypress when there was a query to clear, so esc still backs out of a drilled-in changelist when no filter is active.
/ is in the Navigation section of the keybindings reference.