見出し画像

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 lockleft_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側でこの問題を解決してほしいところです。

同じような問題に直面している方は、ぜひ試してみてください。

いいなと思ったら応援しよう!