0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeで日本語キーボードのショートカットが効かない時に確認すること

0
Posted at

背景

VSCodeには標準のキーボードマクロ(記録・再生)機能がなく、Keyboard Macro Beta拡張機能で代替する際、日本語キーボード特有の記号キー問題にハマったので記録します。

1. VSCode標準ではマクロ機能がない

代替アプローチは3つあります。

  1. 拡張機能(Keyboard Macro Beta、Macros等)
  2. マルチカーソル機能で代用(Ctrl+Dで次の同じ単語選択、Ctrl+Shift+Lで全選択など)
  3. keybindings.jsonrunCommandsで固定シーケンスを直接定義
{
  "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_7oem_8になる等)ため、この表を鵜呑みにせず、必ず自分の環境で確認手順を実行してください。

5. IMEとの干渉に注意

日本語入力モード(IME ON)のままだと、キーボードイベントがIMEに奪われてショートカットが反応しないことがあります。ショートカットを押す前にEscで英数モードに切り替える習慣が必要です。

まとめ

日本語キーボードでのショートカット不具合は、推測で対処せず「Ctrl+K → Ctrl+K」でVSCode自身にキー名を確定させてもらうのが最短ルートです。スニペット変数を使った日付・記号の高速入力例など、実用例の全文はこちらにまとめています。

VSCodeでサクラエディタ風マクロを実現する完全ガイド(ブログ)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?