Sublime Text 的 Record Macro 功能可一键复用键盘编辑操作,但仅支持录制键盘和编辑动作,不支持菜单命令、条件逻辑或跨文件操作;正确录制需从典型起始位置开始、全程键盘操作、避免中断动作;宏文件为 JSON 格式,存于 Packages/User/ 目录,命令名和路径须严格匹配;遇判断、批量、正则等复杂需求应改用插件。

Tools → Record Macro 是 Sublime Text 内置的轻量自动化入口,无需插件、不写代码,就能把「选中→删空格→加引号→换行」这类操作一键复用。但它的能力边界很明确:只录键盘和编辑动作,不录菜单命令(如 Find → Replace)、不处理条件逻辑、不跨文件操作。
怎么正确录制一个可用的宏
关键不是“多按几下”,而是让每一步都可重放、位置可预测:
- 开始前,把光标放在**典型起始位置**(比如某行开头或任意字符处),避免依赖当前选区状态
- 全程用键盘操作:用
Home/End而非鼠标定位;用Ctrl+L选整行,不用鼠标拖选 - 避免触发会中断录制的动作:比如
Ctrl+F(查找框弹出后宏就停了)、Ctrl+Shift+P(命令面板)、保存/关闭文件等 - 如果想在每行末尾加分号,推荐步骤是:
End→;→↓;而不是先选中再输入,否则下一行可能无法对齐
保存宏后为什么快捷键没反应
这是最常卡住的地方——路径写错、命令名拼错、或用了非法键组合:
-
"command": "run_macro_file"必须全小写,不能写成Run_Macro_File或run-macro-file -
"file"值必须是完整包路径,例如"Packages/User/add_semicolon.sublime-macro";不能写相对路径或本地绝对路径 - 快捷键组合里不能含
Shift单独出现(如["shift+;"]无效),推荐用ctrl+alt+;或ctrl+alt+m这类稳定组合 - 保存宏文件后,务必确认它真在
Packages/User/目录下(可通过Preferences → Browse Packages…打开该文件夹验证)
宏文件本质是 JSON,可以手动编辑
打开 Packages/User/xxx.sublime-macro,你会看到类似这样的结构:
[{"command": "move_to", "args": {"to": "eof"}}, {"command": "insert", "args": {"characters": ";"}}]
这意味着你可以:
- 删掉某条命令(比如去掉最后的
↓,让它不自动跳行) - 复制粘贴命令块,实现“重复执行三次”效果(宏本身不支持循环,但可展开)
- 插入
{"command": "select_line"}确保每次操作都基于整行,提高鲁棒性 - 注意:所有命令必须是 Sublime 原生支持的
text_command,不能调用插件命令(如side_bar_files)
什么场景下别用宏,该写插件
当出现以下任一情况时,说明宏已到极限,硬撑反而更费时间:
- 需要判断某行是否含特定字符串再决定是否加引号
- 要批量处理多个文件,而非当前活动标签页
- 操作涉及正则替换、网络请求、读取设置项等外部逻辑
- 希望在右键菜单或命令面板中以自然语言呈现(如“格式化 JSON 数组”)
这时候该切到 Tools → Developer → New Plugin…,用 Python 写个 TextCommand——宏只是起点,不是终点。










