Skip to content

Latest commit

 

History

History
175 lines (138 loc) · 7.18 KB

File metadata and controls

175 lines (138 loc) · 7.18 KB

Keybindings

All keyboard shortcuts can be customized via ~/.pi/agent/keybindings.json. Each action can be bound to one or more keys.

The config file uses the same namespaced keybinding ids that pi uses internally and that extension authors use in keyHint() and injected keybindings managers.

Older configs using pre-namespaced ids such as cursorUp or expandTools are migrated automatically to the namespaced ids on startup.

After editing keybindings.json, run /reload in pi to apply the changes without restarting the session.

Key Format

modifier+key where modifiers are ctrl, shift, alt (combinable) and keys are:

  • Letters: a-z
  • Digits: 0-9
  • Special: escape, esc, enter, return, tab, space, backspace, delete, insert, clear, home, end, pageUp, pageDown, up, down, left, right
  • Function: f1-f12
  • Symbols: `, -, =, [, ], \, ;, ', ,, ., /, !, @, #, $, %, ^, &, *, (, ), _, +, |, ~, {, }, :, <, >, ?

Modifier combinations: ctrl+shift+x, alt+ctrl+x, ctrl+shift+alt+x, ctrl+1, etc.

All Actions

TUI Editor Cursor Movement

Keybinding id Default Description
tui.editor.cursorUp up Move cursor up
tui.editor.cursorDown down Move cursor down
tui.editor.cursorLeft left, ctrl+b Move cursor left
tui.editor.cursorRight right, ctrl+f Move cursor right
tui.editor.cursorWordLeft alt+left, ctrl+left, alt+b Move cursor word left
tui.editor.cursorWordRight alt+right, ctrl+right, alt+f Move cursor word right
tui.editor.cursorLineStart home, ctrl+a Move to line start
tui.editor.cursorLineEnd end, ctrl+e Move to line end
tui.editor.jumpForward ctrl+] Jump forward to character
tui.editor.jumpBackward ctrl+alt+] Jump backward to character
tui.editor.pageUp pageUp Scroll up by page
tui.editor.pageDown pageDown Scroll down by page

TUI Editor Deletion

Keybinding id Default Description
tui.editor.deleteCharBackward backspace Delete character backward
tui.editor.deleteCharForward delete, ctrl+d Delete character forward
tui.editor.deleteWordBackward ctrl+w, alt+backspace Delete word backward
tui.editor.deleteWordForward alt+d, alt+delete Delete word forward
tui.editor.deleteToLineStart ctrl+u Delete to line start
tui.editor.deleteToLineEnd ctrl+k Delete to line end

TUI Input

Keybinding id Default Description
tui.input.newLine shift+enter Insert new line
tui.input.submit enter Submit input
tui.input.tab tab Tab / autocomplete

TUI Kill Ring

Keybinding id Default Description
tui.editor.yank ctrl+y Paste most recently deleted text
tui.editor.yankPop alt+y Cycle through deleted text after yank
tui.editor.undo ctrl+- Undo last edit

TUI Clipboard and Selection

Keybinding id Default Description
tui.input.copy ctrl+c Copy selection
tui.select.up up Move selection up
tui.select.down down Move selection down
tui.select.pageUp pageUp Page up in list
tui.select.pageDown pageDown Page down in list
tui.select.confirm enter Confirm selection
tui.select.cancel escape, ctrl+c Cancel selection

Application

Keybinding id Default Description
app.interrupt escape Cancel / abort
app.clear ctrl+c Clear editor
app.exit ctrl+d Exit (when editor empty)
app.suspend ctrl+z Suspend to background
app.editor.external ctrl+g Open in external editor ($VISUAL or $EDITOR)
app.clipboard.pasteImage ctrl+v (alt+v on Windows) Paste image from clipboard

Sessions

Keybinding id Default Description
app.session.new (none) Start a new session (/new)
app.session.tree (none) Open session tree navigator (/tree)
app.session.fork (none) Fork current session (/fork)
app.session.resume (none) Open session resume picker (/resume)
app.session.togglePath ctrl+p Toggle path display
app.session.toggleSort ctrl+s Toggle sort mode
app.session.toggleNamedFilter ctrl+n Toggle named-only filter
app.session.rename ctrl+r Rename session
app.session.delete ctrl+d Delete session
app.session.deleteNoninvasive ctrl+backspace Delete session when query is empty

Models and Thinking

Keybinding id Default Description
app.model.select ctrl+l Open model selector
app.model.cycleForward ctrl+p Cycle to next model
app.model.cycleBackward shift+ctrl+p Cycle to previous model
app.thinking.cycle shift+tab Cycle thinking level
app.thinking.toggle ctrl+t Collapse or expand thinking blocks

Display and Message Queue

Keybinding id Default Description
app.tools.expand ctrl+o Collapse or expand tool output
app.message.followUp alt+enter Queue follow-up message
app.message.dequeue alt+up Restore queued messages to editor

Tree Navigation

Keybinding id Default Description
app.tree.foldOrUp ctrl+left, alt+left Fold current branch segment, or jump to the previous segment start
app.tree.unfoldOrDown ctrl+right, alt+right Unfold current branch segment, or jump to the next segment start or branch end
app.tree.editLabel shift+l Edit the label on the selected tree node
app.tree.toggleLabelTimestamp shift+t Toggle label timestamps in the tree

Custom Configuration

Create ~/.pi/agent/keybindings.json:

{
  "tui.editor.cursorUp": ["up", "ctrl+p"],
  "tui.editor.cursorDown": ["down", "ctrl+n"],
  "tui.editor.deleteWordBackward": ["ctrl+w", "alt+backspace"]
}

Each action can have a single key or an array of keys. User config overrides defaults.

Emacs Example

{
  "tui.editor.cursorUp": ["up", "ctrl+p"],
  "tui.editor.cursorDown": ["down", "ctrl+n"],
  "tui.editor.cursorLeft": ["left", "ctrl+b"],
  "tui.editor.cursorRight": ["right", "ctrl+f"],
  "tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
  "tui.editor.cursorWordRight": ["alt+right", "alt+f"],
  "tui.editor.deleteCharForward": ["delete", "ctrl+d"],
  "tui.editor.deleteCharBackward": ["backspace", "ctrl+h"],
  "tui.input.newLine": ["shift+enter", "ctrl+j"]
}

Vim Example

{
  "tui.editor.cursorUp": ["up", "alt+k"],
  "tui.editor.cursorDown": ["down", "alt+j"],
  "tui.editor.cursorLeft": ["left", "alt+h"],
  "tui.editor.cursorRight": ["right", "alt+l"],
  "tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
  "tui.editor.cursorWordRight": ["alt+right", "alt+w"]
}