sublime text 默认无 save_all 快捷键,ctrl+shift+s 实为 save_as;需手动在用户键位文件添加 {"keys": ["ctrl+shift+s"], "command": "save_all"} 才生效。

Sublime Text 默认不绑定任何快捷键到 save_all 命令,按 Ctrl+Shift+S(Windows/Linux)或 Cmd+Shift+S(macOS)实际触发的是“另存为”,不是保存全部——这是最常踩的坑。
为什么 File → Save All 有效但快捷键无效
菜单项 File → Save All 调用的是内置命令 save_all,它只保存当前已打开且被修改过的文件(跳过只读、未命名、未改动文件)。但 Sublime 默认没给这个命令分配快捷键,Ctrl+Shift+S 被预留给 save_as。你按了没反应或弹出另存为窗口,不是配置错了,是它本来就不该干这活。
- 所有平台都一样:无默认快捷键,必须手动绑定
-
save_all不保存未修改文件,也不报错,行为稳定 - 如果多个标签页来自不同项目,它仍会统一保存(只要在当前窗口中打开)
如何安全绑定 Ctrl+Shift+S 到 save_all
打开 Preferences → Key Bindings,在右侧用户键位文件中添加这一行(注意 JSON 语法):
{
"keys": ["ctrl+shift+s"],
"command": "save_all"
}
- 必须写在用户键位文件(右侧),不能改左侧默认设置
- 键名大小写敏感:
ctrl+shift+s不能写成Ctrl+Shift+S - 如果已有其他插件占用了该组合(如某些输入法),会冲突,可换为
ctrl+alt+s - 保存后立即生效,无需重启
save_on_focus_lost 能替代一键保存吗
能防丢,但不能替代 save_all 的主动批量操作场景。
-
"save_on_focus_lost": true只在你点击外部窗口(终端、浏览器、桌面)时触发一次保存,切换 tab 或 Sublime 内部窗口不触发 - 它不保证“所有文件都存”,只存当前窗口里已修改 + 可写 + 非 untitled 的文件
- 如果你需要确认某次编辑全部落盘(比如提交前、关机前),仍得手动按绑定好的
save_all快捷键 - 两者可共存:
save_on_focus_lost防意外,save_all快捷键保主动控制
自动保存插件 AutoSave 和 save_all 的关系
AutoSave 插件默认不接管 save_all 行为,它只响应自己的触发逻辑(空闲或失焦),和快捷键无关。
- 装了 AutoSave 后,
Ctrl+Shift+S绑定的save_all依然独立工作 - AutoSave 的配置入口是
Preferences → Package Settings → AutoSave → Settings – User,不是通用 User Settings - 若同时启用
save_on_focus_lost和 AutoSave 的auto_save_on_focus_lost,可能重复保存大文件,引发 I/O 卡顿 - 真正要“一改就存”只能靠 AutoSave,但它的延迟单位是毫秒(
auto_save_delay_milliseconds),且最低建议设 1500
最易忽略的一点:JSON 语法错误会让整个用户键位或设置失效——少一个逗号、引号没闭合、多一个逗号,save_all 快捷键就静默不工作,连错误提示都没有。验证时先改一行字,再切出窗口看是否保存,比反复检查配置更直接。











