VScodeで⌘+[が効かない?Macのショートカットと干渉していた

// CONTENTS

ここ最近、Astroでブログ構築をしていて、コードをいじるのにはVisual Studio Codeを使用していた。それで、⌘+[が効かない問題に出会した。インデントを増やしすぎて、戻すのに多用していたため、効かないと地味に困るけど、コードをいつもいじってるわけではないので、長らく放置していた。いささか不便すぎるので、重い腰を上げて、解決に乗り出す。以前に使用していたSublime Text3では何の設定もなしに⌘+[が機能していたため、VScodeの問題なのか、Macの問題なのか、分からずに右往左往した。
最終的にはMacのショートカットの初期設定を変更することで解決した。

起こった状況

環境

MacBook Air M2 macOS Tahoe

どんな時

コードを修正していて、ある行のインデントを減らしたくて、⌘+[を押したとき。

症状

何も起こらない。選択している行のインデントが減るはずだが、キーが効いていない。

試したこと

VScodeのショートカットキーを調べる

他の操作でのショートカットキーに被りがあることで効いていないのではと疑い、重複しているショートカットを調べる。コントロールパネルから、Preference: Open Keyboard Shortcutsを選択。Outdent Lineを打ち込んで検索してみるが、⌘+[がきちんと設定されている。

そこから、Preference: Open Keyboard Shortcuts (JSON)で、強制的にOutdent Lineするコードを増やしてみるが、全く効果は現れず。

[
    // 既存のcmd+[の割り当てを無効化
    {
        "key": "cmd+[",
        "command": "-workbench.action.navigateBack"
    },
    // 必要に応じて他にも衝突してるコマンドを無効化
    {
        "key": "cmd+[",
        "command": "-editor.action.indentLines"
    },
    // 改めてoutdentを設定
    {
        "key": "cmd+[",
        "command": "editor.action.outdentLines",
        "when": "editorTextFocus && !editorReadonly"
    }
]

だめだこりゃ。
ちなみに、インデントを増やす方は⌘+]で、indent Line。こっちは問題なく効くのに、なぜ?キーボードへの割り当てがどうしても効かない。

Mac OSのバグ?

AIたち(ClaudeやChatGPT)に訊いても埒が開かないので、いろんなサイトを徘徊してみて、解決策を探る。そうすると、VScodeのバグではなく、Big Sur以降からのAppleシリコン搭載Macでの不具合の可能性が高いことを知った。

Appleシリコン搭載Macで⌘+[が効かない問題について書かれた記事を読んでいて、僕は気づいた。自分のMacはUS配列のキーボードである。問題はこれかもしれないと思い、システム設定>キーボードショートカット…から⌘+@が割り当てられている項目を発見し、すぐさま別のショートカットにしてみた。すると、VScode再起動ののち、⌘+[は機能し始めた。

先ほどのブログにもあるように、いろんな解決法があるみたいだが、この解決法がスマートな気がした。記事内容にもある通り、日本語でセットアップしたAppleシリコン搭載MacでUS配列キーボードを使っていることが主たる要因っぽい。OSが⌘+@⌘+[を混同しているようだ。

これさえ覚えておけばOK

  1. ショートカットの被りがないか確認
  2. システム設定>キーボードショートカット…から⌘+@の割り当てを探し、別のショートカットに置き換え

まとめ

US配列キーボードにしたことがこんなところで、問題になるなんてまさかである。少し前からそれなりの数で報告されているバグらしいので、早く対処して欲しいものだなあ。

// SIGNAL

旅・日常・Webの解決ログ。東南アジアを放浪中。[ ABOUT ]
疑問や苦情などはこちら @driftingtape