按 ctrl+q(windows/linux)或 cmd+q(macos)隐式启动宏录制,状态栏闪现“recording macro”即开始;仅捕获键盘操作,鼠标点击、切换标签页等会中断录制。

怎么开始录制一个宏:不是点点点,而是按 Ctrl+Q
Sublime 的宏录制没有“开始录制”弹窗,也不是靠菜单点击触发——它靠的是快捷键隐式启动。你按一次 Ctrl+Q(Windows/Linux)或 Cmd+Q(macOS),状态栏右下角会闪一下 Recording macro,这就开始了。
- 录制只捕获键盘操作:光标移动(
Home、End、Ctrl+L)、输入(;)、删除(Ctrl+Shift+K)、多行选择(Ctrl+Shift+L)等都行 - 但以下动作会中断录制或录进无效指令:
Ctrl+F(弹出查找框)、Ctrl+Shift+P(命令面板)、鼠标点击、切换标签页、保存文件 - 光标起始位置必须可预测:比如你想在每行末尾加分号,就别把光标停在中间某个词上再录;统一从行首或任意字符前开始,回放才稳定
为什么保存后快捷键没反应:路径、命令名、键位三处全得对
保存宏文件只是第一步,绑定快捷键失败,90% 出在三个硬性细节上:
-
"command"必须是小写"run_macro_file",写成"Run_Macro_File"或"run-macro-file"都不认 -
"file"值必须是完整包路径,例如"Packages/User/add_semicolon.sublime-macro";不能写"./add_semicolon.sublime-macro",也不能写本地绝对路径(如C:...) - 快捷键组合里不能单独用
Shift:像["shift+;"]是无效的;推荐用["ctrl+alt+;"]或["ctrl+alt+m"]这类稳定组合 - 保存后务必确认文件真在
Packages/User/目录下:通过Preferences → Browse Packages…打开该文件夹,直接看到你的.sublime-macro文件才算落地
宏文件本质是 JSON,手动编辑比重录更高效
你打开 Packages/User/xxx.sublime-macro,看到的就是一串清晰的动作数组,比如:
[{"command": "move_to", "args": {"to": "eof"}}, {"command": "insert", "args": {"characters": ";"}}]这意味着你可以:
- 删掉某步:比如去掉最后的
{"command": "move", "args": {"by": "lines", "forward": true}},让它不自动跳到下一行 - 复制粘贴命令块:宏本身不支持循环,但你可以把同一段操作复制三次,实现“执行三遍”的效果
- 插入
{"command": "select_line"}来强制每次基于整行操作,避免因光标位置偏差导致错行 - 注意:所有
command名必须是 Sublime 原生支持的text_command,插件命令(如side_bar_files)不能用
什么情况下不该用宏:遇到判断逻辑就该停手
宏只适合线性、无分支、步骤固定的编辑任务。一旦出现“如果这行含数字就加引号,否则跳过”这类条件判断,宏就无能为力了。
- 它适合:给多行末尾加
;、批量注释/取消注释、包裹选中内容为 HTML 标签、统一缩进或删空行 - 它不适合:按正则匹配筛选行后再处理、跨文件操作、需要读取当前文件名或语法类型做决策
- 真有这类需求,该写 Python 插件——宏不是万能胶,它是螺丝刀,不是电钻
宏不难,但容易卡在“录对了却跑不通”这种细节里。最常被忽略的,是录制时混进了鼠标操作,或保存后没去 Packages/User/ 里确认文件是否真存在。










