Pi Agent キーボードショートカットのカスタマイズ

Pi Agent のショートカットキーは完全にカスタマイズ可能です。この章ではデフォルトのショートカットキー設定と、独自のショートカットキー構成を作成する方法を紹介します。


設定ファイル

ショートカットキー設定ファイルは次の場所にあります~/.pi/agent/keybindings.json。

変更後、次のコマンドを実行します/reload再起動せずに有効になります。


ショートカットキー形式

ショートカットキーの形式は次のとおりです修飾キー+キー修飾キーには ctrl、shift、alt、super があり、組み合わせて使用できます。

なお、super は端末がその修飾キーを単独で報告できる場合(通常は Kitty キーボードプロトコルに依存)にのみ有効で、サポートしていない端末では無効な場合があります。

サポートされているキーは次のカテゴリに分類されます:

カテゴリ値例
英字a-zctrl+b、alt+d
数字0-9alt+1
ファンクションキーf1-f12f2
方向キーup、down、left、rightalt+left
特殊キーescape、enter、tab、space、backspace、delete、home、end、pageUp、pageDownshift+enter
記号` - = [ ] ; ' , . / などctrl+]、ctrl+-

設定ファイルでは修飾キーは小文字で記述します(例:ctrl+shift+p)。本文の表では Shift+Ctrl+P と表記するのが慣例ですが、両者は同等です。


デフォルトショートカットキー早見表

以下の4つの表に、機能領域ごとの出荷時デフォルトのバインドを一覧表示します。カスタマイズ時の比較基準として使用できます。

この章ではよく使うバインドのみを掲載しています。ctrl+]、ctrl+alt+]、pageUp/pageDown、alt+y、ctrl+z、セッションセレクタのキーなどは含まれていません。完全なリストはインタラクティブモードで /hotkeys を実行して確認できます。

エディタ操作

このグループは編集エリアでのみ有効で、カーソル移動とテキスト削除を担当します。

操作デフォルトのショートカットキー説明対象モード
カーソル上移動upエディタでカーソルを上に移動します。すでに先頭にある場合は、より古い履歴を表示します。編集エリア
カーソル下移動downエディタでカーソルを下に移動します。すでに末尾にある場合は、より新しい履歴を表示します。編集エリア
カーソル左移動left, ctrl+b1文字左に移動編集エリア
カーソル右移動right, ctrl+f1文字右に移動編集エリア
単語単位で左移動alt+left, ctrl+left, alt+b1単語左に移動編集エリア
単語単位で右移動alt+right, ctrl+right, alt+f1単語右に移動編集エリア
行頭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+tAI の推論プロセスを展開/折りたたみグローバル
ツール出力を切り替え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効果なし前/次のマーク付きメッセージへジャンプ
その他の拡張機能