gitwig

⌨️ Keybindings

Key Mode Action
/ k Normal Move selection up
/ j Normal Move selection down
a Normal Add a new repository (via directory scanner)
A Normal Bulk add folders in a directory
i Normal Import remote repository
e Normal Edit the selected item
D Normal Delete the selected item (asks)
l Normal Edit labels of the selected item
R Normal Refresh status of selected item
F Normal Bulk fetch all tracked repositories concurrently
E Normal Show why the selected repository’s last fetch failed
f Normal Enter repository search mode
Tab / Shift+Tab Normal Cycle summary-bar filter (repos → dirty → ahead → stale) forward / backward
L Normal Open label picker: filter the list to one label (sticky until deselected; persists across restarts)
Esc LabelPicker Close label picker without changing the filter
/ LabelPicker Navigate label list
Enter LabelPicker Apply selected label (re-selecting the active label, or “All repositories”, clears it)
LabelPicker Open Label Settings for the highlighted label (no-op on the “All repositories” row)
Home / End / PgUp / PgDn Fuzzy pickers Jump to top / bottom or page through the match list. Works in all fuzzy picker overlays: label picker, Jump-to-Repo, add/bulk-add repo scanners, and branch/file/commit/tag searches
ctrl+f Normal Open global code search popup overlay
p Normal Toggle pin status of selected item
* Normal Toggle Favorite / Star status of selected item
Space Normal Toggle selection of item for batch operations (fetch, delete, external shell)
y Normal Yank absolute path of selected item to clipboard
/ Normal Open fuzzy Jump-to-Repo picker overlay
o Normal Cycle list sorting mode (Custom → Alphabetical → Recent → Changes)
O Normal Toggle list sorting direction (ascending vs. reversed)
g Normal Launch the preferred Git client for selected repository (configurable in settings, default is gitui)
t Normal Open the embedded terminal panel in the selected repository’s directory
T Normal Suspend the TUI and spawn a full-screen shell in the selected repository’s directory
ctrl+t Global / Anywhere Toggle the embedded terminal panel (show + focus / hide; also unfocuses it)
Shift+PgUp / Shift+PgDn Terminal panel (focused) Scroll the terminal’s output history; any keystroke snaps back to live view
s Normal Open options/settings page
d Normal Open debug logs panel
V Normal Show about popup / creator profile
v Normal Cycle between standard cards, compact 1-row view, and tile grid view
h Normal Show signs & symbols legend popup
Shift+U Normal Open App Usage Stats Dashboard
u Normal Check for application updates manually
. Normal / Detail Toggle status bar between collapsed and expanded view
Enter Normal / Commits list Open Detail view for selected item / Inspect selected commit
? Normal / Help Toggle the shortcut overlay
ctrl+q Global / Anywhere Quit application from anywhere
Esc Normal Clear active search filter or cancel all repository selections
Enter Editing / Input Modals Save / submit typed text and persist
Esc Editing / Input Modals Cancel modal input without saving (letters like q/Q are typed as regular input)
ctrl+v / Terminal Paste Editing / Input Modals Paste text from system clipboard (strips newlines for single-line inputs)
Esc RepoSearchInput Clear repository search and return to Normal mode
Esc GlobalSearch Return to Normal mode
Tab GlobalSearch Toggle focus between search query input and results
/ GlobalSearch Navigate search results
Enter (Query focus) GlobalSearch Trigger/execute search scan
Enter (Results focus) GlobalSearch Select matched result, jump to repository, and open Detail view
Char GlobalSearch Type query (when input is focused)
Backspace GlobalSearch Erase query character (when input is focused)
Enter Settings (Edit) Save settings edit
Esc Settings (Edit) Cancel settings edit
Esc / q Settings Exit Settings and return to Home
/ / k / j Settings Navigate setting fields / categories
Enter / Space Settings Toggle / Edit selected setting
Tab / Shift+Tab Settings Switch focus between category list (sidebar) and settings list
/ h Settings Focus category list (sidebar)
/ l / w / W Settings Focus settings list
1 - 5 Settings Jump directly to category: General (1), Sorting (2), Scan (3), Theme (4), Keybindings (5)
Esc / q DebugLogs Exit Debug Logs (or clear filter if active) and return to Home
c / C / x DebugLogs Clear all debug logs and reset scroll
/ DebugLogs Enter fuzzy search query mode
Enter DebugLogs (Search) Finish typing query and lock focus to log list scrolling
Esc DebugLogs (Search) Clear query character/text or exit search mode
Backspace DebugLogs (Search) Erase query character
Char DebugLogs (Search) Type query character
/ / k / j DebugLogs Scroll debug logs list
PgUp / PgDn DebugLogs Scroll debug logs list by page size
Home / End DebugLogs Jump to top / bottom of debug logs
Backspace Editing Erase one character
Tab Tag Creation Switch focus between Tag Name and Tag Message input fields
y / Y Confirm Dialog Confirm action (delete item/branch/tag, push branch/tag/all tags, tag overwrite, abort/continue merge)
f / F Confirm Dialog Force push tag (--force) in Tag Push confirmation dialog
t / T Confirm Dialog Push branch with tags (--tags) in Branch Push confirmation dialog
n / N / Esc Confirm Dialog Cancel action
? / Esc / q Help Close the help overlay
Esc / q Detail Return to the list
Tab / Shift+Tab Detail Cycle active detail view tabs within the active group (Primary vs. Advanced)
w / W Detail Cycle panel focus forward (w) / backward (W)
+ / - Detail Grow (+) or shrink (-) the focused panel by moving its layout split (same splits the mouse can drag)
1 - 7 Detail Jump directly to Primary tab: Workspace (1), Files (2), Graph (3), Branches (4), Tags (5), Remotes (6), Stashes (7)
1 - 5 Detail Jump directly to Advanced tab: Worktrees (1), Submodules (2), Reflog (3), Issues (4), PRs (5) (when Advanced group is active)
Z Detail Toggle between Primary and Advanced tab groups
O Detail Toggle full-screen repository Overview overlay
/ k Detail Move selection or scroll list/diff/tree up
/ j Detail Move selection or scroll list/diff/tree down
PgUp / PgDn Detail / Normal / Settings Scroll list/diff/tree/settings by configured page_size
Home / End Detail / Normal / Settings Jump to top / bottom of list/diff/tree/settings
Enter Detail Stage/Unstage file (Workspace tab), checkout branch (Branches tab), checkout tag (Tags tab), open worktree in new context (Worktrees tab), checkout commit (Reflog tab; also Space), or Inspect commit
F (or f/F in Remotes) Detail Fetch remote repository (Branches / Tags / Remotes tabs)
p Detail Pull selected local branch from remote (Branches tab), Push selected tag (Tags tab; asks confirmation), or Prune stale worktree metadata (Worktrees tab)
Shift+P Detail Push selected local branch to remote (Branches tab) or Push all tags (Tags tab; asks confirmation)
/ Detail Focus Local/Remote branch list (Branches tab only; on the Tags tab switch local/remote focus with w / W or the mouse)
> / / Enter Detail Expand / toggle selected folder (Files tab)
< / , Detail Collapse selected folder (Files tab)
Detail Collapse all folders (Files tab)
/ Detail Fuzzy find files (Files tab) / commits (Workspace commits list / Logs view) / branches (Branches tab) / tags (Tags tab)
e / o Detail Open selected file in configured terminal editor (Files tab)
Shift+H Detail View selected file’s commit/revision history (Files tab)
c Detail Open commit prompt (Workspace tab or Inspect view), or Create branch from HEAD (Branches tab)
C Detail Open commit prompt with Amend (Workspace tab or Inspect view)
a Detail Toggle “Assigned to me” / “All Open” issues (Issues tab), Stage All (Workspace tab Unstaged focus) / Unstage All (Workspace tab Staged focus), Apply stash (Stashes tab), Add worktree (Worktrees tab), Add remote (a/A, Remotes tab), or Add submodule (Submodules tab)
n Detail Add line comment to selected PR (PRs tab), or Toggle line numbers in content viewer (n/N, Files tab)
b / B Detail Toggle git blame panel (Files tab), or Create branch at selected commit (Workspace commits list)
t / T Detail Create tag at selected commit (Workspace commits list)
y / Y Detail Yank selected commit hash (Workspace commits list)
v / V Detail Revert selected commit (Workspace commits list; asks confirmation)
p / P Detail Cherry-pick selected commit (Workspace commits list; asks confirmation)
x Detail Discard selected file changes (Workspace tab, Inspect view, or Files tab via x/X; asks confirmation)
X Detail Discard all changes in repository (Workspace tab or Inspect view; asks confirmation)
i / I Detail Interactive rebase from selected commit (Workspace tab commits list)
G Detail Load more commits (Workspace commits list / Logs view)
l Detail Open Logs view (Workspace tab commits list focus), Toggle line-by-line staging mode (l/L, Workspace diff / Inspect StagingDetails focus), or Toggle lock status (Worktrees tab; asks reason/unlocks)
D Detail Delete selected branch (Branches tab; asks confirmation), tag (Tags tab; asks confirmation), stash (Stashes tab; asks confirmation), remote (Remotes tab; asks confirmation), submodule (Submodules tab; asks confirmation), or remove worktree (Worktrees tab; asks confirmation)
s / S Detail Stage selected hunk/line (Workspace tab StagingDetails focus), open Stashing UI overlay (Workspace tab files list focus), Prompt to save stash (Stashing UI / Stashes tab), or Open Repository Settings popup (Overview overlay)
u / U Detail Unstage selected hunk/line (Workspace tab StagingDetails focus), or Toggle “Stash untracked files” option (Stashing UI)
i Detail Toggle “Keep index” option (Stashing UI)
Ctrl+U Input (Stash) Toggle “Stash untracked files” option (Stash Create popup)
Ctrl+I Input (Stash) Toggle “Keep index” option (Stash Create popup)
m Detail Merge selected branch into current branch (Branches tab; asks confirmation)
M Detail Checkout selected local branch and merge the current branch into it (Branches tab, Local panel; asks confirmation)
r Detail Rebase current branch onto selected branch (Branches tab; asks confirmation)
o / O Detail Checkout selected commit (Workspace commits list), Open selected issue/PR in web browser (o, Forge tabs), or Accept OURS version of conflict (Workspace tab or Inspect view, Conflicts / ConflictDiff)
t Detail Accept THEIRS version of conflict (Workspace tab or Inspect view, Conflicts / ConflictDiff)
r Detail Mark conflict as resolved (Workspace tab or Inspect view, Conflicts / ConflictDiff)
A Detail Abort the merge (Workspace tab or Inspect view, Conflicts / ConflictDiff; asks confirmation)
C Detail Continue the merge (Workspace tab or Inspect view, Conflicts / ConflictDiff; asks confirmation)
M Detail Open external mergetool (Workspace tab or Inspect view, Conflicts file list / ConflictDiff pane)
f Detail Open search column picker and go to logs (Workspace tab)
R Detail Resync the active tab state
? Detail Toggle detail help overlay
Esc / q / ? DetailHelp Close detail help overlay
⌃S (Ctrl+S) CommitInput (Edit) Submit / execute Git commit directly from edit mode
⌃A (Ctrl+A) CommitInput (Edit) Toggle amend last commit option
⌃D (Ctrl+D) CommitInput (Edit) Maximize / restore the popup window size
⌃C (Ctrl+C) CommitInput (Edit) Finish editing commit message (switches to confirm state)
⌃H (Ctrl+H) CommitInput (Edit) Open commit history picker
⌃U (Ctrl+U) CommitInput (Edit) Clear entire commit message buffer
⌃K (Ctrl+K) CommitInput (Edit) Kill (delete) text from cursor to end of line
⌃W (Ctrl+W) CommitInput (Edit) Delete the word before the cursor
⌃B / ⌃F (Ctrl+B / Ctrl+F) CommitInput (Edit) Move cursor left / right
⌃P / ⌃N (Ctrl+P / Ctrl+N) CommitInput (Edit) Move cursor one line up / down
(Enter) CommitInput (Edit) Insert a newline
Backspace CommitInput (Edit) Erase one character from commit message
Esc CommitInput Cancel commit and return to Detail view (in confirm state q also closes)
(Enter) CommitInput (Confirm) Submit / execute Git commit
e / E CommitInput (Confirm) Edit / resume typing commit message
a / Space CommitInput (Confirm) Toggle amend last commit option
d / D / m / M CommitInput (Confirm) Maximize / restore the popup window size
x / X / u / U CommitInput (Confirm) Clear entire commit message buffer
Left-Click (Mouse) Normal Select the clicked item
Double-Click (Mouse) Normal Open Detail view for clicked item
Left-Click (Mouse) Detail Shift focus to the clicked panel or change active tab
Left-Click + Drag (Mouse) Detail Drag panel boundary splitters to dynamically resize layout splits
Scroll Wheel (Mouse) Normal / Detail Scroll selected list, graph view, branches, tree items, or unified diffs

