确保多行操作被宏记录需全程用键盘操作,如ctrl+shift+l、ctrl+d等;鼠标拖选、面板交互、弹窗操作均不被记录;录制前应清空面板、隐藏侧边栏、光标置行首。

Ctrl+Q 录制时怎么确保多行操作被真正记下来
宏只认键盘命令,不认鼠标拖选或面板交互。想让多行操作进宏,必须全程用键盘完成:比如用 Ctrl+Shift+L 拆当前行、Ctrl+D 逐词选中、Ctrl+Shift+↓ 向下扩展多光标——这些都会被记录;但鼠标点三下选中三行,宏里什么都没有。
常见错误:
- 录制时点了侧边栏或切换了标签页 → 录制静默中断,后续动作全丢
- 按了
Ctrl+F弹出查找框 → 后续输入和回车都不录,宏在弹窗那一刻就停了 - 用
Ctrl+Shift+P打开命令面板但没选完命令就切走 → 宏里留下半截无效指令,回放直接报undefined
实操建议:
- 录制前先用
Esc清空所有面板,用Ctrl+K, B隐藏侧边栏 - 光标统一移到行首(
Ctrl+Home)再开始,避免回放时因起始位置偏移导致删错行 - 多光标选好后再执行编辑动作,比如全选后按
Delete,宏会记录“删除”而非“选中”
保存后 run_macro_file 调用失败的硬性条件
Sublime 不报错,只静默失败。90% 的问题出在路径、命名、后缀三处写错。
必须同时满足:
- 文件名以
.sublime-macro结尾,不能漏、不能多空格,比如add_semicolon.sublime-macro✅,add_semicolon.json❌ - 必须存到
Packages/User/目录下——通过Preferences → Browse Packages…打开该目录,把文件拖进去才算落地 - 调用时
run_macro_file的file参数必须写完整路径:"Packages/User/add_semicolon.sublime-macro"✅,不能是"add_semicolon.sublime-macro"或./User/...
大小写和斜杠也敏感:Windows 下必须用正斜杠 /,AddSemicolon.sublime-macro 和 add_semicolon.sublime-macro 是两个不同文件。
为什么多行回放只在第一行生效
宏默认是单点回放,不是批量处理器。哪怕你用 Ctrl+Shift+L 选中了 10 行,run_macro_file 也只在第一个光标位置执行一次。
解决方式只有两种:
- 手动提前布设多光标:比如把光标都放在每行开头,再运行宏;或者用正则选中
^后按Ctrl+Shift+L,确保每个光标都在安全起点 - 改用插件替代:装
MultiEditUtils,选中多行后Ctrl+Shift+P→MultiEdit: Run Command on Each Selection,它才是真正遍历多光标的方案
别指望宏自动识别“当前有几行选区”,它连自己录的是 Python 还是 Markdown 都不知道。
汉化环境下宏失效最隐蔽的坑
界面汉化本身不影响宏,但会误导操作习惯——尤其是看到“查找”“替换”菜单就下意识点开,结果录制当场中断。
关键区别:
-
Ctrl+F/Ctrl+H在汉化版里照样弹窗,但宏不录 UI 操作,一弹就断 - 状态栏显示“正在录制宏”是中文,字体小、闪得快,容易忽略;没看到不等于没录上,只要没报错,大概率已在录
- 中文字符宽高不一,
End跳到行尾后,→或Delete可能落在字中间而非字边界,回放效果比英文更难排查
最稳妥做法:全程避开所有面板,只用纯命令(find_under_expand、select_line 等),并把宏内容手动打开检查 JSON 是否合法——尤其删掉含 "command": "show_panel" 的行。











