ctrl+shift+s(windows/linux)或 cmd+shift+s(macos)是 sublime text 内置的“另存为”快捷键,直接弹出对话框供选择路径、文件名和编码,不覆盖原文件、不自动推断扩展名,仅作用于当前活动标签页,且不触发保存类插件钩子;若需“保存全部”,须手动在用户键位配置中绑定 save_all 命令(如 "ctrl+shift+alt+s"),或启用 "save_on_focus_lost": true 实现静默自动保存。

Ctrl+Shift+S(Windows/Linux)或 Cmd+Shift+S(macOS)就是“另存为”快捷键
这不是需要配置的功能,而是 Sublime Text 内置的默认行为。按下该组合键后,会直接弹出“另存为”对话框,让你选择路径、文件名和编码格式——它不会覆盖原文件,也不会自动推断扩展名,一切由你手动确认。
常见错误现象包括:误以为这是“保存全部”,结果弹窗后才发现是另存为;或者在未命名的新建文件上连按两次 Ctrl+Shift+S,导致生成多个副本(如 untitled、untitled (1))。
- 只对当前活动标签页生效,不影响其他已打开文件
- 若当前文件从未保存过(即标题栏显示
untitled),该快捷键等价于首次保存 - 若文件已存在且有修改,它仍会打开另存为窗口,而非直接保存到原位置
- 不触发任何插件钩子(如
on_pre_save或on_post_save),因为这不是“保存”,而是“另存为”操作
想用快捷键保存全部已修改文件?得自己绑定 save_all
Sublime Text 默认没把 save_all 命令绑定给任何快捷键,Ctrl+Shift+S 从一开始就被占用了。所以你不能靠改设置来“修复”原有快捷键,只能新增一个。
操作路径:菜单 Preferences → Key Bindings,在右侧用户配置区添加一行:
{ "keys": ["ctrl+shift+alt+s"], "command": "save_all" }
推荐加个 alt(或 option on macOS)避免冲突。别硬覆盖 Ctrl+Shift+S,否则你会失去“另存为”能力,且菜单项 File → Save All 仍可用但快捷键失效。
-
save_all只保存已修改、已命名、非只读的文件,跳过其他类型,不报错也不提示 - 它不保存未激活标签页里的改动?错——只要文件处于打开状态且被修改,就会被保存
- 如果项目里混着 Git 未跟踪的新文件,它们不会被
save_all处理,除非你先手动保存过一次
为什么 File → Save All 能用,但快捷键不行?
菜单项调用的是内置命令 save_all,而快捷键系统是独立配置层。Sublime 启动时加载默认键位(Default.sublime-keymap),里面根本没写 save_all 的绑定。你看到菜单能点,是因为 UI 层直接调用了命令,和快捷键表无关。
这也是最常被忽略的一点:快捷键是否生效,只取决于用户键位文件(User.sublime-keymap)里有没有对应条目,跟菜单是否存在毫无关系。
- 检查是否误删了用户键位文件中的大括号或逗号,导致整个 JSON 解析失败(这时所有自定义快捷键都无效)
- Linux 用户注意:某些桌面环境会劫持
Ctrl+Shift+S(比如截图工具),需在系统设置中禁用冲突热键 - macOS 上
Cmd+Shift+S若无效,先确认是否开启了“全键盘访问”(系统设置 → 键盘 → 快捷键 → 键盘)
更省事的办法:save_on_focus_lost 自动保存
如果你真正怕的是切换窗口后忘记保存,而不是追求“一键”动作,那开启自动保存比绑快捷键更可靠。
进 Preferences → Settings,在右侧用户设置中加入:
"save_on_focus_lost": true
这样只要 Sublime 窗口失焦(比如你切到浏览器或终端),所有已修改文件立刻静默保存,不弹窗、不打断流程。
- 它只作用于已命名、非只读、有修改的文件,行为与
save_all一致 - 不会重复保存未改动文件,也没有性能负担(实测百个标签页下延迟可忽略)
- 唯一要注意的是:如果某文件被外部程序锁定(如日志文件正被 tail 占用),自动保存会失败,但不会报错——它就 quietly 跳过
save_on_focus_lost 这一步。快捷键绑定是补救方案,自动保存才是防丢底牌。尤其当你同时开着十几个配置文件、日志片段、临时脚本时,手动按任何键都容易漏——而失焦那一刻的保存,你根本感觉不到,但它确实发生了。











