Keybindings
FreshDefault prefix is ctrl+b. prefix+n means press the prefix, then n. Open the in-app help panel with prefix+?.
Essentials
| Action | Key |
|---|---|
| Detach client | prefix+q |
| New tab | prefix+c |
| Next / previous tab | prefix+n / prefix+p |
| Switch tab by number | prefix+1..9 |
| Workspace navigation | prefix+w |
| New workspace | prefix+shift+n |
| New worktree | prefix+shift+g |
| Goto | prefix+g |
| Toggle sidebar | prefix+b |
| Keybind help | prefix+? |
Panes
| Action | Key |
|---|---|
| Split right | prefix+v |
| Split down | prefix+minus |
| Focus left / down / up / right | prefix+h / prefix+j / prefix+k / prefix+l |
| Swap left / down / up / right | prefix+shift+h/j/k/l |
| Cycle next / previous | prefix+tab / prefix+shift+tab |
| Zoom | prefix+z |
| Resize mode | prefix+r |
| Close pane | prefix+x |
| Copy mode | prefix+[ |
Copy mode
| Action | Key |
|---|---|
| Move | h/j/k/l, w/b/e, { / } |
| Start selection | v or Space |
| Copy selection | y or Enter |
| Leave without copying | q or Esc |
Workspace and tab management
| Action | Key |
|---|---|
| Rename workspace | prefix+shift+w |
| Close workspace | prefix+shift+d |
| Switch workspace by number | prefix+shift+1..9 |
| Rename tab | prefix+shift+t |
| Close tab | prefix+shift+x |
| Focus agent by number | prefix+alt+1..9 |
Navigate mode (plain keys, only while open)
| Action | Key |
|---|---|
| Workspace up / down | up / down (or bind j/k) |
| Pane left / down / up / right | h / j / k / l (or ctrl+j style) |
Left and right arrows are permanent aliases for pane-left and pane-right navigation.
Direct attach
| Action | Key |
|---|---|
| Detach from direct attach | ctrl+b q |
Send literal ctrl+b | ctrl+b ctrl+b |
Customizing
Override in ~/.config/herdr/config.toml:
[keys]
prefix = "ctrl+b"
new_tab = "prefix+c"
split_horizontal = "prefix+minus"
next_tab = ["prefix+n", "ctrl+alt+]"]Custom command keybindings:
[[keys.command]]
key = "prefix+alt+g"
type = "pane" # temporary pane, closes when the command exits
command = "lazygit"
description = "run lazygit"type = "shell" runs detached in the background. Custom commands receive HERDR_SOCKET_PATH, HERDR_BIN_PATH, HERDR_ACTIVE_WORKSPACE_ID, HERDR_ACTIVE_TAB_ID, HERDR_ACTIVE_PANE_ID, and HERDR_ACTIVE_PANE_CWD when available.
To reset old custom keybindings to the v2 defaults: herdr config reset-keys (backs up config.toml first). Full syntax rules in Configuration.