はじめに
サクラエディタからVSCodeへの移行を検討する際、最大の懸念の一つが「マクロ機能」です。サクラエディタの強力なキーボードマクロ(記録・再生)に慣れている場合、VSCodeで同等の機能が実現できるのか不安になります。
本記事では、実際にサクラエディタからVSCodeへ移行した経験をもとに、マクロ機能の実現方法と、その過程で遭遇した問題と解決策を詳しく解説します。
前提となる個別マクロの移行
具体的な個別マクロの実装については、以下の記事で詳しく解説しています。本記事は「マクロ機能そのもの」の実現方法に焦点を当てた内容となっています。

VSCodeの標準機能とマクロの現状
標準機能にマクロはない
残念ながら、VSCodeには**標準機能としてのキーボードマクロ(操作の記録・再生)**は搭載されていません。
3つの代替アプローチ
VSCodeでマクロ的な機能を実現する方法は以下の3つです。
1. 拡張機能を使う
- Keyboard Macro Beta (tshino.kb-macro) - 操作を記録して再生
- Macros (exceedsystem.vscode-macros) - 複数コマンドを組み合わせ
2. マルチカーソル機能で代用
VSCodeの強力なマルチカーソルで、多くの繰り返し作業を効率化できます。
| 操作 | Windows/Linux | macOS |
|---|---|---|
| 次の同じ単語を選択 | Ctrl + D | Cmd + D |
| 全ての同じ単語を選択 | Ctrl + Shift + L | Cmd + 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を選んだか
サクラエディタの「記録開始 → 操作 → 記録終了 → 再生」という直感的な操作感を最も忠実に再現できる拡張機能です。
インストール手順
- VSCode左側の拡張機能アイコンをクリック
- 検索バーに
tshino.kb-macroと入力 - 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に保存することで、恒久的に使用できます。
保存手順:
- マクロを記録(
Ctrl+Alt+R) - コマンドパレット(
Ctrl+Shift+P)を開く - 「Keyboard Macro: Copy Macro as Command Content」を実行
- クリップボードにマクロがコピーされる
settings.jsonへの登録
{
"kb-macro.commands": [
{
"name": "MyMacro",
"content": [
// ここにコピーした内容を貼り付け
]
}
]
}ショートカットキーへの割り当て
keybindings.jsonで特定のキーに登録したマクロを割り当てます。
{
"key": "ctrl+f1",
"command": "kb-macro.playback",
"args": { "name": "MyMacro" }
}日本語キーボード特有の問題と解決
問題:記号キーが反応しない
;(セミコロン)や:(コロン)などの記号キーをショートカットに使おうとすると、うまく動作しないケースがあります。
原因: VSCodeは物理キーを「OEMキー名称」で認識しており、日本語キーボードでは特殊な名前が割り当てられています。
解決方法:物理キー名を確認する
確実な特定手順:
- keybindings.jsonの編集画面で
Ctrl + Kを押してからCtrl + K(2回連続) - 「キーバインドの定義」入力ボックスが表示される
- 実際に目的のキー(例:
Alt + ;)を押す - 正しい物理キー名(例:
alt+oem_plus)が自動入力される - その名前を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_7がoem_8など)。
対策: Ctrl + K → Ctrl + 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"
]
}試行錯誤の方法
- 一度インストールして試用
- 動作が重いと感じたら「無効化」して比較
- 不要な拡張機能は積極的にアンインストール
まとめ
VSCodeにはサクラエディタのような標準のマクロ機能はありませんが、Keyboard Macro Beta拡張機能を導入することで、同等の操作感を実現できます。
移行のポイント:
Ctrl + K→Ctrl + Kで物理キー名を確実に特定- VSCode標準機能を優先し、カスタマイズは補完的に
- 1行形式+コメントで管理しやすいkeybindings.jsonを作成
- IMEとの干渉に注意
実際に試してみて:
- 標準機能の「行コピー」(
Shift+Alt+↑/↓)が予想以上に便利 - 日本語キーボード特有の問題は確実に解決可能
- 一度設定すれば、サクラエディタ以上の快適さも実現可能
サクラエディタからVSCodeへの移行を検討している方は、ぜひ本記事を参考に、自分に最適なマクロ環境を構築してください。個別のマクロ実装については、冒頭でリンクした記事も合わせてご覧ください。
コメント