Every binding below is a default — all of them can be changed per screen via
[keys.<surface>] in the config (see
Configuration). ? shows this
information contextually inside the app.
| Key |
Action |
? |
help for the current screen |
Q |
quit (confirmation unless ui.confirm_quit = false; qq is quick) |
t |
new tab (closing is q on the tree; w is deliberately unbound — vim word-motion muscle memory) |
[ / ] / 1-9 |
previous / next / numbered tab |
F |
follow mode (auto-show whatever changes on disk) |
T |
tab list (switch / close tabs; the tab bar shows ‹n / n› when tabs overflow) |
P |
jump to the path or GitHub link on the clipboard (reveal + preview; #L12 / :12 line anchors work) |
| Key |
Action |
j k / g G |
move / first / last |
l |
descend into directory (files: preview) |
h |
parent directory |
Enter |
expand/collapse in place (files: preview) |
/ |
filter as you type (Esc clears) |
. |
toggle dotfiles |
s / i / r |
sort menu / file info / refresh |
e |
open in external editor |
p |
cycle path display (relative / ~ / full) |
v / V |
visual range selection / toggle one selection |
Space → n r d c x p D |
create / rename / delete / copy / cut / paste / duplicate in place |
y → n r f p @ |
copy name / relative / full / parent / @ref |
Ctrl-t |
open the entry under the cursor in a new tab (file: preview · directory: its root) |
m + letter / ' |
set bookmark / bookmark list |
a / A |
anchor display root here / reset anchor |
o / d |
git changes hub / diff of the cursor file (the external git tool is !, inside the hub) |
C / n N |
changed-files view / jump between changed files |
q |
close tab (last tab: quit) |
| Key |
Action |
j k, Ctrl-d Ctrl-u, g G |
scroll / half page / ends |
h l, 0 $ |
horizontal scroll & line ends (wrap off) |
/ n N |
search / next / previous match |
Tab / Shift-Tab |
focus next / previous link or checkbox (Markdown) |
Enter |
open focused link / toggle focused checkbox |
Ctrl-t |
open the focused link in a new tab (URLs open in the browser either way) |
Space |
toggle focused checkbox |
R |
toggle rendered ⇄ raw source (Markdown/Mermaid) |
o |
heading outline of a Markdown preview (Enter jumps to a heading) |
v / V |
select by character / by line, then y copies |
y → c |
copy the focused Markdown code block (Tab focuses one; the rest of the y menu copies paths) |
Y |
copy @path#L12-34 reference |
Ctrl-n / Ctrl-p |
preview the next / previous file (tree order, wraps) |
m + letter / ' |
bookmark the previewed file / bookmark list |
e / q |
external editor / back to tree |
| Key |
Action |
+ - / 0 = |
zoom / reset to fit |
h j k l |
pan |
J K |
PDF page down / up |
Ctrl-n / Ctrl-p |
preview the next / previous file (tree order, wraps) |
m ' / e / q |
bookmark / editor / back |
| Key |
Action |
h j k l |
move by cell |
Ctrl-n / Ctrl-p |
preview the next / previous file (tree order, wraps) |
g G / 0 $ |
first/last row / first/last column |
/ / n N |
search cells (case-insensitive) / next, previous match (wraps) |
y → c r C f |
copy cell / row / column / full path |
Enter |
Open the cursor cell in a popup — the full, untruncated value, wrapped and scrollable (Enter / q / Esc closes). Also works on .zip / .tar listings. |
m ' / e / q |
bookmark / editor / back |
| Key |
Action |
Hub (o): s u / S U |
stage/unstage file / all |
Hub: c / x / Enter |
commit / discard file / open diff |
Hub: l / g / b / w |
log / commit graph / branches / worktrees |
Diff: s / n N / x |
layout unified⇄split⇄auto / next/prev changed file / discard |
Follow diff: f |
toggle scope: since follow-start (default) ⇄ full git diff |
Log & graph: Enter / y |
commit detail (full message + diff) / copy commit info |
Graph: s / x 0 / b |
pin base branch / unpin / branch picker |
Branches: Enter / n / d / / |
checkout / create / delete / filter |
Worktrees (w): Enter / Ctrl-t |
switch this tab to it / open it in a new tab |
Worktrees: d / / |
diff it against its base branch / filter |
Worktrees: n |
create one — asks for a branch name, then switches into it |
jj — hub: R |
ask jj to snapshot the working copy (the only write; confirmed first) |
jj — hub: b |
bookmarks (jj’s pointers; none is marked current) |
jj — graph: a |
show every revision instead of jj’s own range |
| jj — hub |
no s/u/S/U/c/x/w: jj has no index, and konoma only reads |
| Key |
Action |
1-9 / Enter |
switch to that tab / to the selection |
j k |
move |
d |
close the selected tab (list stays open; the last tab refuses) |
T q Esc |
close the list |
| Key |
Action |
| any letter |
jump to that bookmark (a-z local / A-Z global) |
j k + Enter |
select + jump |
Ctrl-e / Ctrl-d |
edit target in editor / delete bookmark |
' q Esc |
close |
Letters used by the list or global keys (F P Q T j k q t) can’t
letter-jump — select those with j/k + Enter, or rebind.