コンテンツにスキップ

キーバインド

すべてのキーボードショートカットは ~/.pi/agent/keybindings.json でカスタマイズできます。各アクションに 1 つ以上のキーを割り当てられます。

設定ファイルは、pi が内部で使用する名前空間付きキーバインド id と、拡張作者が keyHint() および注入された keybindings マネージャーで使用する id と同じです。

cursorUpexpandTools など名前空間なし id を使う古い設定は、起動時に自動的に名前空間付き id に移行されます。

keybindings.json を編集した後、pi で /reload を実行するとセッションを再起動せずに変更を適用できます。

modifier+key。modifier は ctrlshiftalt(組み合わせ可能)、key は次のとおり:

  • 文字: a-z
  • 数字: 0-9
  • 特殊: escapeescenterreturntabspacebackspacedeleteinsertclearhomeendpageUppageDownupdownleftright
  • 機能: f1-f12
  • 記号: `-=[]\;',./!@#$%^&*()_+|~{}:<>?

修飾キーの組み合わせ:ctrl+shift+xalt+ctrl+xctrl+shift+alt+xctrl+1 など。

キーバインド idデフォルト説明
tui.editor.cursorUpupカーソルを上へ
tui.editor.cursorDowndownカーソルを下へ
tui.editor.cursorLeftleft, ctrl+bカーソルを左へ
tui.editor.cursorRightright, ctrl+fカーソルを右へ
tui.editor.cursorWordLeftalt+left, ctrl+left, alt+b単語単位で左へ
tui.editor.cursorWordRightalt+right, ctrl+right, alt+f単語単位で右へ
tui.editor.cursorLineStarthome, ctrl+a行頭へ
tui.editor.cursorLineEndend, ctrl+e行末へ
tui.editor.jumpForwardctrl+]文字へ前方ジャンプ
tui.editor.jumpBackwardctrl+alt+]文字へ後方ジャンプ
tui.editor.pageUppageUp1 ページ上へ
tui.editor.pageDownpageDown1 ページ下へ
キーバインド idデフォルト説明
tui.editor.deleteCharBackwardbackspace後方の文字を削除
tui.editor.deleteCharForwarddelete, ctrl+d前方の文字を削除
tui.editor.deleteWordBackwardctrl+w, alt+backspace後方の単語を削除
tui.editor.deleteWordForwardalt+d, alt+delete前方の単語を削除
tui.editor.deleteToLineStartctrl+u行頭まで削除
tui.editor.deleteToLineEndctrl+k行末まで削除
キーバインド idデフォルト説明
tui.input.newLineshift+enter改行を挿入
tui.input.submitenter入力を送信
tui.input.tabtabTab / オートコンプリート
キーバインド idデフォルト説明
tui.editor.yankctrl+y直近に削除したテキストを貼り付け
tui.editor.yankPopalt+yyank 後に削除履歴を循環
tui.editor.undoctrl+-直前の編集を元に戻す
キーバインド idデフォルト説明
tui.input.copyctrl+c選択をコピー
tui.select.upup選択を上へ
tui.select.downdown選択を下へ
tui.select.pageUppageUpリストでページアップ
tui.select.pageDownpageDownリストでページダウン
tui.select.confirmenter選択を確定
tui.select.cancelescape, ctrl+c選択をキャンセル
キーバインド idデフォルト説明
app.interruptescapeキャンセル / 中止
app.clearctrl+cエディターをクリア
app.exitctrl+d終了(エディターが空のとき)
app.suspendctrl+z(Windows ではなし)バックグラウンドにサスペンド
app.editor.externalctrl+g外部エディターで開く($VISUAL または $EDITOR
app.clipboard.pasteImagectrl+v(Windows では alt+vクリップボードから画像を貼り付け
キーバインド idデフォルト説明
app.session.new(なし)新しいセッションを開始(/new
app.session.tree(なし)セッションツリーナビゲーターを開く(/tree
app.session.fork(なし)現在のセッションをフォーク(/fork
app.session.resume(なし)セッション再開ピッカーを開く(/resume
app.session.togglePathctrl+pパス表示を切り替え
app.session.toggleSortctrl+sソートモードを切り替え
app.session.toggleNamedFilterctrl+n名前付きのみフィルターを切り替え
app.session.renamectrl+rセッション名を変更
app.session.deletectrl+dセッションを削除
app.session.deleteNoninvasivectrl+backspaceクエリが空のときセッションを削除
キーバインド idデフォルト説明
app.model.selectctrl+lモデルセレクターを開く
app.model.cycleForwardctrl+p次のモデルへ
app.model.cycleBackwardshift+ctrl+p前のモデルへ
app.thinking.cycleshift+tab思考レベルを循環
app.thinking.togglectrl+t思考ブロックを折りたたみ/展開
キーバインド idデフォルト説明
app.tools.expandctrl+oツール出力を折りたたみ/展開
app.message.followUpalt+enterフォローアップメッセージをキュー
app.message.dequeuealt+upキュー内メッセージをエディターに復元
キーバインド idデフォルト説明
app.tree.foldOrUpctrl+left, alt+left現在のブランチセグメントを折りたたむ、または前のセグメント開始へ
app.tree.unfoldOrDownctrl+right, alt+right現在のブランチセグメントを展開、または次のセグメント開始/ブランチ終端へ
app.tree.editLabelshift+l選択ツリーノードのラベルを編集
app.tree.toggleLabelTimestampshift+tツリーのラベルタイムスタンプを切り替え
app.tree.filter.defaultctrl+dツリーフィルターをデフォルト表示に
app.tree.filter.noToolsctrl+tツール結果を非表示にするフィルターを切り替え
app.tree.filter.userOnlyctrl+uユーザーメッセージのみ表示フィルターを切り替え
app.tree.filter.labeledOnlyctrl+lラベル付きエントリのみ表示フィルターを切り替え
app.tree.filter.allctrl+aすべてのエントリ表示フィルターを切り替え
app.tree.filter.cycleForwardctrl+oツリーフィルターを前方に循環
app.tree.filter.cycleBackwardshift+ctrl+oツリーフィルターを後方に循環

スコープ付きモデルセレクター

Section titled “スコープ付きモデルセレクター”

スコープ付きモデルセレクター内(/scoped-models で開く)で使用。

キーバインド idデフォルト説明
app.models.savectrl+s現在のモデル選択を設定に保存
app.models.enableAllctrl+aすべてのモデルを有効化(または現在の検索に一致するすべて)
app.models.clearAllctrl+xすべてのモデルをクリア(または現在の検索に一致するすべて)
app.models.toggleProviderctrl+p現在の provider のすべてのモデルを切り替え
app.models.reorderUpalt+up選択モデルを循環順序で上へ
app.models.reorderDownalt+down選択モデルを循環順序で下へ

~/.pi/agent/keybindings.json を作成:

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

各アクションは単一キーまたはキーの配列を持てます。ユーザー設定はデフォルトを上書きします。

ネイティブ Windows では、Windows ターミナルが Unix ジョブ制御をサポートしないため app.suspend にデフォルトバインドはありません。手動でバインドすると、pi はサスペンドせずステータスメッセージを表示します。WSL では通常の Linux の ctrl+z/fg 動作が適用されます。

{
"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"]
}
{
"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"]
}