sublime Text 无原生宏录制功能,其宏本质是手动编写的json命令序列;需用Tools: Record Macro开启记录、执行命令、Stop Recording后Save Macro保存为.sublime-macro文件,并通过run_macro_file调用,路径须为Packages/User/xxx.sublime-macro。

宏录制功能在 sublime text 里根本不存在
Sublime Text 没有原生的「宏录制」功能——你点不到「开始录制」「停止录制」按钮,也找不到对应菜单项。所有声称“一键录制宏”的教程,实际都是用其他机制模拟的。这点必须先说清,否则后续操作全会跑偏。
用 macro 文件 + run_macro_file 命令手动构造宏
Sublime 的“宏”本质是一组命令操作的 JSON 序列,保存为 .sublime-macro 文件,再通过 run_macro_file 调用。它不记录鼠标、不捕获输入,只记录你手动执行过的命令(比如 insert、move、toggle_comment)。
- 打开命令面板(
Ctrl+Shift+P/Cmd+Shift+P),输入Tools: Record Macro—— 这个命令只是开启「命令记录模式」,不是真录制屏幕行为 - 执行你要自动化的操作:比如按
Ctrl+/注释行、Ctrl+Shift+K删除行、输入return - 再打开命令面板,选
Tools: Stop Recording Macro - 立刻用
Tools: Save Macro保存为my_clean_up.sublime-macro(必须带后缀,且放在Packages/User/下才易管理)
注意:record_macro 不记录键盘输入字符(如打字 console.log),只记命令。想插入文本,得用 insert 命令并显式写入 args: {"characters": "console.log()"} 。
run_macro_file 调用时路径必须绝对或相对 Packages/
宏文件不能随便放。Sublime 只认两类路径:
- 绝对路径写法:
Packages/User/clean_up.sublime-macro(推荐,稳定) - 相对路径写法:
clean_up.sublime-macro(仅当宏和调用它的键绑定/插件在同一包内才有效) - 千万别写成
./clean_up.sublime-macro或完整系统路径,run_macro_file直接静默失败
绑定快捷键示例(在 Preferences > Key Bindings 中添加):
[ { "keys": ["ctrl+alt+c"], "command": "run_macro_file", "args": {"file": "Packages/User/clean_up.sublime-macro"} } ]
宏里调用命令的参数错一位就完全没反应
很多宏失效,是因为命令参数格式不对。比如你想用 move 把光标移到行首,但写成:
{"command": "move", "args": {"to": "bof"}}
这会失败——正确是 "to": "bol"(beginning of line),bof 是 beginning of file,语义不同,且部分版本根本不认 bof。
- 查命令参数唯一靠谱方式:打开
Command Palette→ 输入命令名 → 看右下角提示的args结构,或翻 官方命令文档 -
insert_snippet需要contents字段,不是text;set_setting必须配setting和value,漏一个就跳过 - 宏中命令顺序严格按执行顺序排列,没有条件分支、没有等待逻辑——想“先删空行再缩进”,就得确保删除命令真删掉了行,否则缩进可能作用在错误位置
宏不是脚本,它脆弱、线性、无反馈。稍微改了编辑器设置或插件行为,原来好用的宏就可能卡住或乱套。