sublime宏通过快捷键隐式录制键盘操作,不支持鼠标和上下文判断,需严格按路径保存为.sublime-macro文件并正确绑定快捷键,其本质是机械回放、适用于线性文本处理任务。

Sublime 的宏不是“点一下开始录制”的图形化工具,它靠快捷键隐式触发、只录键盘流、不理解上下文——用对了省三分钟,用错了每回都卡在 Ctrl+D 上。
怎么开始录制:别点菜单,直接按 Ctrl+Q(Win/Linux)或 Cmd+Q(macOS)
Tools → Record Macro 菜单项在多数版本里只是摆设,实际不生效。真正可靠的入口只有快捷键:Ctrl+Q 按下即进录制状态,再按一次就停。状态栏右下角会闪一下 Recording macro,没看到说明没录上,或者已经停了。
- 录制中禁用鼠标——拖选、点击、
Ctrl+Click多光标操作全都不记录 - 不能打开命令面板(
Ctrl+Shift+P)、查找框(Ctrl+F)、侧边栏或保存文件,这些动作会让宏中断或存入无效指令 - 全程必须用键盘定位:用
Home/End、Ctrl+L选整行、Ctrl+Shift+→选词,别碰鼠标
为什么回放总出错:起始位置和上下文太敏感
宏本质是机械回放按键流,它不判断你当前在哪一行、有没有选中文本、光标在词中间还是行首。所以“同一宏在不同位置运行结果不同”是常态,不是 bug。
- 比如录制时是
→EnterCtrl+D,那回放时当前文件必须有匹配项,否则Ctrl+D无响应,光标卡住不动 - 多光标操作无法录制;但
Ctrl+D这类基于文本的增选可以,前提是上下文一致(比如都面对相同结构的 JSON key) - 如果想在每行末尾加分号,推荐步骤是
End→;→↓;而不是先选中再输入,否则下一行可能因缩进不齐而错位
怎么保存并绑定快捷键:路径写错 = 白干
刚录完的宏只存在内存里,关掉 Sublime 就丢。要长期用,必须立刻保存为 .sublime-macro 文件,且路径必须写对——这是最常卡住的地方。
- 保存路径必须是完整包路径:
Packages/User/add_semicolon.sublime-macro,不能只写add_semicolon.sublime-macro或./add_semicolon.sublime-macro - 快捷键绑定时,
"command": "run_macro_file"必须全小写,拼错(比如Run_Macro_File)就无效 - 快捷键组合里避免单独用
Shift,比如["shift+;"]不生效,改用["ctrl+alt+;"]更可靠 - 保存后务必通过
Preferences → Browse Packages…打开Packages/User/文件夹,确认文件真在那里
能不能手动改宏:可以,而且很值得
.sublime-macro 文件就是个 JSON 数组,打开就能看到每一步命令,比如 {"command": "insert", "args": {"characters": ";"}}。这不是黑盒,是可读、可调、可删的编辑流水账。
- 删掉某条命令:比如去掉最后的
{"command": "move", "args": {"by": "lines", "forward": true}},让它不自动跳下一行 - 复制粘贴命令块:宏不支持循环,但你可以把三行插入操作展开写三次,实现“重复三次”效果
- 插入
{"command": "select_line"}确保每次操作都基于整行,提高鲁棒性 - 所有命令必须是 Sublime 原生支持的
text_command,不能调用插件命令(如side_bar_files)
宏适合处理线性、无逻辑判断的任务,比如批量加前后缀、包裹标签、对齐 SQL 字段。一旦涉及条件分支、跨文件操作、正则动态替换,就得切到插件或命令面板——宏的边界就在那里,越界硬扛只会让问题更难排查。











