Interactive mode¶
Running ggc with no arguments drops you into the interactive prompt. There are two modes:
- Search mode (default) — fuzzy-search over all
ggccommands and run one. - Workflow mode — build a queue of commands, then execute them in sequence with one keystroke.
Search mode¶
From the prompt:
- type a few letters → the command list narrows via fuzzy match
- Enter — execute the highlighted command
- Tab — add the highlighted command to the workflow queue and stay in search
- ↑/↓ or Ctrl+P/Ctrl+N — move selection
- Ctrl+C — cancel the current input
- Ctrl+D — exit
Fuzzy pickers¶
Commands that take a branch, file, or stash entry open a nested picker using the same keys (↑/↓, Enter to accept, Esc to cancel).
Workflow mode¶
Workflow mode turns the interactive prompt into a command pipeline builder. Typical use: stage → commit → push in one go without re-typing anything.
- In search mode, highlight a command and press Tab. The command is appended to the workflow queue and the prompt stays in search mode so you can add the next one.
- Press Ctrl+T to switch to workflow view. You see the queued commands in order.
- In workflow view: x runs the queue (execution stops on the first failure), n creates a new workflow, d / Ctrl+D deletes the active workflow, Ctrl+N/Ctrl+P cycles between workflows.
- Ctrl+T again returns to search mode without clearing the queue; c clears the active workflow.
Commands with placeholders (e.g. aliases like commit-msg: "commit -m '{0}'") will prompt for the placeholder value when they run, not when they're queued.
Keybinding profiles¶
The interactive prompt ships with four profiles:
default— curated ggc defaultsemacs— GNU readline-stylevi— modal,hjklnavigationreadline— strict readline compatibility
Pick one in ~/.config/ggc/config.yaml:
Fine-grained overrides (per-OS, per-context, per-terminal, custom key combos) are documented in Configuration & aliases → Keybindings.
Exiting¶
From search mode: Ctrl+D or type quit + Enter. quit only works inside interactive mode; invoking ggc quit from a shell is a no-op.