VSCode上のClaudeCodeでEmacsライクの移動(Ctrl+F/Ctrl+P)ができない問題の解決方法
はじめに
みなさん、こんにちは。
VSCode上のClaudeCodeを使っていて、「あれ、Ctrl+FやCtrl+Pで移動ができない」と思ったことはありませんか。
私も同じ問題に直面し、解決方法を見つけましたので、共有します。
現象
VSCode上のClaudeCodeの入力欄で、Ctrl+FやCtrl+Pを押しても、カーソルが移動せず何も起きません。
Ctrl+BやCtrl+Nに関しては問題なく動作し、それぞれ後方または下方に移動します。
VSCodeがCtrl+FやCtrl+Pのイベントをキャッチしてしまい、拡張機能であるClaudeCodeのチャット欄までイベントが届いていないことが原因のようです。
詳しくは下記をご覧ください。
keybindings.jsonの設定
Webを検索したり、Geminiと問答しながら、VSCodeのkeybindings.jsonに設定を追加することで解決を試みましたが、うまくいきませんでした。
解決方法
Karabiner-Elements というMac用のキーボードカスタマイズツールを使うことで、解決できました。
インストール方法については、下記記事を参考にさせていただきました。
設定のポイントは、以下の通りです。
Karabiner-Elements画面の、Devicesタブに、使用しているキーボードがあり、Modify eventsのトグルをオンにする。
Simple Modificationsタブで、caps lockをleft_controlに変更する。
たとえMacの設定で caps lock を Control に変更していても、Karabiner-Elementsの設定で caps_lock→left_control の変更が必要です。
Complex Modificationsタブで、Add your own rulesをクリックし、下記ルールを追加する。
bundle_identifiers は、MacとWindowsで値が異なる可能性があります。下記はMacの場合の設定値です。
{
"description": "VS Code: Ctrl+F/P to Arrow Keys (Minimal)",
"manipulators": [
{
"conditions": [
{
"bundle_identifiers": [
"com.microsoft.VSCode"
],
"type": "frontmost_application_if"
}
],
"from": {
"key_code": "f",
"modifiers": {
"mandatory": ["control"],
"optional": ["shift"]
}
},
"to": [{ "key_code": "right_arrow" }],
"type": "basic"
},
{
"conditions": [
{
"bundle_identifiers": [
"com.microsoft.VSCode"
],
"type": "frontmost_application_if"
}
],
"from": {
"key_code": "p",
"modifiers": {
"mandatory": ["control"],
"optional": ["shift"]
}
},
"to": [{ "key_code": "up_arrow" }],
"type": "basic"
}
]
}設定を追加したにも関わらず変化がない場合は、Karabiner-Elementsに付属のEventViewerを起動して、実際どのようなキーイベントが発生しているかを確認してみてください。
Kalabiner-Elementsインストール後、カーソル移動が遅くなったと感じた時
Kalabiner-Elementsをインストールすると、Macの システム設定>キーボード で設定できる キーのリピート速度 と リピート入力認識までの時間 の設定が効かなくなってしまいました。
例えば Ctrl+F を押しっぱなしにして、前方に移動したい場合の、移動開始するまでの時間と、移動する速度に影響する設定です。
システム設定から、もう一度設定のスライダーを操作したら、インストール前と同じ感覚でカーソル移動できる様になりました。
原因はよく分かりません。
まとめ
VSCode上のClaudeCodeでEmacsライクの移動(Ctrl+F/Ctrl+P)ができない問題は、Karabiner-Elementsを使って解決できました。
Emacsライクな移動に慣れているユーザは多いので、できればVSCode側でこの問題を解決してほしいところです。
同じような問題に直面している方は、ぜひ試してみてください。
