VSCode原生不支持键盘宏,需依赖插件(推荐macros与multi-command)或内置多光标/命令面板模拟;系统级工具如AutoHotkey因兼容性差不推荐。

VSCode 里根本没内置键盘宏功能
VSCode 原生不支持录制/回放键盘宏——这不是你配置错了,是它确实没这个功能。官方至今没加,也明确表示暂无计划。想靠 Ctrl+Shift+P 搜 “record macro” 或 “macro” 都找不到对应命令,强行点会提示 command 'editor.action.startMacro' not found。
真正能用的方案只有两个:插件,或用 VSCode 自带的“多光标 + 命令面板”模拟简单宏效果。
装哪个插件最稳?推荐 multi-command + macros
别装名字带 “keyboard macro”“auto-macro” 的冷门插件,多数已停更、不兼容新版本、甚至有权限风险。目前最轻量、更新勤、无副作用的是:macros(作者: geddski)和 multi-command(作者: ryu1kn)。
它们不抢焦点、不监听全局按键、只响应你在 VSCode 内明确绑定的快捷键,适合日常高频操作,比如:选中一段 JSON 后自动格式化 + 复制缩进 + 贴到另一个文件末尾。
- 装好
macros后,在settings.json里加一段定义,例如:
"macros": {
"wrapInTryCatch": [
{ "command": "editor.action.insertLineAfter" },
{ "command": "default:type", "args": { "text": "try {" } },
{ "command": "editor.action.insertLineAfter" },
{ "command": "default:type", "args": { "text": "} catch (err) {" } },
{ "command": "editor.action.insertLineAfter" },
{ "command": "default:type", "args": { "text": " console.error(err);" } },
{ "command": "editor.action.insertLineAfter" },
{ "command": "default:type", "args": { "text": "}" } }
]
}
- 再在
keybindings.json绑定快捷键:Ctrl+Alt+T触发:{"key": "ctrl+alt+t", "command": "macros.wrapInTryCatch"} - 注意:所有
default:type命令里的换行要用\n显式写,不能靠回车;中文字符需确保编辑器编码为 UTF-8,否则可能乱码
为什么不用 AutoHotkey 或系统级宏工具?
这类工具能录任意操作,但对 VSCode 极不友好——它无法区分「当前编辑器是否聚焦」「光标是否在可编辑区域」「文件是否已保存」。常见翻车场景:
- 宏执行时弹出保存提示框,脚本卡住,后续步骤全错位
- 切换标签页后,
Tab键被浏览器或系统捕获,VSCode 没收到 - 输入法处于中文状态,
type命令输出一堆拼音或候选词 - 远程开发(SSH / WSL)下,系统级热键常被拦截或延迟,宏成功率断崖下跌
除非你只在单个本地项目、固定环境、且操作极度简单(如纯英文环境里反复敲 console.log();),否则不建议跨层介入。
替代方案:用 VSCode 自带功能“凑”出轻量宏
对 2–4 步以内的重复动作,比装插件更快——尤其适合临时应急。核心依赖三个能力:Ctrl+D(逐个选中相同词)、Ctrl+Shift+L(全文件多光标)、Ctrl+Shift+P 快速调命令。
- 比如批量给变量加前缀
is:
先Ctrl+F搜loading→Enter→Ctrl+Shift+L全选所有匹配 → 输入is,自动补到每个光标前 - 再比如统一删掉某行末尾注释:
Ctrl+Shift+P→ 输入editor.action.clipboardCutAction→ 回车,剪切当前行;再粘贴回来,就只剩代码部分(前提是注释都在行尾且格式统一) - 注意:
Ctrl+Shift+L对正则匹配结果无效,必须先手动选中一个再按Ctrl+D扩展;多光标数量超 100 时性能明显下降,别硬刚
真正的难点不在怎么录,而在于判断哪类操作值得固化——如果每两周才用一次,写插件配置反而浪费时间;但如果每天重复 5 次以上,哪怕只是删空行 + 格式化 + 保存三步,也值得花 10 分钟配好 macros。











