Pi Agent キーボードショートカットのカスタマイズ
Pi Agent のショートカットキーは完全にカスタマイズ可能です。この章ではデフォルトのショートカットキー設定と、独自のショートカットキー構成を作成する方法を紹介します。
設定ファイル
ショートカットキー設定ファイルは次の場所にあります~/.pi/agent/keybindings.json。
変更後、次のコマンドを実行します/reload再起動せずに有効になります。
ショートカットキー形式
ショートカットキーの形式は次のとおりです修飾キー+キー修飾キーには ctrl、shift、alt、super があり、組み合わせて使用できます。
なお、super は端末がその修飾キーを単独で報告できる場合(通常は Kitty キーボードプロトコルに依存)にのみ有効で、サポートしていない端末では無効な場合があります。
サポートされているキーは次のカテゴリに分類されます:
| カテゴリ | 値 | 例 |
|---|---|---|
| 英字 | a-z | ctrl+b、alt+d |
| 数字 | 0-9 | alt+1 |
| ファンクションキー | f1-f12 | f2 |
| 方向キー | up、down、left、right | alt+left |
| 特殊キー | escape、enter、tab、space、backspace、delete、home、end、pageUp、pageDown | shift+enter |
| 記号 | ` - = [ ] ; ' , . / など | ctrl+]、ctrl+- |
設定ファイルでは修飾キーは小文字で記述します(例:ctrl+shift+p)。本文の表では Shift+Ctrl+P と表記するのが慣例ですが、両者は同等です。
デフォルトショートカットキー早見表
以下の4つの表に、機能領域ごとの出荷時デフォルトのバインドを一覧表示します。カスタマイズ時の比較基準として使用できます。
この章ではよく使うバインドのみを掲載しています。ctrl+]、ctrl+alt+]、pageUp/pageDown、alt+y、ctrl+z、セッションセレクタのキーなどは含まれていません。完全なリストはインタラクティブモードで /hotkeys を実行して確認できます。
エディタ操作
このグループは編集エリアでのみ有効で、カーソル移動とテキスト削除を担当します。
| 操作 | デフォルトのショートカットキー | 説明 | 対象モード |
|---|---|---|---|
| カーソル上移動 | up | エディタでカーソルを上に移動します。すでに先頭にある場合は、より古い履歴を表示します。 | 編集エリア |
| カーソル下移動 | down | エディタでカーソルを下に移動します。すでに末尾にある場合は、より新しい履歴を表示します。 | 編集エリア |
| カーソル左移動 | left, ctrl+b | 1文字左に移動 | 編集エリア |
| カーソル右移動 | right, ctrl+f | 1文字右に移動 | 編集エリア |
| 単語単位で左移動 | alt+left, ctrl+left, alt+b | 1単語左に移動 | 編集エリア |
| 単語単位で右移動 | alt+right, ctrl+right, alt+f | 1単語右に移動 | 編集エリア |
| 行頭 | home, ctrl+home, ctrl+a | 行頭に移動 | 編集エリア |
| 行末 | end, ctrl+end, ctrl+e | 行末に移動 | 編集エリア |
| 前の1文字を削除 | backspace | カーソル前の文字を削除 | 編集エリア |
| 後の1文字を削除 | delete, ctrl+d | カーソル後の文字を削除(編集操作に属する) | 編集エリア |
| 前の単語を削除 | ctrl+w, alt+backspace | カーソル前の1単語を削除 | 編集エリア |
| 後の単語を削除 | alt+d, alt+delete | カーソル後の1単語を削除 | 編集エリア |
| 行頭まで削除 | ctrl+u | カーソルから行頭までの内容を削除 | 編集エリア |
| 行末まで削除 | ctrl+k | カーソルから行末までの内容を削除 | 編集エリア |
入力と送信
このグループは、コンテンツの改行、補完、送信の方法を制御します。編集エリアにも同様に作用します。
| 操作 | デフォルトのショートカットキー | 説明 | 対象モード |
|---|---|---|---|
| 改行 | shift+enter, ctrl+j | 改行文字を挿入 | 編集エリア |
| 送信 | enter | 入力内容を送信 | 編集エリア |
| Tab/自動補完 | tab | パスの自動補完をトリガー | 編集エリア |
| 元に戻す | ctrl+- | 直前の編集操作を元に戻す | 編集エリア |
| 削除したテキストを貼り付け | ctrl+y | 最近削除したテキストを貼り付け | 編集エリア |
アプリとメッセージ
このグループは、AI の中断、編集エリアの内容とメッセージキューの管理を担当します。多くは編集エリアのフォーカスに依存しません。
| 操作 | デフォルトのショートカットキー | 説明 | 対象モード |
|---|---|---|---|
| 中断/キャンセル | escape | 現在の AI 操作をキャンセル | グローバル |
| 編集エリアをクリア | ctrl+c | 編集エリアの内容をクリアし、もう一度押すとプログラムを終了 | 編集エリア |
| 終了 | ctrl+d | 編集エリアが空のときにプログラムを終了します(app.exit 操作に属し、上表の削除操作とは区別されます)。 | 編集エリア |
| 外部エディタ | ctrl+g | 現在の入力を外部エディタで編集 | 編集エリア |
| 画像を貼り付け | ctrl+v | クリップボードから画像を貼り付け(Windows: alt+v) | 編集エリア |
| AI の返信をコピー | ctrl+x | 最後の AI メッセージをコピー | 編集エリア |
| フォローアップメッセージを送信 | alt+enter | メッセージをフォローアップキューに入れる | 編集エリア |
| キューに入ったメッセージを取り出す | alt+up | キューに入ったメッセージをエディタに取り出す | 編集エリア |
モデルと推論
このグループはモデルの切り替えと推論動作の調整に使用され、会話中いつでも利用できます。
| 操作 | デフォルトのショートカットキー | 説明 | 対象モード |
|---|---|---|---|
| モデルセレクタ | ctrl+l | モデルセレクタを開く | グローバル |
| 次のモデルに切り替え | ctrl+p | 次のモデルに切り替える | グローバル |
| 前のモデルに切り替え | shift+ctrl+p | 前のモデルに切り替える | グローバル |
| 推論レベルを切り替え | shift+tab | 推論レベルを循環切り替え | 編集エリア |
| 推論表示を切り替え | ctrl+t | AI の推論プロセスを展開/折りたたみ | グローバル |
| ツール出力を切り替え | ctrl+o | ツール呼び出しの出力を展開/折りたたみ | グローバル(/tree ブラウザ内ではフィルターモードの切り替え) |
カスタムショートカットキー設定
keybindings.json で上書きしたい操作を列挙するだけで、列挙されていない操作はデフォルトのままです。
特定のバインドの値を空配列にすると、例えば"tui.altScreen.pageUp": []そのショートカットキーを完全に無効化できます。
Emacs スタイル
Emacs のショートカットキーに慣れている場合は、次の場所で~/.pi/agent/keybindings.json以下の設定を使用できます:
例
"tui.editor.historyPrevious": "ctrl+p",
"tui.editor.historyNext": "ctrl+n",
"tui.editor.cursorUp": ["up"],
"tui.editor.cursorDown": ["down"],
"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"]
}
historyPrevious と historyNext という2つの履歴操作はデフォルトではバインドされておらず、送信履歴をめくるために専用に用意されています。複数行入力でも履歴エントリを切り替えます。
ctrl+p を履歴の前の項目にバインドすると、編集エリアがフォーカスを取得したとき Ctrl+P はこの履歴バインドによって占有され、モデルへの前方切り替えはこのシナリオでは一時的に無効になります。
モデルセレクタなどの選択リスト内の Ctrl+P は影響を受けず、セレクタ自身の動作を実行します。
Vim スタイル
Vim の方向キーに慣れている場合は、以下の設定を使用できます:
例
"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"]
}
ここでは alt+h/j/k/l を選んでいます。これは Ctrl+H/Ctrl+D などの組み込みバインドを避けるためで、Alt 系を使用しています。
Pi Agent のショートカットキー設定はデフォルト値を上書きします。
各操作には1つ以上のショートカットキーをバインドできます。
設定ファイルに列挙されていない操作は、デフォルトのショートカットキーのままです。
すべてのショートカットキーを表示
インタラクティブモードで、次のコマンドを使用してすべてのショートカットキーと現在のバインドを表示します:
/hotkeys
出力例:
编辑器 tui.editor.cursorUp up tui.editor.cursorDown down tui.editor.cursorWordLeft alt+left, ctrl+left, alt+b tui.input.submit enter 模型与推理 app.model.select ctrl+l app.model.cycleForward ctrl+p app.model.cycleBackward shift+ctrl+p
ショートカットキー操作には名前空間付きの id を使用し、形式は「モジュール.アクション」です。
旧バージョンの設定ファイルにある名前空間のないID(cursorUp、expandToolsなど)は、起動時に自動的に名前空間付きIDへ移行されるため、手動で変更する必要はありません。
このコマンドは、利用可能なすべてのショートカットキー操作、現在のバインド、所属する機能領域を一覧表示します。ショートカットキーの競合を調査したり、特定機能のショートカットキーを探したりするのに最適な方法です。
全画面モードでのキー操作
用 --tui-mode fullscreen起動時、対話記録(トランスクリプト)はターミナルビューポート内でスクロールし、編集領域と下部のステータス領域は固定されたままです。
このとき、修飾キーなしのhome、end、pageUp、pageDownは対話記録のスクロールに使用され、それらのCtrl変種は引き続きエディタ用です。
通常モードでは、これらの2つのキーグループはどちらもエディタに作用します。
全画面モードには専用の検索とジャンプもあります。ctrl+shift+fで対話記録を検索し、ctrl+up、ctrl+downで前/次のマーク付きメッセージへジャンプします。
全画面スクロールのバインドはエディタのバインドより優先度が高くなりますが、通常のアクションバインドで調整可能です。
| キー操作 | 通常モード | 全画面モード |
|---|---|---|
| home、end | エディタ | 対話記録のスクロール |
| ctrl+home、ctrl+end | エディタ | エディタ |
| pageUp、pageDown | エディタ | 対話記録のスクロール |
| ctrl+pageUp、ctrl+pageDown | エディタ | エディタ |
| ctrl+shift+f(Windows/WSLではctrl+f) | 効果なし | 対話記録の検索 |
| ctrl+up、ctrl+down | 効果なし | 前/次のマーク付きメッセージへジャンプ |