背景
VSCodeには標準のキーボードマクロ(記録・再生)機能がなく、Keyboard Macro Beta拡張機能で代替する際、日本語キーボード特有の記号キー問題にハマったので記録します。
1. VSCode標準ではマクロ機能がない
代替アプローチは3つあります。
- 拡張機能(Keyboard Macro Beta、Macros等)
- マルチカーソル機能で代用(
Ctrl+Dで次の同じ単語選択、Ctrl+Shift+Lで全選択など) -
keybindings.jsonにrunCommandsで固定シーケンスを直接定義
{
"key": "ctrl+alt+m",
"command": "runCommands",
"args": { "commands": ["editor.action.addCommentLine", "editor.action.copyLinesDownAction"] }
}
2. Keyboard Macro Betaの基本操作
拡張機能検索: tshino.kb-macro
記録開始/終了: Ctrl + Alt + R
再生: Ctrl + Alt + P
記録したマクロを永続化するには、コマンドパレットから「Keyboard Macro: Copy Macro as Command Content」を実行し、settings.jsonに貼り付けます。
{
"kb-macro.commands": [
{ "name": "MyMacro", "content": [/* コピーした内容 */] }
]
}
3. 日本語キーボードで記号キーが反応しない問題
;や:などの記号キーをショートカットに使おうとすると動作しないことがあります。原因は、VSCodeが物理キーを「OEMキー名称」で認識しており、日本語キーボードでは特殊な名前が割り当てられているためです。
確実な特定手順:
1. keybindings.jsonの編集画面でCtrl+K → Ctrl+K(2回連続)
2. 「キーバインドの定義」入力ボックスが表示される
3. 目的のキー(例: Alt+;)を実際に押す
4. 正しい物理キー名(例: alt+oem_plus)が自動入力される
推測でキー名を書くのではなく、この手順で必ず実測するのがポイントです。
4. 日本語キーボードのOEM名称対応表
| キー | 刻印 | VSCode名称 |
|---|---|---|
; |
れ | oem_plus |
: |
け | oem_1 |
@ |
@゛ | oem_3 |
[ |
「 | oem_4 |
] |
」 | oem_6 |
\ |
ろ | oem_102 |
/ |
め | oem_2 |
, |
ね | oem_comma |
. |
る | oem_period |
- |
ほ | oem_minus |
PC/メーカーによって割り当てが異なる場合がある(oem_7がoem_8になる等)ため、この表を鵜呑みにせず、必ず自分の環境で確認手順を実行してください。
5. IMEとの干渉に注意
日本語入力モード(IME ON)のままだと、キーボードイベントがIMEに奪われてショートカットが反応しないことがあります。ショートカットを押す前にEscで英数モードに切り替える習慣が必要です。
まとめ
日本語キーボードでのショートカット不具合は、推測で対処せず「Ctrl+K → Ctrl+K」でVSCode自身にキー名を確定させてもらうのが最短ルートです。スニペット変数を使った日付・記号の高速入力例など、実用例の全文はこちらにまとめています。