Pi の設定、拡張、プラットフォーム設定、API リファレンス。

キーバインド

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

設定ファイルは、pi が内部で使用するものと、拡張機能の作成者が keyHint() および挿入された keybindings マネージャーで使用するのと同じ名前空間キーバインド ID を使用します。

cursorUpexpandTools などの事前に名前空間が設定された ID を使用する古い構成は、起動時に自動的に名前空間が設定された ID に移行されます。

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

キーの形式

modifier+key ここで、修飾子は ctrlshiftaltsuper (組み合わせ可能)、キーは次のとおりです。

  • 文字: a-z
  • 数字: 0-9
  • 特殊キー: escape, esc, enter, return, tab, space, backspace, delete, insert, clear, home, end, pageUp, pageDown, up, down, left, right
  • ファンクションキー: f1-f12
  • 記号: `, -, =, [, ], \, ;, ', ,, ., /, !, @, #, $, %, ^, &, *, (, ), _, +, |, ~, {, }, :, <, >, ?

修飾子の組み合わせ: ctrl+shift+xalt+ctrl+xctrl+shift+alt+xsuper+kctrl+super+kctrl+1 など。

super バインディングには、通常は Kitty キーボード プロトコルを通じて、修飾子を個別に報告する端末が必要です。そのサポートのない端末では動作しない可能性があります。

すべてのアクション

TUI エディターのカーソル移動

キーバインドID デフォルト 説明
tui.editor.cursorUp up カーソルを上に移動し、上部で古い履歴を参照します
tui.editor.cursorDown down カーソルを下に移動し、下部で新しい履歴を参照します
tui.editor.historyPrevious (なし) 前のプロンプト履歴エントリを選択します
tui.editor.historyNext (なし) 次のプロンプト履歴エントリを選択します
tui.editor.cursorLeft left, ctrl+b カーソルを左に移動
tui.editor.cursorRight right, ctrl+f カーソルを右に移動
tui.editor.cursorWordLeft alt+left, ctrl+left, alt+b カーソルを単語を左に移動
tui.editor.cursorWordRight alt+right, ctrl+right, alt+f カーソルを単語を右に移動
tui.editor.cursorLineStart home, ctrl+home, ctrl+a 行頭へ移動
tui.editor.cursorLineEnd end, ctrl+end, ctrl+e 行末に移動
tui.editor.jumpForward ctrl+] 文字まで前にジャンプ
tui.editor.jumpBackward ctrl+alt+] キャラクターまで後方にジャンプ
tui.editor.pageUp pageUp, ctrl+pageUp ページごとに上にスクロール
tui.editor.pageDown pageDown, ctrl+pageDown ページごとに下にスクロールします

専用の履歴アクションは、複数行プロンプト内のカーソル位置に関係なく、常に履歴エントリを変更します。明示的な履歴バインディングは、メイン エディターがフォーカスされている間はアプリケーションのアクションよりも優先されるため、tui.editor.historyPreviousctrl+p にバインドすると、セレクターの Ctrl+P を変更せずに、そのコンテキストでのモデルの循環がオーバーライドされます。

TUI 編集者の削除

キーバインドID デフォルト 説明
tui.editor.deleteCharBackward backspace 文字を後方に削除
tui.editor.deleteCharForward delete, ctrl+d 文字を前方に削除
tui.editor.deleteWordBackward ctrl+w, alt+backspace 単語を後方に削除
tui.editor.deleteWordForward alt+d, alt+delete 単語送りを削除
tui.editor.deleteToLineStart ctrl+u 行頭まで削除
tui.editor.deleteToLineEnd ctrl+k 行末まで削除

TUI 入力

キーバインドID デフォルト 説明
tui.input.newLine shift+enter, ctrl+j 新しい行を挿入
tui.input.submit enter 入力内容を送信する
tui.input.tab tab タブ/オートコンプリート

TUI キルリング

キーバインドID デフォルト 説明
tui.editor.yank ctrl+y 最近削除したテキストを貼り付けます
tui.editor.yankPop alt+y ヤンク後に削除されたテキストを循環する
tui.editor.undo ctrl+- 最後の編集を元に戻す

TUI クリップボードと選択範囲

キーバインドID デフォルト 説明
tui.input.copy ctrl+c 選択範囲をコピー
tui.select.up up 選択範囲を上に移動
tui.select.down down 選択範囲を下に移動します
tui.select.pageUp pageUp リストの 1 ページ上へ
tui.select.pageDown pageDown リストの次のページへ
tui.select.confirm enter 選択を確認する
tui.select.cancel escape, ctrl+c 選択をキャンセルする

TUI 全画面ビューポート

これらのアクションは、インタラクティブ モードで --tui-mode fullscreen を使用し、プライマリ トランスクリプト スクロール領域をターゲットとする場合に適用されます。 2 本指のトラックパッドとマウス ホイール入力により、ポインターの下の領域がスクロールされ、固定エディター/ステータス/フッター ドック上のトランスクリプトに戻ります。 OSC 8 ハイパーリンクをクリックすると、デフォルトのハンドラーで開きます。マウスの主ボタンでドラッグするとテキストが選択され、クリップボードにコピーされます。トランスクリプトの上端または下端を押し続けると、画面外のコンテンツが自動スクロールされます。

フルスクリーンのトランスクリプト バインディングは、エディター バインディングよりも優先されます。したがって、変更されていないデフォルトのナビゲーション キーは全画面モードでトランスクリプトを制御しますが、その ctrl バリアントは引き続きエディターを制御します。フルスクリーン モード以外では、両方のバリアントがエディタを制御します。

デフォルトモード 全画面モード
home, end エディタ 成績証明書
ctrl+home, ctrl+end エディタ エディタ
pageUp, pageDown エディタ 成績証明書
ctrl+pageUp, ctrl+pageDown エディタ エディタ

このルーティングは、通常のアクション バインディングを通じて引き続き構成可能です。たとえば、"tui.altScreen.pageUp": "ctrl+pageUp" を指定すると、全画面モードで pageUp がエディタを制御し、ctrl+pageUp がトランスクリプトを制御します。ページ全体のバインドを維持しながら、トランスクリプトのステップを小さくするには、tui.altScreen.halfPageUptui.altScreen.halfPageDown をバインドします。 "tui.altScreen.pageUp": [] を設定すると、トランスクリプトのショートカットが完全に無効になります。ユーザー バインディングは、そのアクションのデフォルトを置き換えます。

キーバインドID デフォルト 説明
tui.altScreen.pageUp pageUp トランスクリプトを 1 ページ上にスクロールします
tui.altScreen.pageDown pageDown トランスクリプトを 1 ページ下にスクロールします
tui.altScreen.halfPageUp (なし) トランスクリプトを半ページ上にスクロールします
tui.altScreen.halfPageDown (なし) トランスクリプトを半ページ下にスクロールします
tui.altScreen.previousPrompt ctrl+shift+up 前のマークされたメッセージにジャンプします
tui.altScreen.nextPrompt ctrl+shift+down 次のマークされたメッセージにジャンプします
tui.altScreen.top home トランスクリプトの先頭までスクロールします
tui.altScreen.bottom end トランスクリプトの最後までスクロールして、新しい出力に従います

応用

キーバインドID デフォルト 説明
app.interrupt escape キャンセル/中止
app.clear ctrl+c エディターをクリア (1 回目) / 終了 (2 回目)
app.exit ctrl+d 終了 (エディターが空の場合)
app.suspend ctrl+z (Windows ではなし) バックグラウンドで一時停止
app.editor.external ctrl+g 外部エディタで開きます (externalEditor$VISUAL$EDITOR、Windows のメモ帳、またはその他の場所の nano)
app.clipboard.pasteImage ctrl+v (Windows では alt+v) クリップボードから画像またはテキストを貼り付けます

セッション

キーバインドID デフォルト 説明
app.session.new (なし) 新しいセッションを開始します (/new)
app.session.tree (なし) session tree ナビゲーター (/tree) を開く
app.session.fork (なし) 現在のセッションをフォークします (/fork)
app.session.resume (なし) セッション再開ピッカーを開く (/resume)
app.session.togglePath ctrl+p パス表示の切り替え
app.session.toggleSort ctrl+s 並べ替えモードの切り替え
app.session.toggleNamedFilter ctrl+n 名前付きのみのフィルターを切り替えます
app.session.rename ctrl+r セッション名の変更
app.session.delete ctrl+d セッションの削除
app.session.deleteNoninvasive ctrl+backspace クエリが空の場合はセッションを削除する

Modelsと思考

キーバインドID デフォルト 説明
app.model.select ctrl+l モデルセレクターを開く
app.model.cycleForward ctrl+p 次のモデルへのサイクル
app.model.cycleBackward shift+ctrl+p 以前のモデルへのサイクル
app.thinking.cycle shift+tab サイクル思考レベル
app.thinking.toggle ctrl+t 思考ブロックを折りたたんだり拡張したりする

ディスプレイとメッセージキュー

キーバインドID デフォルト 説明
app.tools.expand ctrl+o ツール出力を折りたたむまたは展開する
app.message.copy ctrl+x 最後のアシスタント メッセージ、または /tree で選択したメッセージをコピーします
app.message.followUp alt+enter フォローアップメッセージをキューに入れる
app.message.dequeue alt+up キューに入れられたメッセージをエディタに復元する

ツリーナビゲーション

キーバインドID デフォルト 説明
app.tree.foldOrUp ctrl+left, alt+left 現在の分岐セグメントを折りたたむか、前のセグメントの開始位置にジャンプします
app.tree.unfoldOrDown ctrl+right, alt+right 現在の分岐セグメントを展開するか、次のセグメントの開始点または分岐の終了点にジャンプします
app.tree.editLabel shift+l 選択したツリー ノードのラベルを編集します
app.tree.toggleLabelTimestamp shift+t ツリー内のラベルのタイムスタンプを切り替えます
app.tree.filter.default ctrl+d ツリーフィルターをデフォルトビューに設定する
app.tree.filter.noTools ctrl+t ツールの結果を非表示にするツリー フィルターを切り替えます
app.tree.filter.userOnly ctrl+u ユーザーメッセージのみを表示するツリーフィルターを切り替えます
app.tree.filter.labeledOnly ctrl+l ラベル付きエントリのみを表示するツリー フィルターを切り替えます
app.tree.filter.all ctrl+a すべてのエントリを表示するツリー フィルターを切り替えます
app.tree.filter.cycleForward ctrl+o サイクルツリーフィルターを前方に移動
app.tree.filter.cycleBackward shift+ctrl+o サイクルツリーフィルターを逆方向に移動

スコープ付き Models セレクター

スコープ付きモデル セレクター内で使用されます (/scoped-models 経由で開きます)。

キーバインドID デフォルト 説明
app.models.save ctrl+s 現在のモデル選択を設定に保存する
app.models.enableAll ctrl+a すべてのモデル (または現在の検索に一致するすべて) を有効にする
app.models.clearAll ctrl+x すべてのモデルをクリアします(または現在の検索に一致するすべてのモデルをクリアします)
app.models.toggleProvider ctrl+p 現在のプロバイダーのすべてのモデルを切り替えます
app.models.reorderUp alt+up 選択したモデルをサイクル順序で上に移動します
app.models.reorderDown alt+down 選択したモデルをサイクル順序で下に移動します

カスタム構成

~/.pi/agent/keybindings.json を作成します:

{
  "tui.editor.historyPrevious": "ctrl+p",
  "tui.editor.historyNext": "ctrl+n",
  "tui.editor.deleteWordBackward": ["ctrl+w", "alt+backspace"]
}

各アクションには、単一のキーまたはキーの配列を含めることができます。ユーザー設定はデフォルトをオーバーライドします。

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

Emacs の例

{
  "tui.editor.historyPrevious": "ctrl+p",
  "tui.editor.historyNext": "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 の例

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