VSCodeでサクラエディタ風マクロを実現する完全ガイド【Keyboard Macro Beta】

Development
スポンサーリンク
スポンサーリンク

はじめに

サクラエディタからVSCodeへの移行を検討する際、最大の懸念の一つが「マクロ機能」です。サクラエディタの強力なキーボードマクロ(記録・再生)に慣れている場合、VSCodeで同等の機能が実現できるのか不安になります。

本記事では、実際にサクラエディタからVSCodeへ移行した経験をもとに、マクロ機能の実現方法と、その過程で遭遇した問題と解決策を詳しく解説します。

前提となる個別マクロの移行

具体的な個別マクロの実装については、以下の記事で詳しく解説しています。本記事は「マクロ機能そのもの」の実現方法に焦点を当てた内容となっています。

サクラエディタからVSCodeへマクロ移行!快適開発環境の構築記録
はじめに長年愛用してきたサクラエディタのマクロ機能。便利なJavaScript/VBSマクロを多数作成して日常業務で活用してきましたが、最近のAWS開発やブログ執筆でVSCodeを使う機会が増えてきました。「VSCodeでもサクラエディタの...

VSCodeの標準機能とマクロの現状

標準機能にマクロはない

残念ながら、VSCodeには**標準機能としてのキーボードマクロ(操作の記録・再生)**は搭載されていません。

3つの代替アプローチ

VSCodeでマクロ的な機能を実現する方法は以下の3つです。

1. 拡張機能を使う

  • Keyboard Macro Beta (tshino.kb-macro) - 操作を記録して再生
  • Macros (exceedsystem.vscode-macros) - 複数コマンドを組み合わせ

2. マルチカーソル機能で代用

VSCodeの強力なマルチカーソルで、多くの繰り返し作業を効率化できます。

操作Windows/LinuxmacOS
次の同じ単語を選択Ctrl + DCmd + D
全ての同じ単語を選択Ctrl + Shift + LCmd + Shift + L
カーソルを上下に増やすCtrl + Alt + ↑/↓Opt + Cmd + ↑/↓

3. keybindings.jsonで直接定義

固定の操作シーケンスは、keybindings.jsonに記述して実現できます。

{
  "key": "ctrl+alt+m",
  "command": "runCommands",
  "args": {
    "commands": [
      "editor.action.addCommentLine",
      "editor.action.copyLinesDownAction"
    ]
  }
}

Keyboard Macro Beta拡張機能の導入

なぜKeyboard Macro Betaを選んだか

サクラエディタの「記録開始 → 操作 → 記録終了 → 再生」という直感的な操作感を最も忠実に再現できる拡張機能です。

インストール手順

  1. VSCode左側の拡張機能アイコンをクリック
  2. 検索バーに tshino.kb-macro と入力
  3. Keyboard Macro Betaの[インストール]ボタンを押す

基本的な使い方

インストール後、すぐに以下のキーでマクロが使えます。

操作ショートカット
記録開始/終了Ctrl + Alt + R
マクロ再生Ctrl + Alt + P

TIP: 記録開始すると、VSCode下部のステータスバーに「Recording」と表示されます。

サクラエディタ風のキー割り当て

デフォルトのキーが使いにくい場合は、keybindings.jsonでカスタマイズできます。

[
  {
    "key": "ctrl+shift+m",
    "command": "kb-macro.startRecording",
    "when": "editorTextFocus && !kb-macro.recording"
  },
  {
    "key": "ctrl+shift+m",
    "command": "kb-macro.finishRecording",
    "when": "editorTextFocus && kb-macro.recording"
  },
  {
    "key": "ctrl+shift+l",
    "command": "kb-macro.playback",
    "when": "editorTextFocus"
  }
]

マクロの永続化と管理

マクロをファイルとして保存

一度記録したマクロをsettings.jsonに保存することで、恒久的に使用できます。

保存手順:

  1. マクロを記録(Ctrl+Alt+R)
  2. コマンドパレット(Ctrl+Shift+P)を開く
  3. 「Keyboard Macro: Copy Macro as Command Content」を実行
  4. クリップボードにマクロがコピーされる

