Claude CodeのCtrl+Gでエディタを開く方法と開かないときの確認点
Claude CodeのCtrl+Gは、入力中のプロンプトを外部エディタで編集して入力欄に戻す機能です。使えない場合の確認点、Show last response in external editorの設定、キー割り当ての変え方を扱います。
Claude Codeの入力欄でCtrl+G(別名Ctrl+X Ctrl+E)を押すと、入力中のプロンプトが手元の外部エディタで開きます。保存して閉じれば、内容が入力欄に戻ります。開くのは「システムに設定されたテキストエディタ」で、シェルの$EDITOR/$VISUALと同じ仕組みで決まると考えられます。エディタが開かないときの確認点は後半の節にあります。
Ctrl+Gを押してから送信まで
- 1
入力欄でCtrl+Gを押す
プロンプトを入れた状態でエディタが開きます。行番号を受け取れるエディタなら、v2.1.286から入力欄のカーソルがあった行にカーソルを置いて開きます。
- 2
エディタで書き換えて保存し、閉じる
/configのShow last response in external editorをオンにしていれば、バッファの先頭にClaudeの直前の返信が#コメントで入っています。 - 3
入力欄に戻る
保存した内容が入力欄に入ります。コメントブロックは自動で取り除かれるので、返信本文は送信内容に混ざりません。
Ctrl+Gは「システムに設定されたテキストエディタ」を開く
Ctrl+G(またはreadline由来の別名Ctrl+X Ctrl+E)は、Claude Codeのショートカット表で「Open in default text editor」と説明されています。環境変数名が出てくるのは、トランスクリプト画面のv(会話を一時ファイルに書き出して$VISUALまたは$EDITORで開く。フルスクリーン表示が前提)の行です。claude agentsの「v to open in editor」がデーモンの既定エディタを使っていた不具合も、シェルの$EDITOR/$VISUALに従うよう修正されています。v2.0.10でCtrl+Gが加わったときの説明は「your system's configured text editor」で、Ctrl+Gも$VISUAL/$EDITORと同じ仕組みで動くと考えられます。
$VISUALと$EDITORはUnix系シェルで古くから使われてきた環境変数です。画面全体を使うエディタを$VISUALに、行指向の軽いエディタを$EDITORに分ける慣習がありますが、今のターミナルエディタはほとんどが画面全体を使います。両方に同じ値を入れておけば混乱しません。今どちらが設定されているかはシェルで確認できます。
echo "$EDITOR"
echo "$VISUAL"未設定なら、起動ファイルに1行足して恒久的に設定します。
export EDITOR="vim"
export VISUAL="vim"GUIエディタは、保存してプロセスが終了するまで呼び出し元を待たせる起動オプション付きで登録するのが一般的な運用です(VS Codeならcode --wait)。v2.1.216では、/memory・/plan・/keybindings・Ctrl+GでGUIエディタを開いている間のマウス・フォーカスの乱れが修正されました。ターミナル系だけでなくGUIエディタも想定された機能です。
Ctrl+X Ctrl+Eという組み合わせ自体は目新しいものではありません。GNU readlineがedit-and-execute-commandという名前で割り当ててきたキーで、bashの行編集でも入力中のコマンドラインを外部エディタで書き直すのに使われています。Claude Codeはv2.1.83でこれをそのまま別名として追加しました。readlineに慣れた手は、キー割り当てを覚え直さずに済みます。
前回の返信を外部エディタに表示する設定(Show last response in external editor)
/configのShow last response in external editorをオンにすると、Ctrl+Gで開くエディタの先頭にClaudeの直前の返信が#コメントとして入ります。この設定はv2.1.110で追加されました。
externalEditorContextのオフとオン
オフ(既定)
バッファにはプロンプトだけが入ります。直前の返信は見えません。
オン
# ─── Claude's last response (for reference; removed on save) ───
# I added the retry loop to fetchUser in src/api.ts and a test
# for the timeout case. Want me to wire the same retry into
# fetchOrders?
# ─── Write your reply below this line ──────────────────────────
Yes, and cap it at three attempts.返信が長いときは、末尾の50行だけが入り、切り詰めた箇所は# … (earlier output truncated)で示されます。長い返信の冒頭を見返したい場面では、エディタ側ではなく画面のトランスクリプトを開くことになります。
設定キーはexternalEditorContextで、既定値はfalseです。~/.claude.jsonに直接書いても有効になります。
{
"externalEditorContext": true
}このキーは~/.claude.jsonの「Global config」のスコープで、settings.jsonに書いても無視されます。プロジェクトごとの.claude/settings.jsonでは切り替えられず、/configから切り替えればどのプロジェクトでも同じ挙動になります。
入力欄のスペルチェックとの関係
Claude Codeの入力欄には、入力中の単語に下線を引くスペルチェックがあります。チェック対象は入力ボックスの中のテキストだけで、シェルモード・Ctrl+Rの履歴検索・音声入力中は何もチェックしません。Ctrl+Gで外部エディタに移ったあとの本文は入力ボックスの外にあるので、校正はエディタ側の機能に任せることになります。この機能は既定でオフで、aspell・hunspell・ispellのいずれかがPATHに必要です。設定方法はClaude Code v2.1.235 — プロンプト入力のスペルチェック追加を含む19項目の更新にまとめています。
入力欄以外でもCtrl+Gは使える
Ctrl+Gが効くのはメインのChat入力欄だけではありません。場面によって対応に差があります。
| 場面 | Ctrl+Gの扱い | 補足 |
|---|---|---|
| メイン入力欄(Chat) | Ctrl+Gの扱い既定バインド。Ctrl+X Ctrl+Eも同じ動作 | 補足通常のプロンプト編集 |
claude agentsのdispatch入力(agent view) | Ctrl+Gの扱いCtrl+Gが効く | 補足リマップの扱いは下のつまずきやすい点を参照 |
| プラン承認ダイアログ | Ctrl+Gの扱いフッターにctrl+g to edit in <editor>と表示 | 補足v2.1.212で、ファイルパスが長いときのフッター折り返しが修正された |
AskUserQuestionの「その他」入力欄 | Ctrl+Gの扱いv2.1.9以降で対応 | 補足選択式の質問でも自由記述を外部エディタで書ける |
AskUserQuestionの「その他」欄は、用意された選択肢のどれにも当てはまらないときに自由記述で答える入力欄です。公式ドキュメントはこれを「custom response」と呼び、Ctrl+Gの説明でも「プロンプトまたはcustom responseを編集する」と書いています。長い前提条件や複数行の反例を添えて答えたいときに、1行入力より書きやすくなります。
キー割り当ての変え方とつまずきやすい点
Ctrl+Gの実体はchat:externalEditorというアクション名で、~/.claude/keybindings.jsonから任意のキーに変更できます。次の例は、Ctrl+E(既定は行末へ移動)に割り当て直し、Ctrl+S(既定はchat:stash)を解除する設定です。
{
"$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
}
}
]
}既定ではCtrl+GとCtrl+X Ctrl+Eの両方がchat:externalEditorにバインドされています。片方だけ残して使い分けたい場合も、それぞれ個別にnullで解除します。設定ファイルへの変更はClaude Codeの再起動なしに自動で検知・反映されるため、保存してすぐに新しいキーで試せます。
つまずきやすい点は次の3つです。
- agent viewでは
Ctrl+X Ctrl+Eが効かない: agent viewのキー入力は単一キーストロークが前提で、2打鍵の組み合わせは発火しません。バックグラウンドセッションの管理画面ではCtrl+Gだけを使います - agent viewのリマップは
Chat側の設定に従う: dispatch入力の外部エディタ操作はAgentsコンテキストのアクションではありません。Chatコンテキストのchat:externalEditorに割り当てたキーが、そのままagent viewでも効きます Ctrl+Xから始まる組み合わせはプレフィックスを共有する:Ctrl+X Ctrl+Eのほかに、ChatコンテキストだけでもCtrl+X Ctrl+K(バックグラウンドサブエージェントの全停止)やCtrl+X Enterなどが同じCtrl+Xで始まります。Ctrl+Xを単独のキーとして別のアクションに使いたいときは、すべての組み合わせを解除する必要があります
Ctrl+Gまわりの追加と修正の経過
初出から現在までのあいだに、機能の追加と不具合修正が積み重なっています。
Ctrl+Gの追加と修正
- 2025年10月8日v2.0.10 — Ctrl+Gを追加
システムの既定のテキストエディタにプロンプトを開く機能が入りました。
- 2026年1月13日v2.1.6 — 起動失敗時のエラー表示
Ctrl+Gでエディタの起動に失敗したとき、エラーが画面に出るようになりました。
- 2026年1月16日v2.1.9 — 「その他」入力欄に対応
AskUserQuestionの自由記述欄でもCtrl+Gが使えます。 - 2026年1月27日v2.1.20 — ヘルプメニューに掲載
ヘルプメニューにも
Ctrl+Gのショートカットが載り、見つけやすくなりました。 - 2026年3月25日v2.1.83 — Ctrl+X Ctrl+Eを別名に追加
readlineネイティブの組み合わせでも開けます。
- 2026年4月15日v2.1.110 — 前回の返信をコメント表示
externalEditorContextが入りました。 - 2026年5月6日〜8日v2.1.129・v2.1.136 — 戻ったあとの表示と入力の不具合
エディタから戻ると上の会話履歴が消える不具合(v2.1.129)と、拡張キー入力モードの端末でBackspaceとCtrl+Backspaceが入れ替わる不具合(v2.1.136)が直りました。
- 2026年7月14日〜20日v2.1.210・v2.1.216 — 貼り付けとGUIエディタ
貼り付けたテキストの周りに
ÈやÉが混ざる不具合(v2.1.210)と、GUIエディタを開いている間のマウス・フォーカスの乱れ(v2.1.216)が直りました。 - 2026年8月28日v2.1.251 — /dev/ttyを開くエディタ
claude agentsのバックグラウンドセッションで、emacs -nwやmicroのように/dev/ttyを開くエディタが「Emacs quit unexpectedly」で失敗していましたが、直りました。 - 2026年9月1日v2.1.257 — agent viewのリマップ
claude agentsでCtrl+Gのリマップが無視される不具合が直り、Ctrl+SとCtrl+Tは新しいAgentsコンテキストで変更できるようになりました。 - 2026年9月11日v2.1.269 — 戻ったあとの描画
エディタから戻ったあとにインターフェースが二重に描画される不具合(フルスクリーンでない画面、Konsole)と、rxvt-unicodeでカーソルブロックが残る不具合が直りました。
- 2026年9月18日v2.1.277 — 色コードを含む入力のクラッシュ
履歴から呼び戻したプロンプトや外部エディタから読み込んだテキストなど、ターミナルの色コードを含む入力で「unrecoverable interface error」のクラッシュが起きる不具合が直りました。
- 2026年9月29日〜30日v2.1.285・v2.1.286 — vimモードと行番号
エディタから戻ったあと、NORMALモードの
xやrで末尾の貼り付けプレースホルダーが壊れる不具合(v2.1.285)が直りました。行番号を受け取るエディタで、入力欄のカーソル行から開くようになったのもv2.1.286です。
使っているエディタや端末で乱れが出たときは、まずClaude Codeのバージョンを見ると原因を切り分けやすくなります。
Ctrl+Gでエディタが開かないときの確認点
起動に失敗したときは、v2.1.6以降ならエラーが画面に出ます。出たメッセージとあわせて、次の順に見ていくと原因を絞れます。
$EDITORと$VISUALの値:Ctrl+Gのエディタは環境変数で決まると考えられるため、まず冒頭の節のコマンドで中身を確認します。空ならexportで設定します。設定したシェルとClaude Codeを起動したシェルが同じかも見ておきます- GUIエディタの起動オプション:
code --waitのように、閉じるまで待つオプションを付けて登録しているかを確かめます - Claude Codeのバージョン: 上のタイムラインのとおり、
claude agentsで/dev/ttyを開くエディタが失敗する不具合はv2.1.251、agent viewでのリマップ無視はv2.1.257で直っています。古い版なら更新で解消する可能性があります - キー割り当て:
keybindings.jsonでCtrl+Gをnullにしていないか、別のアクションへ割り当て直していないかを確かめます
使い分けの目安
Ctrl+Gが生きるのは、数十行にわたる指示や複数のコードスニペットを組み合わせるとき、直前の返信を読み返しながら訂正を書くとき(externalEditorContextと組み合わせる)、AskUserQuestionの「その他」欄に選択肢で表せない条件を書くときです。一言二言の指示では、エディタの起動が遠回りになります。
Ctrl+Gと同じ入力まわりの操作には、過去のプロンプトを呼び戻すCtrl+Rがあります。使い方の違いはCtrl+R履歴検索でClaude Codeの過去プロンプトを再利用するにまとめてあります。keybindings.jsonのコンテキスト一覧や表記ルールを俯瞰したい場合は、Claude Codeショートカット一覧 — 既定操作とkeybindings.jsonでのカスタマイズが早見表になっています。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。