VSCode原生不支持宏录制,最可靠方案是用multi-command扩展手动编排内置命令序列;需先安装扩展、在settings.json中定义command和sequence(含真实命令ID),再绑定快捷键,多光标可作轻量替代,系统级工具仅限特殊场景。

VSCode 原生不支持宏录制,所谓“一键录、一键播”的键盘流录制在 VSCode 里根本不存在——这不是配置问题,是功能缺失。
multi-command 扩展怎么配 sequence 命令序列
这是目前最可控的伪宏方案:把你要的操作拆成 VSCode 内置命令 ID,用 multi-command 拼起来执行。关键不是“录”,而是“查 ID + 排序 + 绑快捷键”。
- 先装扩展
multi-command(作者 ryuta46),重启后生效 - 打开
settings.json,加一段类似这样的配置:
"multiCommand.commands": [
{
"command": "myWrapInTryCatch",
"sequence": [
"editor.action.insertLineAfter",
"editor.action.clipboardPasteAction",
"editor.action.formatDocument"
]
}
]
-
sequence里的每一项必须是真实存在的命令 ID,可在命令面板(Ctrl+Shift+P)里搜到,右键选“复制 ID” - 别写错大小写或空格,比如
editor.action.formatDocument不是formatDocument或editor.format.document
哪些 VSCode 命令能放进 multiCommand,哪些会崩
不是所有命令都适合串进 sequence。它只管发指令,不管上下文是否就绪;一旦某步失败(比如光标不在可编辑位置),后续全卡住。
- ✅ 安全可用:
editor.action.formatDocument、editor.action.commentLine、workbench.action.terminal.toggleTerminal - ❌ 高概率失效:
editor.action.insertSnippet(含 tab 跳转时焦点丢失)、git.commit(弹输入框阻塞)、editor.action.clipboardCopyAction(剪贴板状态不可控) - ⚠️ 要小心:
cursorLeft/cursorRight在中文/emoji 行里容易偏一个字符,建议改用cursorHome+editor.action.insertLineAfter这类语义化动作
多光标能不能当轻量宏用
能,而且很多时候比插件更直接——尤其当你操作对象是“文本结构”而非“UI流程”时。多光标本质是批量定位 + 单次输入,天然规避了命令执行时序问题。
- 想给 10 行末尾统一加
;?选中这 10 行 →Ctrl+Shift+L→ 输入; - 想在 JSON 的 key 前后加引号?用正则查找
\b\w+:→Ctrl+Alt+Enter全部选中 → 输入"$1" - 想对齐修改多行赋值?
Alt+Shift+拖拽列选 → 直接打新值,不用任何插件
注意:多光标无法处理“先删一行、再跳到下个函数头、再粘贴模板”这类跨步骤逻辑,那是 multi-command 的地盘。
为什么别碰 AutoHotkey / Hammerspoon 录制按键流
除非你真要模拟 Alt+Tab 切窗口、或在终端里按 Ctrl+C 中断进程——否则在 VSCode 里用系统级工具录宏,纯属给自己埋雷。
- 输入法切换时极易丢键(尤其中英文混输场景)
- VSCode 多光标/终端/侧边栏聚焦变化时,鼠标坐标和键盘焦点不同步,导致点错位置或粘贴到错误面板
- 升级 VSCode 后快捷键映射变更,宏脚本直接失效,还不好调试
真正难搞的,是那些既需要跨编辑器操作、又依赖精确时机的流程——这时候才该考虑系统级工具,而不是拿来替代 multi-command。


