settings.jsonへの登録

{
  "kb-macro.commands": [
    {
      "name": "MyMacro",
      "content": [
        // ここにコピーした内容を貼り付け
      ]
    }
  ]
}

ショートカットキーへの割り当て

keybindings.jsonで特定のキーに登録したマクロを割り当てます。

{
  "key": "ctrl+f1",
  "command": "kb-macro.playback",
  "args": { "name": "MyMacro" }
}

日本語キーボード特有の問題と解決

問題:記号キーが反応しない

;(セミコロン)や:(コロン)などの記号キーをショートカットに使おうとすると、うまく動作しないケースがあります。

原因: VSCodeは物理キーを「OEMキー名称」で認識しており、日本語キーボードでは特殊な名前が割り当てられています。

解決方法:物理キー名を確認する

確実な特定手順:

  1. keybindings.jsonの編集画面で Ctrl + K を押してから Ctrl + K(2回連続)
  2. 「キーバインドの定義」入力ボックスが表示される
  3. 実際に目的のキー(例: Alt + ;)を押す
  4. 正しい物理キー名(例: alt+oem_plus)が自動入力される
  5. その名前をJSONにコピーする

日本語キーボードのOEM名称一覧

キー刻印VSCode名称
;oem_plus
:oem_1
@@゛oem_3
[oem_4
]oem_6
^oem_7
¥右上(ほ)の隣oem_5
\oem_102
/oem_2
,oem_comma
.oem_period
-oem_minus

実用的なカスタマイズ例

日付・時刻の自動入力

VSCodeのスニペット変数を活用すると、動的な値を挿入できます。

// 日付 (2026/01/27) - alt+;
{"key": "alt+oem_plus", "command": "editor.action.insertSnippet", "when": "editorTextFocus", "args": {"snippet": "$CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE"}},

// 時刻 (11:55) - alt+:
{"key": "alt+oem_1", "command": "editor.action.insertSnippet", "when": "editorTextFocus", "args": {"snippet": "$CURRENT_HOUR:$CURRENT_MINUTE"}},

// 日付+時刻 (2026/01/27 11:55) - ctrl+alt+;
{"key": "ctrl+alt+oem_plus", "command": "editor.action.insertSnippet", "when": "editorTextFocus", "args": {"snippet": "$CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE $CURRENT_HOUR:$CURRENT_MINUTE"}},

// 秒まで含める (11:55:30) - ctrl+alt+:
{"key": "ctrl+alt+oem_1", "command": "editor.action.insertSnippet", "when": "editorTextFocus", "args": {"snippet": "$CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND"}}

記号の高速入力

// ■→▲▼★を記入 - ctrl+alt+<>/\@
{"key": "ctrl+alt+oem_comma", "command": "editor.action.insertSnippet", "when": "editorTextFocus", "args": {"snippet": "■"}},
{"key": "ctrl+alt+oem_period", "command": "editor.action.insertSnippet", "when": "editorTextFocus", "args": {"snippet": "→"}},
{"key": "ctrl+alt+oem_2", "command": "editor.action.insertSnippet", "when": "editorTextFocus", "args": {"snippet": "▼"}},
{"key": "ctrl+alt+oem_102", "command": "editor.action.insertSnippet", "when": "editorTextFocus", "args": {"snippet": "▲"}},
{"key": "ctrl+alt+oem_3", "command": "editor.action.insertSnippet", "when": "editorTextFocus", "args": {"snippet": "★"}}

VSCode標準機能との共存

当初は Shift+Alt+↑/↓ に記号入力を割り当てていましたが、VSCode標準の「行コピー」機能が非常に便利だったため、記号入力を Ctrl+Alt+ 系に変更しました。

重要な教訓: VSCodeの標準機能を優先し、カスタマイズはそれを補完する形で設計するのが効率的です。

メリット・デメリット

メリット

✓ サクラエディタの操作感を維持

  • 記録・再生の直感的なワークフローをそのまま移行できる
  • キーボード操作のみで完結

✓ 永続化と再利用が可能

  • settings.jsonに保存すれば、すべてのプロジェクトで利用可能
  • keybindings.jsonでショートカット化