Press ? at any time in normal mode to see the full keybinding reference as a centered popup. The help overlay only handles the dismissal keys — your selection and scroll position are preserved underneath.

The selected card’s border color mirrors the current operation mode:

The selected item is marked with a left-edge accent, a colored border, and bold text. In ADDING and EDITING modes the real terminal cursor sits at the end of your input so you can see exactly where the next character will land.

Repository Settings Popup controls:

When viewing the Repository Settings popup (entered via s on the repository Overview page):

Label Settings Popup controls:

When viewing the Label Settings popup (entered via on a highlighted label in the label picker). Settings chosen here apply to every repository carrying that label, resolved between the per-repo override and the global default (repo → label → global):

Customizing Keybindings

All bindings are stored in keybindings.toml next to your config.toml (e.g. ~/.gitwig/keybindings.toml or ~/.config/gitwig/keybindings.toml). Edit them in-app via Settings (s) → Keybindings, or in the file directly — each action holds a keys list, for example:

[navigation.grow_panel]
keys = ["+"]
description = "Grow the focused panel"

Entries in this file override the built-in defaults. Actions missing from the file are backfilled with their defaults on startup, but existing entries are never rewritten — so if a default changes in a newer Gitwig version (for example, panel grow was briefly bound to both + and = in development builds before settling on + alone), a previously written entry keeps the old keys until you edit it or delete the entry to re-adopt the default.