キーボードショートカットのカスタマイズ
キーボードショートカットをカスタマイズして、Claude Code でキーバインディング設定ファイルを使用します。
Claude Code はカスタマイズ可能なキーボードショートカットをサポートしています。/keybindings を実行して、~/.claude/keybindings.json に設定ファイルを作成または開きます。
設定ファイル
キーボードショートカットの設定ファイルは、bindings 配列を持つオブジェクトです。各ブロックでは、コンテキストと、キー入力からアクションへのマッピングを指定します。
[!NOTE]
キーボードショートカットファイルへの変更は自動的に検出され、Claude Code を再起動しなくても適用されます。
| フィールド | 説明 |
|---|---|
$schema |
エディターでの自動補完用のオプションの JSON Schema URL |
$docs |
オプションのドキュメント URL |
bindings |
コンテキストごとのバインディングブロックの配列 |
この例では、チャットコンテキストで Ctrl+E に外部エディターを開く操作を割り当て、Ctrl+S の割り当てを解除しています。
{
"$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"$docs": "https://code.claude.com/docs/en/keybindings",
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+e": "chat:externalEditor",
"ctrl+s": null
}
}
]
}
コンテキスト
各バインディングブロックは、バインディングが適用されるコンテキストを指定します。
| コンテキスト | 説明 |
|---|---|
Global |
アプリ全体に適用 |
Chat |
メインチャット入力エリア |
Autocomplete |
オートコンプリートメニューが開いている |
Settings |
設定メニュー |
Confirmation |
権限と確認ダイアログ |
Tabs |
タブナビゲーションコンポーネント |
Help |
ヘルプメニューが表示されている |
Transcript |
トランスクリプトビューア |
HistorySearch |
履歴検索モード(Ctrl+R) |
Task |
フォアグラウンドで実行中のタスク |
ThemePicker |
テーマピッカーダイアログ |
Attachments |
選択ダイアログ内の画像添付ファイルナビゲーション |
Footer |
フッターインジケータナビゲーション(タスク、チーム、diff、Artifacts) |
MessageSelector |
巻き戻しと要約ダイアログのメッセージ選択 |
DiffDialog |
差分ビューアのナビゲーション |
DiffPanel |
diff パネルが開いている |
ModelPicker |
モデルピッカー努力レベル |
EffortSlider |
/effort で開かれた努力スライダー |
Select |
汎用選択/リストコンポーネント |
Plugin |
プラグインダイアログ(参照、発見、管理) |
AbovePrompt |
プロンプトの上の帯、またはその中のボタンにキーボードフォーカスがある |
AbovePromptInput |
プロンプトの上の帯または mod のペイン内の入力フィールドにキーボードフォーカスがある |
AbovePromptSelect |
プロンプトの上の帯または mod のペイン内の選択にキーボードフォーカスがある |
Pane |
mod が描画したペインにキーボードフォーカスがある |
PaneField |
mod のペイン内の入力フィールドまたは選択にキーボードフォーカスがある |
Agents |
エージェントビュー(claude agents) |
Scroll |
会話スクロールとフルスクリーンモードでのテキスト選択 |
v2.1.205 より前では、Doctor コンテキストと /doctor 診断スクリーン用の doctor:fix アクションが存在していました。
利用可能なアクション
アクションは namespace:action 形式に従います。たとえば、メッセージを送信する chat:submit や、タスクリストを表示する app:toggleTodos などです。各コンテキストには、それぞれ利用可能なアクションがあります。
アプリアクション
Global コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
app:interrupt |
Ctrl+C | 現在の操作をキャンセルします |
app:exit |
Ctrl+D | Claude Code を終了します。確認のため 800ms 以内に 2 回押します |
app:redraw |
(未割り当て) | ターミナルを強制的に再描画します |
app:toggleTodos |
Ctrl+T | Claude の To-Do チェックリストの表示を切り替えます。これは /tasks のバックグラウンドタスクビューではありません |
app:toggleTranscript |
Ctrl+O | 詳細なトランスクリプトの表示を切り替えます |
履歴アクション
コマンド履歴を移動するためのアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
history:search |
Ctrl+R | 履歴検索を開きます |
history:previous |
Up | 前の履歴項目 |
history:next |
Down | 次の履歴項目 |
チャットアクション
Chat コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
chat:cancel |
Escape | 現在の入力をキャンセルします |
chat:clearInput |
Ctrl+L | 入力と会話を保持したまま、画面全体を強制的に再描画します |
chat:clearScreen |
Cmd+K | chat:clearInput と同じです。iTerm2 と Terminal.app での Cmd+K の動作については、会話をクリアするを参照してください |
chat:killAgents |
Ctrl+X Ctrl+K | このセッションで実行中のすべてのバックグラウンドサブエージェントを停止し、セッションの残りの間はアーティファクトの自動返信をオフにします。確認のため、3 秒以内にショートカットを 2 回押します。バックグラウンドサブエージェントの権限プロンプトが開いている間も押すことができます |
chat:cycleMode |
Shift+Tab* | 権限モードを順に切り替えます |
chat:modelPicker |
Meta+P | モデルピッカーを開きます |
chat:fastMode |
Meta+O | fast mode を切り替えます |
chat:thinkingToggle |
Meta+T | 拡張思考を切り替えます |
chat:submit |
Enter | メッセージを送信します |
chat:queueSubmit |
Ctrl+X Enter | メッセージを、順番を待つよう印を付けて送信します。Claude が作業中の場合、Claude Code はそのメッセージをキューに入れ、ターンを中断することはありません。chat:submit とは異なり、オートコンプリートの候補がハイライトされている間もドラフトを送信します。v2.1.247 以降が必要です |
chat:sendNow |
Ctrl+Enter, Ctrl+X Ctrl+S | キューに入れたメッセージを、ドラフトと一緒にすぐに送信します。Claude が作業中のターンがどうなるかについては、Claude Code がキューに入れた内容を送信するタイミングで説明しています。何も実行されていない場合、このキーはドラフトを送信します。シェルモードでは、コマンドをキューに入れるだけです。拡張キーを報告しないターミナルでは Ctrl+Enter が通常の Enter として送られるため、どのターミナルでも機能するバインディングは Ctrl+X Ctrl+S です。v2.1.275 以降が必要です |
chat:newline |
Ctrl+J | 送信せずに改行を挿入します |
chat:undo |
Ctrl+_, Ctrl+Shift+- | 最後の操作を元に戻します |
chat:externalEditor |
Ctrl+G, Ctrl+X Ctrl+E | 外部エディタで開きます。エージェントビューのディスパッチ入力も、このアクションの単一キーストロークのバインディングに従います |
chat:stash |
Ctrl+S | 現在のプロンプトを一時退避(stash)します |
chat:imagePaste |
Ctrl+V(Windows と WSL では Alt+V) | クリップボードから画像を貼り付けます。WSL では、両方のショートカットがデフォルトでバインドされています |
command:<name> |
(未割り当て) | コマンド /<name> を実行します。たとえば、Chat ブロックに "meta+g": "command:compact" を記述すると、Meta+G で /compact が実行されます |
*VT モードのない Windows(Node <24.2.0/<22.17.0、Bun <1.2.23)では、デフォルトは Meta+M です。
オートコンプリートアクション
Autocomplete コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
autocomplete:accept |
Tab | 候補を確定します |
autocomplete:dismiss |
Escape | メニューを閉じます |
autocomplete:previous |
Up | 前の候補 |
autocomplete:next |
Down | 次の候補 |
確認アクション
Confirmation コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
confirm:yes |
Enter | 操作を確定します |
confirm:no |
Escape | 操作を拒否します |
confirm:previous |
Up | 前のオプション |
confirm:next |
Down | 次のオプション |
confirm:nextField |
Tab | /fast ダイアログで、fast mode をオンまたはオフにします |
confirm:previousField |
(未割り当て) | Claude Code はこのアクションに反応しません。このアクションを指定した keybindings.json も引き続き有効です |
confirm:toggle |
Space | 選択を切り替えます |
confirm:cycleMode |
Shift+Tab* | ファイルの権限プロンプトで、開いているコメントフィールドを閉じます。フィールドが開いていない場合は、プロンプトにそのオプションがあれば、セッションの残りの間その操作を許可するオプションを選択します |
*VT モードのない Windows(Node <24.2.0/<22.17.0、Bun <1.2.23)では、デフォルトは Meta+M です。
v2.1.257 より前は、デフォルトで Ctrl+E にバインドされた confirm:toggleExplanation アクションがあり、Bash と PowerShell の権限プロンプトで、モデルが生成したコマンドの説明を表示していました。
ダイアログは、はい/いいえを尋ねるものでない場合でも、確定とキャンセルに confirm:yes と confirm:no を使用します。このコンテキストで y や n のような単一の文字をバインドすると、その文字は、キーとして表示していないダイアログでも機能します。y と n をキーとして表示するダイアログは、それらの文字を自身で読み取るため、バインディングは不要です。
ほとんどのダイアログでは、Ctrl+C または Ctrl+D を 2 回押すと、Claude Code を終了するのではなくダイアログが閉じます。1 回目に押した後に表示されるヒントで、2 回目に押したときにダイアログが閉じるのか終了するのかがわかります。どちらのキーも予約済みであり、再バインドできません。
次の例では、y を confirm:yes に、n を confirm:no にバインドしています:
{
"bindings": [
{
"context": "Confirmation",
"bindings": {
"y": "confirm:yes",
"n": "confirm:no"
}
}
]
}
これらのバインディングを設定しても、テキストフィールドにフォーカスがある間は、y と n は引き続き文字として入力されます。
v2.1.280 より前は、デフォルトで y も confirm:yes に、n も confirm:no にバインドされていました。v2.1.280 より前に /keybindings で keybindings.json を作成した場合、ファイルには両方のバインディングが記載されており、それらの 2 行を削除するまで有効なままです。
権限アクション
権限ダイアログ用に Confirmation コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
permission:toggleDebug |
(未割り当て) | Claude Code はこのアクションに反応しません。このアクションを指定した keybindings.json も引き続き有効です |
トランスクリプトアクション
Transcript コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
transcript:toggleShowAll |
Ctrl+E | すべてのコンテンツの表示を切り替えます |
transcript:exit |
q, Ctrl+C, Escape | トランスクリプトビューを終了します |
transcript:toggleShowAll はクラシックレンダラーでのみ適用されます。フルスクリーンレンダリングでは、トランスクリプトビューアにすべて表示の切り替えはありません。
履歴検索アクション
HistorySearch コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
historySearch:next |
Ctrl+R | 次の一致 |
historySearch:accept |
Escape, Tab | 選択を確定します |
historySearch:cancel |
Ctrl+C | 検索をキャンセルします |
historySearch:execute |
Enter | 選択したコマンドを実行します |
historySearch:cycleScope |
Ctrl+S | スコープを順に切り替えます:セッション、プロジェクト、すべて |
historySearch:next、historySearch:accept、historySearch:cancel、historySearch:execute のデフォルトは、クラシックレンダラーのインライン履歴検索に適用されます。この検索は常にすべてのプロジェクトのプロンプトを対象とします。historySearch:cycleScope はフルスクリーンレンダリングでのみ有効です。フルスクリーンレンダリングでは、Ctrl+R で代わりに検索ダイアログが開き、Ctrl+S でそのスコープを順に切り替えます。ダイアログのその他のキーは固定されており、再バインドできません:Enter または Tab でハイライトされた一致をプロンプト入力に配置し、Esc でキャンセルします。
タスクアクション
Task コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
task:background |
Ctrl+B, Ctrl+X Ctrl+B | 現在のタスクをバックグラウンドに移します |
テーマアクション
ThemePicker コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
theme:toggleSyntaxHighlighting |
Ctrl+T | シンタックスハイライトを切り替えます |
ヘルプアクション
Help コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
help:dismiss |
Escape | ヘルプメニューを閉じます |
タブアクション
Tabs コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
tabs:next |
Tab, Right | 次のタブ |
tabs:previous |
Shift+Tab, Left | 前のタブ |
タブ付きダイアログでは、タブの行にフォーカスがある間、tabs:next と tabs:previous でタブを切り替えます。/help や /sandbox などの一部のダイアログでは、タブの切り替えキーはタブのコンテンツ内からも機能します。
Up と Down でタブの行とタブのコンテンツの間でフォーカスを移動します。コンテンツ内のリストは、フォーカスがある間のみキーに反応します。
添付ファイルアクション
Attachments コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
attachments:next |
Right | 次の添付ファイル |
attachments:previous |
Left | 前の添付ファイル |
attachments:remove |
Backspace, Delete | 選択した添付ファイルを削除します |
attachments:exit |
Down, Escape | 添付ファイルのナビゲーションを終了します |
フッターアクション
Footer コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
footer:next |
Right | 次のフッター項目 |
footer:previous |
Left | 前のフッター項目 |
footer:up |
Up, Ctrl+P | フッター内で上に移動します(一番上では選択を解除します) |
footer:down |
Down, Ctrl+N | フッター内で下に移動します |
footer:openSelected |
Enter | 選択したフッター項目を開きます |
footer:clearSelection |
Escape | フッターの選択を解除します |
footer:close |
x | 選択したエージェントまたはワークフローを停止します。すでに実行されていない場合は、その行を閉じます |
footer:dismiss |
(未割り当て) | このアクションにキーをバインドしても効果はありません。このアクションを指定した keybindings.json も引き続き有効です。v2.1.281 より前は、Backspace と Delete がこのアクションにバインドされており、選択したアーティファクトリンクをフッターから閉じていました。 |
プロンプトの下にあるエージェントパネルの行など、フッター項目が選択されている間は、Chat コンテキストで Enter を chat:queueSubmit や chat:newline に再バインドしていても、Enter でその項目が開きます。
chat:cycleMode の Shift+Tab のように、Footer コンテキストがバインドしていないキーに対する Chat のバインディングは、項目が選択されている間も引き続き機能します。
メッセージセレクターアクション
巻き戻しメニューのメッセージリストでは、Select アクションとそのデフォルトキーを使用して、メッセージ間を移動し、1 つを選択します。これらのアクションに対する Select のバインディングもここに適用されます。MessageSelector コンテキストには、独自のアクションやデフォルトのバインディングはありません。このリストに限ってキーを変更するには、MessageSelector ブロックで select:accept などの Select アクションをバインドします。
次の例では、他のリストを変更せずに、巻き戻しメニューでハイライトされたメッセージを選択するキーとして o をバインドしています:
{
"bindings": [
{
"context": "MessageSelector",
"bindings": {
"o": "select:accept"
}
}
]
}
v2.1.283 より前は、このリストは Select のバインディングを無視し、独自のアクションとして messageSelector:up、messageSelector:down、messageSelector:top、messageSelector:bottom、messageSelector:select を持っていました。keybindings.json でこれらの名前のいずれかをバインドしている場合、そのバインディングはこのリストで、同じ動作をする Select アクションとして引き続き機能します。Home と End でリストの両端にジャンプします。v2.1.283 より前は、デフォルトで Shift+K や Shift+J などのキーがこれを行っていました。
差分アクション
これらのアクションは、Claude Code の以前の差分ビューアにのみ作用します。このビューアは、/plugin で cc-plugin-diff mod を無効にした後、フルスクリーンレンダリング以外で /diff を実行すると開きます。この mod が有効な間は、/diff で代わりに差分ダイアログが開きます。
DiffDialog コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
diff:dismiss |
Escape | 差分ビューアを閉じます。ただし詳細ビューからは、ビューアを閉じる代わりにファイル一覧に戻ります |
diff:previousSource |
Left | 前の差分ソース |
diff:nextSource |
Right | 次の差分ソース |
diff:previousFile |
Up, K | ファイル一覧では前のファイル、詳細ビューでは 1 行上にスクロールします |
diff:nextFile |
Down, J | ファイル一覧では次のファイル、詳細ビューでは 1 行下にスクロールします |
diff:back |
(未割り当て) | 差分ビューアで戻ります。Escape は diff:dismiss を介して戻る操作を実行します。詳細ビューでの以前のデフォルトである Left は v2.1.203 で削除されました |
ファイル一覧は、Select アクションにも、そのデフォルトキーと Select のバインディングを通じて反応します。select:previous と select:next で前後のファイルに移動し、Enter で select:accept を通じて選択したファイルの差分を開きます。ファイル一覧に限ってこれらのキーのいずれかを変更するには、DiffDialog ブロックで Select アクションをバインドします。
v2.1.283 より前は、ファイル一覧は Select のバインディングを無視し、Enter は別の diff:viewDetails アクションを通じて選択したファイルの差分を開いていました。keybindings.json で diff:viewDetails をバインドしている場合、そのバインディングはファイル一覧で select:accept として引き続き機能します。
差分の詳細ビューでは、ページャー形式のキーも標準のスクロールアクションにバインドされています。これらのバインディングは DiffDialog コンテキストの一部であり、詳細ビューでのみ適用されます。スクロールアクションに記載されている Scroll コンテキストのデフォルトは変わりません。
| アクション | デフォルト | 説明 |
|---|---|---|
scroll:pageUp |
PageUp | ビューポートの半分だけ上にスクロールします |
scroll:pageDown |
PageDown | ビューポートの半分だけ下にスクロールします |
scroll:fullPageUp |
Shift+Space, B | ビューポート 1 つ分上にスクロールします |
scroll:fullPageDown |
Space | ビューポート 1 つ分下にスクロールします |
scroll:top |
G, Home | 先頭にジャンプします |
scroll:bottom |
Shift+G, End | 末尾にジャンプします |
差分パネルアクション
フルスクリーンレンダリングで /diff が開く差分パネル用のアクションです。app:cycleDiffBase は、パネルが開いている間アクティブになる DiffPanel コンテキストにあり、その他は Global です。
組み込みの cc-plugin-diff mod がこのパネルを描画し、app:cycleDiffBase、app:diffFileListUp、app:diffFileListDown を処理します。app:toggleReplTab、app:toggleDiffNoiseFilter、app:toggleDiffPreSession は、Claude Code の以前のパネルにのみ作用します。このパネルは、/plugin で cc-plugin-diff を無効にした後に /diff を実行すると開きます。
| アクション | デフォルト | 説明 |
|---|---|---|
app:toggleReplTab |
(未割り当て) | 差分パネルを開閉します |
app:cycleDiffBase |
Ctrl+X B | パネルの比較基準を順に切り替えます:このセッション、未コミット、ブランチの順 |
app:diffFileListUp |
Ctrl+Up, Meta+Up | パネルのファイル一覧があふれている場合に上にスクロールします |
app:diffFileListDown |
Ctrl+Down, Meta+Down | パネルのファイル一覧があふれている場合に下にスクロールします |
app:toggleDiffNoiseFilter |
(未割り当て) | パネル内のテストファイルと生成ファイルを表示または非表示にします |
app:toggleDiffPreSession |
(未割り当て) | このセッションより前の変更を展開または折りたたみます |
モデルピッカーアクション
ModelPicker コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
modelPicker:decreaseEffort |
Left | effort レベルを下げます |
modelPicker:increaseEffort |
Right | effort レベルを上げます |
modelPicker:thisSessionOnly |
s | ハイライトされたモデルをこのセッションのみに適用します |
effort スライダーアクション
EffortSlider コンテキストで利用可能なアクションです。これは、引数なしで /effort を実行したときに開くスライダーです。スライダーの Enter キーと Escape キーは再バインドできません。
| アクション | デフォルト | 説明 |
|---|---|---|
effortSlider:decreaseEffort |
Left | スライダーを 1 つ下の effort レベルに移動します。v2.1.284 以降が必要です |
effortSlider:increaseEffort |
Right | スライダーを 1 つ上の effort レベルに移動します。v2.1.284 以降が必要です |
effortSlider:toggleUltracode |
Tab | スライダーが ultracode を提供している場合に、このセッションの ultracode をオンまたはオフにします。v2.1.284 以降が必要です |
effortSlider:thisSessionOnly |
s | フォーカスされている effort レベルをこのセッションのみに適用します。v2.1.257 以降が必要です |
Select アクション
Select コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
select:next |
Down, J, Ctrl+N | 次のオプション |
select:previous |
Up, K, Ctrl+P | 前のオプション |
select:pageUp |
PageUp | オプションを 1 ページ分上に移動します |
select:pageDown |
PageDown | オプションを 1 ページ分下に移動します |
select:first |
Home | 最初のオプション |
select:last |
End | 最後のオプション |
select:accept |
Enter | 選択を確定します |
select:cancel |
Escape | 選択をキャンセルします |
/skills、/mcp、/tasks などのリストパネルでは、Claude Code は select:pageUp、select:pageDown、select:first、select:last のバインディングを適用します。/model ピッカーなど、その他のほとんどのリストでは、select:first と select:last のバインディングが適用されます。これらのリストでは、バインディングに関係なく PageUp と PageDown でオプションをページ送りします。
v2.1.280 より前は、これらのその他のリストは Home、End、および select:first と select:last のバインディングを無視していました。
v2.1.283 より前は、/mcp のツールリストは、バインディングに関係なく固定の PageUp キーと PageDown キーでページ送りしていました。
プラグインアクション
Plugin コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
plugin:toggle |
Space | プラグインの選択を切り替えます |
plugin:install |
I | 選択したプラグインをインストールします |
plugin:favorite |
F | 選択したプラグインをお気に入りに登録し、Installed タブの上部近くに並ぶようにします |
プロンプト上部アクション
プロンプトの上にあるバンド用のアクションです。このバンドは、mod がボタン、入力フィールド、セレクトを描画する共有の帯です。abovePrompt:toggle と abovePrompt:focus は Chat コンテキストで適用されます。その他のアクションは、バンドまたはペイン内でキーボードフォーカスを持っているもののコンテキストで適用されます。
| アクション | デフォルト | 説明 |
|---|---|---|
abovePrompt:toggle |
Ctrl+X Ctrl+A | バンドを 1 行のヒントに折りたたむか、再び展開します |
abovePrompt:focus |
Ctrl+X Tab | キーボードフォーカスをバンドに移動し、次に開いている各ペインに移動し、最後のペインからプロンプトに戻します |
abovePrompt:next |
Tab | 次のコントロールにフォーカスします |
abovePrompt:previous |
Shift+Tab | 前のコントロールにフォーカスします |
abovePrompt:press |
Enter | フォーカスされたボタンを押すか、フォーカスされた入力フィールドを送信するか、セレクトでハイライトされたオプションを選択します |
abovePrompt:leave |
Escape | キーボードフォーカスをプロンプトに戻します |
abovePrompt:highlightNext |
Down | フォーカスされたセレクトで次のオプションをハイライトします |
abovePrompt:highlightPrevious |
Up | フォーカスされたセレクトで前のオプションをハイライトします |
AbovePrompt コンテキストでは、デフォルトで Right と Left も abovePrompt:next と abovePrompt:previous を実行し、Space も abovePrompt:press を実行します。
AbovePrompt コンテキストは、Up、Down、PageUp、PageDown、Home、End も ペインのスクロールアクション pane:scrollUp から pane:bottom にバインドしています。そのため、バンドでこれらのキーのいずれかを変更するには、AbovePrompt ブロックでスクロールアクションをバインドします。
ペインアクション
mod が描画するペイン用のアクションです。スクロール、サイズ変更、閉じるアクションは Pane コンテキストで適用されます。pane:close は PaneField コンテキストでも適用されるため、ペインのフィールドのいずれかにフォーカスがある間も機能します。pane:next と pane:previous は、複数のペインが開いている間、Global コンテキストで適用されます。
| アクション | デフォルト | 説明 |
|---|---|---|
pane:scrollUp |
Up | 表示できる以上の行がある場合に、ペインを上にスクロールします |
pane:scrollDown |
Down | 表示できる以上の行がある場合に、ペインを下にスクロールします |
pane:pageUp |
PageUp | ペインを 1 ページ上にスクロールします |
pane:pageDown |
PageDown | ペインを 1 ページ下にスクロールします |
pane:top |
Home | ペインの先頭にジャンプします |
pane:bottom |
End | ペインの末尾にジャンプします |
pane:grow |
Ctrl+X Left, Ctrl+X Up | ペインの領域を広げます:トランスクリプトの横にある場合は幅を、プロンプトの上にある場合は高さを広げます |
pane:shrink |
Ctrl+X Right, Ctrl+X Down | ペインの領域を狭めます:トランスクリプトの横にある場合は幅を、プロンプトの上にある場合は高さを狭めます |
pane:close |
Ctrl+X X | ペインを閉じます |
pane:next |
(未割り当て) | 次に開いているペインを表示します |
pane:previous |
(未割り当て) | 前に開いているペインを表示します |
Pane コンテキストは、Tab、Shift+Tab、Enter、Escape も、バンドと同じプロンプト上部アクションにバインドしています。また、ペインの入力フィールドとセレクトは AbovePromptInput と AbovePromptSelect コンテキストを使用します。ペイン内で各キーが何をするかについては、キーボードフォーカスとホットキーに記載されています。
設定アクション
Settings コンテキストで利用可能なアクションです。select:accept と confirm:no のアクションは、Select と Confirmation のコンテキストから再利用されていますが、Settings 固有の動作をします:変更は各設定項目を変更した時点ですぐに適用されるため、Escape は拒否するのではなく、変更を保存した状態でパネルを閉じます。
| アクション | デフォルト | 説明 |
|---|---|---|
settings:search |
/ | 検索モードに入ります |
settings:retry |
R | エラー時に使用状況データの読み込みを再試行します |
settings:fixUsage |
F | /usage のフッターに修正が表示されている場合に、Claude Code が適用できる /usage の推奨事項をセッションに送信します。v2.1.305 以降が必要です |
select:accept |
Enter, Space | 選択した設定項目を変更するか、そのサブメニューを開きます |
confirm:no |
Escape | パネルを閉じます。変更はすでに保存されています |
エージェントアクション
Agents コンテキストで利用可能なアクションです。このコンテキストは、claude agents で開くエージェントビューで適用されます。v2.1.257 以降が必要です。
| アクション | デフォルト | 説明 |
|---|---|---|
agents:switchView |
Ctrl+S | セッションのグループ化を状態とディレクトリの間で切り替えます |
agents:togglePin |
Ctrl+T | 選択したセッションをピン留めまたはピン留め解除します |
agents:find |
Ctrl+F | n: フィルターを使用して、名前でセッションを検索します。v2.1.288 以降が必要です |
agents:rename |
Ctrl+R | 選択したセッションの名前を変更します。v2.1.288 以降が必要です |
agents:previousGroup |
Ctrl+Up, Meta+Up | 前のグループヘッダーにジャンプします。v2.1.288 以降が必要です |
agents:nextGroup |
Ctrl+Down, Meta+Down | 次のグループヘッダーにジャンプします。v2.1.288 以降が必要です |
エージェントビューが開いている間、Claude Code は Agents コンテキストがバインドしているキーに対して Agents のバインディングを使用し、同じキーに対する Chat や Global のバインディングを無視します。たとえば、エージェントビューで Ctrl+S を押すと、デフォルトの chat:stash がトリガーされるのではなく、セッションのグループ化が切り替わります。
ディスパッチ入力の外部エディタショートカットは Agents アクションではありません。エージェントビューは、Chat コンテキストの chat:externalEditor バインディング(デフォルトは Ctrl+G)に従います。
エージェントビューではバインディングは単一のキーストロークで発火するため、chat:externalEditor にバインドされた Ctrl+X Ctrl+E のコードでは、そこでエディタは開きません。
音声アクション
音声入力が有効な場合に Chat コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
voice:pushToTalk |
Space | プロンプトを音声入力します。/voice のモードに応じて長押しまたはタップします |
スクロールアクション
フルスクリーンレンダリングが有効な場合に Scroll コンテキストで利用可能なアクション:
| アクション | デフォルト | 説明 |
|---|---|---|
scroll:lineUp |
wheelup |
1 行上にスクロールします。マウスホイールでのスクロールがこのアクションをトリガーします |
scroll:lineDown |
wheeldown |
1 行下にスクロールします。マウスホイールでのスクロールがこのアクションをトリガーします |
scroll:pageUp |
PageUp | ビューポートの高さの半分だけ上にスクロールします |
scroll:pageDown |
PageDown | ビューポートの高さの半分だけ下にスクロールします |
scroll:top |
Ctrl+Home | 会話の先頭にジャンプします |
scroll:bottom |
Ctrl+End | 最新のメッセージにジャンプし、自動追従を再び有効にします |
scroll:halfPageUp |
(未割り当て) | ビューポートの高さの半分だけ上にスクロールします。scroll:pageUp と同じ動作で、vi 形式の再バインド用に提供されています |
scroll:halfPageDown |
(未割り当て) | ビューポートの高さの半分だけ下にスクロールします。scroll:pageDown と同じ動作で、vi 形式の再バインド用に提供されています |
scroll:fullPageUp |
(未割り当て) | ビューポートの高さ全体分上にスクロールします |
scroll:fullPageDown |
(未割り当て) | ビューポートの高さ全体分下にスクロールします |
selection:copy |
Ctrl+Shift+C / Cmd+C | 選択したテキストをクリップボードにコピーします |
selection:clear |
(未割り当て) | アクティブなテキスト選択を解除します。v2.1.234 以降が必要です |
selection:extendLeft |
Shift+Left | アクティブな選択を 1 列左に拡張します |
selection:extendRight |
Shift+Right | アクティブな選択を 1 列右に拡張します |
selection:extendUp |
Shift+Up | アクティブな選択を 1 行上に拡張します。選択が上端に達するとビューポートをスクロールします |
selection:extendDown |
Shift+Down | アクティブな選択を 1 行下に拡張します。選択が下端に達するとビューポートをスクロールします |
selection:extendLineStart |
Shift+Home | アクティブな選択を行頭まで拡張します |
selection:extendLineEnd |
Shift+End | アクティブな選択を行末まで拡張します |
キーストロークシンタックス
モディファイア
+ セパレータでモディファイアキーを使用します。
ctrlまたはcontrol- Control キーshift- Shift キーalt、opt、option、またはmeta- Windows と Linux の Alt キー、macOS の Option キーcmd、command、super、またはwin- macOS の Command キー、Windows の Windows キー、Linux の Super キー
cmd グループは Super モディファイアを報告するターミナル(Kitty キーボードプロトコルまたは xterm の modifyOtherKeys モードをサポートするターミナルなど)でのみ検出されます。ほとんどのターミナルはこれを送信しないため、すべての場所で機能するバインディングには ctrl または meta を使用してください。
例えば:
ctrl+k Ctrl + K
shift+tab Shift + Tab
meta+p macOS の Option + P、その他の場所では Alt + P
ctrl+shift+c 複数のモディファイア
大文字
Claude Code はキー名を大文字と小文字を区別せずに解析するため、K は k と同じバインディングであり、ctrl+K は ctrl+k と同じです。Shift とレターをバインドするには、shift+k と記述します。
非 US キーボードレイアウト
Ctrl ショートカットのキー名は、アクティブなキーボードレイアウトが他の文字を入力する場合でも、ラテン文字として記述してください。
Claude Code がキーボードで押したキーをバインディングにマッチさせる方法は、レイアウトの種類によって異なります。
- キリル文字などの非ラテンレイアウトの場合、Claude Code はターミナルが Kitty キーボードプロトコルを使用し、その位置を報告する場合、キーの US レイアウト位置で Ctrl ショートカットをマッチさせます。そのようなターミナルでロシア語レイアウトがアクティブな場合、Ctrl キーと物理的な W キーを押すと
ctrl+wがトリガーされます。位置を報告しないターミナルでは、Claude Code はターミナルがキープレスに対して送信するものをマッチさせます。ASCII 制御コードは Latin ショートカットをトリガーし、キリル文字として到着するキープレスはバインディングにマッチしません。 - AZERTY などのラテン文字を並べ替えるレイアウトの場合、Claude Code はキーが入力する文字をマッチさせるため、Ctrl キーと A というラベルのキーを押すと
ctrl+aがトリガーされます。
コード
コードはスペースで区切られたキーストロークのシーケンスです。
ctrl+k ctrl+s Ctrl+K を押して、リリースしてから Ctrl+S
各キーストロークは、その前のキーストロークから 3 秒以内に押してください。それより長く待つと、Claude Code はコードをキャンセルし、そのことを示す簡潔な通知を表示します。
特殊キー
escapeまたはesc- Escape キーenterまたはreturn- Enter キーtab- Tab キーspace- スペースバーup、down、left、right- 矢印キーpageup、pagedown- Page Up キーと Page Down キーhome、end- Home キーと End キーbackspace、delete- Delete キーwheelup、wheeldown- マウスホイールスクロールイベント
デフォルトのショートカットのバインドを解除する
アクションを null に設定すると、デフォルトのショートカットのバインドを解除できます。
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+s": null
}
}
]
}
これは chord(連続キー入力)バインディングにも有効です。プレフィックスを共有するすべての chord のバインドを解除すると、そのプレフィックスを単一キーのバインディングとして使用できるようになります。アクティブなコンテキストのいずれかに chord が 1 つでも残っていれば、そのプレフィックスは予約されたままになります。そのため、各 chord は、それを定義しているコンテキストでバインドを解除する必要があります。
Claude Code は、ctrl+x プレフィックスに以下のデフォルトの chord をコンテキストごとにバインドしています。
Chat:ctrl+x ctrl+k、ctrl+x ctrl+e、ctrl+x enter、ctrl+x ctrl+a、ctrl+x ctrl+s、ctrl+x tabTask:ctrl+x ctrl+bDiffPanel:ctrl+x bPane:ctrl+x left、ctrl+x right、ctrl+x up、ctrl+x down、ctrl+x xPaneField:ctrl+x x
ctrl+x enter の chord には v2.1.247 以降が、ctrl+x b、ctrl+x ctrl+a、ctrl+x tab には v2.1.260 以降が、ctrl+x ctrl+s には v2.1.275 以降が必要です。
ctrl+x 自体を単一キーのバインディングとして取り戻すには、これらすべてのバインドを解除します。
{
"bindings": [
{
"context": "Task",
"bindings": {
"ctrl+x ctrl+b": null
}
},
{
"context": "DiffPanel",
"bindings": {
"ctrl+x b": null
}
},
{
"context": "Pane",
"bindings": {
"ctrl+x left": null,
"ctrl+x right": null,
"ctrl+x up": null,
"ctrl+x down": null,
"ctrl+x x": null
}
},
{
"context": "PaneField",
"bindings": {
"ctrl+x x": null
}
},
{
"context": "Chat",
"bindings": {
"ctrl+x ctrl+k": null,
"ctrl+x ctrl+e": null,
"ctrl+x enter": null,
"ctrl+x ctrl+a": null,
"ctrl+x ctrl+s": null,
"ctrl+x tab": null,
"ctrl+x": "chat:newline"
}
}
]
}
プレフィックス上の chord の一部だけのバインドを解除し、すべてを解除しなかった場合、そのプレフィックスを押すと、残りのバインディングのために引き続き chord 待機モードに入ります。
予約済みショートカット
これらのショートカットは再バインドできません。
| ショートカット | 理由 |
|---|---|
| Ctrl+C | ハードコードされた割り込み/キャンセル |
| Ctrl+D | ハードコードされた終了 |
| Ctrl+M | Claude Code は常に Enter として受け取ります |
| Ctrl+[ | Claude Code は常に Escape として受け取ります。Kitty キーボードプロトコルを使用するターミナルでは、v2.1.242 以降が必要です |
| Ctrl+I | Claude Code は常に Tab として受け取ります |
| Ctrl+H | ASCII バックスペースバイトを送信します。Claude Code が Windows で読み込む方法は、ターミナルと CLAUDE_CODE_BS_AS_CTRL_BACKSPACE 環境変数によって異なります |
| Caps Lock | ターミナルアプリケーションに配信されない |
ターミナルの競合
一部のショートカットはターミナルマルチプレクサと競合する可能性があります。
| ショートカット | 競合 |
|---|---|
| Ctrl+B | tmux プレフィックス(2 回押して送信) |
| Ctrl+A | GNU screen プレフィックス |
| Ctrl+Z | Unix プロセス一時停止(SIGTSTP) |
テキストフィールド
ベアレター、数字、またはスペースをバインドした場合でも、ダイアログまたはパネル内のテキストフィールドでそのキャラクターを入力できます。このようなフィールドの 1 つは、Claude が質問する「Other」の回答です。フィールドがフォーカスを持っている間、Ctrl、Alt、または Cmd なしで押したプリント可能なキーはフィールドに送られ、Claude Code はそれをバインディングと照合しません。
これらのキーはフィールドがフォーカスを持っている間でもバインディングを実行します。
- Enter、Escape、Tab、矢印キーなど、キャラクターを入力しないキー
- Ctrl、Alt、または Cmd で押されたキー
- 既に進行中のコードの 2 番目のキーストローク
メインプロンプトでは、Claude Code はすべてのキーを Chat などのアクティブなコンテキストと照合し、バインディングがそれを取らない場合にのみキーを入力します。
Vim モードの相互作用
/config のエディタモード設定で Vim モードを有効にすると、キーボードショートカットと Vim モードは独立して動作します。
- Vim モードはテキスト入力レベルで入力を処理します:カーソル移動、モード、モーション
- キーボードショートカット はコンポーネントレベルでアクションを処理します(todo の切り替えやメッセージの送信など)
- vim モードでは、Escape キーは INSERT モードから NORMAL モードに切り替えます。
chat:cancelはトリガーされません - ほとんどの Ctrl+key ショートカットは Vim モードを通過してキーバインディングシステムに渡されます
- Vim キーはキーバインディングファイルを通じて再マップできません。
jjを Escape にマップするような 2 キーの INSERT モードシーケンスをマップするには、vimInsertModeRemaps設定を使用してください - Vim NORMAL モードでは、
?はヘルプメニューを表示します(Vim の動作) - Vim NORMAL モードでは、
/は履歴検索を開きます。標準モードの Ctrl+R と同じです
Claude が尋ねる質問の Other 行では、Vim モードで Escape を押しても質問はすぐにはキャンセルされません。スクリーンリーダーモードの場合を除き、この行はフォーカスするたびに INSERT モードで開始されます。Other 行で Escape を押すと、行が NORMAL モードに切り替わるか、入力途中の Vim コマンドが破棄され、質問は開いたままになります。質問をキャンセルするには、NORMAL モードで Escape をもう一度押してください。
1 回のキー操作で質問をキャンセルする
Vim モードで 1 回のキー操作で質問をキャンセルするには、Select コンテキストで別のキーを select:cancel にバインドします。この方法では、1 つのオプションを選択する質問の Other 行からキャンセルできます。スクリーンリーダーモードや、複数のオプションを選択できる質問では、バインドしたキーではキャンセルされないため、代わりに Escape でキャンセルしてください。
Ctrl または Alt と組み合わせて押すキーを選んでください。修飾キーなしの文字や数字は代わりに Other 行に入力され、設定したバインディングには届きません。たとえば Ctrl+Q をバインドするには、~/.claude/keybindings.json に次の内容を追加します。
{
"bindings": [
{
"context": "Select",
"bindings": {
"ctrl+q": "select:cancel"
}
}
]
}
ファイルを保存したら、1 つのオプションを選択する質問の Other 行で Ctrl+Q を押します。行が INSERT モードでも NORMAL モードでも、質問は閉じます。
検証
Claude Code はキーバインディングを検証し、以下の警告をデバッグログに書き込みます。
- 解析エラー(無効な JSON または構造)
- スペルミスのあるモディファイア(例:
ctl+k)。Claude Code は認識できない部分を削除し、残りのキーストロークにバインディングを適用します。この例ではkです。 - キー文字列内の
+の隣にあるスペース(例:ctrl+ k)。Claude Code はこの文字列を、ctrl+の後にkが続くコードとして読み取ります。ctrl+単独に一致するキー入力はないため、このバインディングは発火しません。スペースを削除してください。 - 無効なコンテキスト名
- 無効なアクション値(アクションが文字列または
nullではない場合など) - 不明なアクション名(登録されたアクションのタイプミスなど)。Claude Code はバインディングをスキップし、そのキーのデフォルトバインディングを有効に保ちます。
- 予約済みショートカットの競合
- 同じコンテキスト内の重複バインディング
Claude Code を --debug で起動して、詳細を確認してください。