✓ VSCodeの強力な機能と組み合わせ

  • スニペット変数で動的な値の挿入
  • when句で特定の条件下でのみ動作

✓ 拡張機能の管理が容易

  • プロジェクトごとに有効/無効を切り替え可能

デメリット

✗ マウス操作は記録できない

  • キーボード操作のみが対象

✗ 一部のダイアログは記録不可

  • VSCode自体のポップアップを跨ぐ操作には制限

✗ IMEとの干渉

  • 日本語入力モード中はショートカットが反応しないことがある

✗ 環境依存の問題

  • 日本語キーボードのOEM名称がPC/メーカーによって異なる場合がある

注意点と懸念事項

1. ショートカットの競合

問題: Ctrl+Alt+ 系のショートカットは、Windowsのシステムやグラフィックボードのユーティリティ(画面回転など)と競合する可能性があります。

対策: 特定のキーが反応しない場合は、IntelやNVIDIAの設定ツールを確認してください。

2. IMEとの干渉

問題: IMEが「あ」モード(日本語入力モード)のままだと、キーボードイベントがIMEに奪われて、ショートカットが動作しないことがあります。

対策:

  • ショートカットを押す前にEscでIMEをオフ
  • 英数入力モードに切り替える習慣をつける

3. PC環境による違い

問題: ノートPCやメーカー製キーボードでは、OEMキー名称が異なる場合があります(例: oem_7oem_8など)。

対策: Ctrl + KCtrl + Kでの確認を必ず行う

4. 拡張機能の影響

セキュリティとプライバシー:

  • 拡張機能はエディタ内のテキストを読み取る権限を持つ
  • Keyboard Macro Betaはオープンソースで実績あり

パフォーマンス:

  • 拡張機能が増えるとVSCodeの起動が遅くなる可能性
  • 「ヘルプ > プロセス エクスプローラー」で負荷を確認可能

メンテナンスリスク:

  • 「Beta」版のため、将来的な仕様変更の可能性

5. サクラエディタとの違い

  • ファイル形式: サクラエディタは1マクロ1ファイル(.mac)、VSCodeは設定ファイル内に記述
  • 互換性: .macファイルをそのまま読み込むことは不可
  • 動作原理: サクラエディタは「再生」、VSCodeのスニペットは「直接挿入」

実際の運用のヒント

1行形式での管理

keybindings.jsonでは、1行形式で記述すると管理が容易です。

// コメントでキーの説明を残す
{"key": "ctrl+alt+oem_comma", "command": "editor.action.insertSnippet", "when": "editorTextFocus", "args": {"snippet": "■"}}, // ■を記入

メリット:

  • 新しいショートカットの追加が簡単
  • コピー&ペーストで整理が容易
  • コメントで後から見返しやすい

プロジェクトごとの制御

特定のプロジェクトでのみ拡張機能を有効にしたい場合:

// .vscode/extensions.json
{
  "recommendations": [
    "tshino.kb-macro"
  ]
}

試行錯誤の方法

  1. 一度インストールして試用
  2. 動作が重いと感じたら「無効化」して比較
  3. 不要な拡張機能は積極的にアンインストール

まとめ

VSCodeにはサクラエディタのような標準のマクロ機能はありませんが、Keyboard Macro Beta拡張機能を導入することで、同等の操作感を実現できます。

移行のポイント:

  • Ctrl + KCtrl + Kで物理キー名を確実に特定
  • VSCode標準機能を優先し、カスタマイズは補完的に
  • 1行形式+コメントで管理しやすいkeybindings.jsonを作成
  • IMEとの干渉に注意

実際に試してみて:

  • 標準機能の「行コピー」(Shift+Alt+↑/↓)が予想以上に便利
  • 日本語キーボード特有の問題は確実に解決可能
  • 一度設定すれば、サクラエディタ以上の快適さも実現可能

サクラエディタからVSCodeへの移行を検討している方は、ぜひ本記事を参考に、自分に最適なマクロ環境を構築してください。個別のマクロ実装については、冒頭でリンクした記事も合わせてご覧ください。

参考情報

コメント