神戸のホームページ制作会社、有限会社ユニファース 代表のブログ

Cursor のターミナルで Claude Code を使うとき、Shift+Enter で改行できるようにする方法

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 を送る設定を追加すれば解決する

複数行のプロンプトを書くことが多い人は、ぜひ設定してみてください。

記事一覧へ戻る