Cursor(VS Code 系エディタ)の統合ターミナルで Claude Code を使っていると、プロンプトを複数行で書きたいことがよくあります。ところが初期状態では Shift+Enter を押すとそのまま送信されてしまい、改行できません。
この記事では、Cursor の keybindings.json を編集して Shift+Enter で改行できるようにした手順をまとめます。
環境
- OS:Windows 11
- エディタ:Cursor(統合ターミナル)
- CLI:Claude Code
困ったこと
Shift+Enter を押すと、改行されずにプロンプトが送信されてしまう。
原因
ターミナルは通常、Enter も Shift+Enter も同じ信号(\r)として送ります。そのため Claude Code は 2 つを見分けられず、どちらも「送信」として扱います。
Claude Code 側で次のようにキーバインドを設定していても、ターミナルから違う信号が届かなければ効きません。
// ~/.claude/keybindings.json
{
"$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"$docs": "https://code.claude.com/docs/en/keybindings",
"bindings": [
{
"context": "Chat",
"bindings": {
"shift+enter": "chat:newline"
}
}
]
}
解決方法
Cursor のキーボードショートカット設定(keybindings.json)にルールを 1 つ追加します。
1. keybindings.json を開く
次のどちらかの方法で開きます。
- コマンドパレット(Ctrl+Shift+P)で
Preferences: Open Keyboard Shortcuts (JSON)を実行する - ファイルを直接開く:
%APPDATA%\Cursor\User\keybindings.json
2. 設定を追加する
配列の中に次の設定を追加します(すでに書いてある設定は残したまま追加してください)。
[
{
"key": "shift+enter",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b\r" },
"when": "terminalFocus"
}
]
保存するとすぐに反映されます。Cursor の再起動はいりません。
設定の意味
workbench.action.terminal.sendSequence:指定した文字列をそのままターミナルに送るコマンドです\u001b\r:ESC(\u001b)と Enter(\r)の組み合わせです。ターミナルでは Alt+Enter と同じ信号になり、Claude Code はこれを「改行」として扱います"when": "terminalFocus":ターミナルにフォーカスがあるときだけ有効にします。エディタでの Shift+Enter には影響しません
結果
Cursor のターミナルで Claude Code を使うとき、Shift+Enter で改行できるようになりました。
| キー | 動作 |
|---|---|
| Enter | 送信 |
| Shift+Enter | 改行 |
まとめ
- Shift+Enter が効かないのは、ターミナルが Enter と Shift+Enter を区別せずに送っているため
- Cursor の
keybindings.jsonで、Shift+Enter に\u001b\rを送る設定を追加すれば解決する
複数行のプロンプトを書くことが多い人は、ぜひ設定してみてください。
