🗄️
Claude Code × Cursor × WSL で Shift+Enter が改行にならなかった話(備忘録)
Claude Code を Cursor から使っているときに、
-
/terminal-setupを実行しているのに -
Shift+Enterが改行にならず、そのまま送信されてしまう
というハマり方をしたので、備忘録として残しておきます。
環境
- ホスト
- Windows 11
- Cursor(Windows アプリ)
- 開発環境
- WSL2 上の Ubuntu
- Cursor の統合ターミナルから、WSL に接続
- WSL 側に Claude Code(
claude)をインストール済み
先に結論
イメージとしては、こんな構成です。
上記の構成の場合、
- キー入力を見ているのは Windows 側の Cursor
- このキー入力設定を変えないと Claude Code へは届かない
-
/terminal-setupが書き換えているのは WSL 側の設定ファイル
というズレが原因で、Shift+Enter のキーバインドが効いていなかった、ということでした。
以下、作業メモです。
やったこと
Claude Code のプロンプト側で、公式ドキュメントどおり /terminal-setup を実行しました。
> /terminal-setup
⎿ Installed Cursor terminal Shift+Enter key binding
See /home/{username}/.config/Cursor/User/keybindings.json
WSL 上でファイルを確認すると、ちゃんと設定は入っています。
$ cat /home/{username}/.config/Cursor/User/keybindings.json
[
{
"key": "shift+enter",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u001b\r"
},
"when": "terminalFocus"
}
]
これで動きそうなのですが、
実際には Shift+Enter を押しても改行されず、そのまま送信される 状態でした。
原因
-
実際にキーボード入力を受け取っているのは、Windows の Cursor
- →
C:\Users\<ユーザー名>\AppData\Roaming\Cursor\User\keybindings.jsonを見ている
- →
-
/terminal-setupが「書き換えましたよ」と教えてくれるパスは WSL 側/home/{username}/.config/Cursor/User/keybindings.jsonここを書き換えても、Windows 側 Cursor からは読まれていない ので、
Shift+Enterのキーバインドが有効にならない、という状況でした。
対処方法
以下の手順で解決しました。
-
Windows 側の Cursor で Keyboard Shortcuts (JSON) を開く
-
Ctrl + K→Ctrl + Sでキーボードショートカット画面を開く - 右上の
{}アイコン(「Open Keyboard Shortcuts (JSON)」)をクリック
-
-
開いた
keybindings.jsonに、以下の設定を追記{ "key": "shift+enter", "command": "workbench.action.terminal.sendSequence", "args": { "text": "\u001b\r" }, "when": "terminalFocus" } -
Cursor を再起動
-
統合ターミナルから WSL 上で
claudeを起動 -
Shift+Enterを押す → きちんと改行されることを確認
ポイントは、WSL 側ではなく、Windows 側 Cursor の設定ファイルに書く という点でした。
同じように
- Windows + WSL
- Cursor から WSL のターミナルに接続
- Claude Code を CLI で使っている
という構成でハマった方の参考になれば幸いです。
GitHubで編集を提案
Discussion