Sublime Text宏是仅回放按键序列的JSON文件,须用Ctrl+Q/Cmd+Q录制、存于Packages/User/目录并以.sublime-macro为后缀,绑定快捷键需在Key Bindings中配置run_macro_file命令及完整路径。

Sublime Text 本身不支持“运行任意 Python 脚本”或“执行外部自动化命令”——它只提供两种原生自动化路径:宏(.sublime-macro)和插件(TextCommand/WindowCommand)。所谓“简单宏命令”,就是用键盘操作录制、保存为 JSON 文件、再通过 run_macro_file 回放的线性动作序列;它不是脚本,没有变量、条件、循环,也不调解释器。
怎么录一个真正能用的宏
宏只记录按键流,不理解语义。你录的是“End → ; → ↓”,回放时就真按这三个键,不管光标在哪、当前行有没有内容。
- 必须用
Ctrl+Q(Win/Linux)或Cmd+Q(macOS)启动,菜单项Tools → Record Macro响应慢且无状态反馈,容易误判是否已开始 - 全程禁用鼠标:拖选、右键、点侧边栏都会中断录制;用
Ctrl+L选整行、Ctrl+Shift+L拆多行、Home/End定位 - 中途弹出
Ctrl+F查找框或Ctrl+Shift+P命令面板,录制会静默终止,后续操作全丢 - 停止后立刻保存:按
Ctrl+Shift+P输入Save Macro,文件名只能是英文+下划线+.sublime-macro,例如add_semicolon.sublime-macro
为什么保存后快捷键没反应
90% 的失败源于路径或命令名写错,且 Sublime 不报错,只静默忽略。
-
"command"字段必须严格为小写run_macro_file,写成RunMacroFile或playback_macro都无效 -
"file"值必须是完整包路径:"Packages/User/add_semicolon.sublime-macro",不能省略Packages/User/,不能用相对路径或本地绝对路径 - 文件必须真实存在于
Packages/User/目录下——可通过Preferences → Browse Packages…打开该文件夹确认 - 绑定快捷键时,避免含单独
Shift的组合(如["shift+;"]),推荐["ctrl+alt+;"]
宏文件是 JSON,可以手动编辑
打开 Packages/User/xxx.sublime-macro,你会看到一串命令数组。这不只是备份,而是调试和微调的核心手段。
- 每条是形如
{"command": "insert", "args": {"characters": ";"}}的对象,所有命令都必须是 Sublime 原生text_command - 可删掉冗余步骤(比如去掉最后的
move避免跳行)、复制命令块模拟“重复三次”、插入{"command": "select_line"}强制以整行为单位操作 - 不能在里面写插件命令(如
side_bar_files)或自定义函数,会直接报错或静默失败 - 宏不处理选区逻辑:你录的是“对当前选区加括号”,那回放时必须已有选区;它不会自动找非空行或匹配正则
宏的本质是「可重放的键盘轨迹」,不是「可编程的自动化工具」。一旦需求涉及判断(如“只处理含 TODO 的行”)、批量(如“遍历所有打开文件”)、或上下文感知(如“在 JSON key 后自动补冒号”),就必须转向插件开发——用 sublime_plugin.TextCommand + view.substr() + view.replace() 才能可靠实现。

















