ctrl+k s 是两步顺序操作而非三键组合,先按 ctrl+k 松开再按 s,仅保存所有“脏”文件;清空草稿需先关闭全部编辑器(ctrl+k→w),再手动删除 backups 目录中的未保存快照。

Ctrl+K S 不是组合键,是两步顺序操作
很多人按 Ctrl+K+S(或 Cmd+K+S)没反应,本质是因为把它当成了“同时按三个键”。实际行为是:Ctrl+K 松开后,再单独按 S。VSCode 会识别这个 chord(和弦键),触发 workbench.action.files.saveAll 命令。
这个操作只保存所有已打开、且被标记为“脏”(dirty)的文件——也就是内容修改过但尚未保存的标签页。它不清理、不关闭、不删除任何东西,只是强制写入磁盘。
- 若某文件被外部程序改过但 VSCode 没检测到(比如 Git checkout 后未刷新),它不会被识别为 dirty,也就不会被保存
- UTF-8-BOM 或编码异常的文件可能跳过 dirty 判断,导致漏存
-
.gitignore里的文件即使打开并编辑,也不会进入 saveAll 范围
真正“清空草稿”得靠关闭 + 清理缓存双动作
VSCode 没有“一键丢弃所有未保存更改”的原生命令。所谓“清空草稿”,其实是两个独立动作:关闭所有未保存编辑器 + 清理本地临时备份。
关闭操作本身不会丢数据——VSCode 默认在 Backups 目录保留未保存文件的快照(路径见下文)。要彻底清空,必须手动删掉这些备份。
- 先执行
Ctrl+K→W(Windows/Linux)或Cmd+K→W(macOS),触发workbench.action.closeAllEditors - 然后去用户数据目录找
Backups文件夹:
Windows:%APPDATA%\Code\Backups
macOS:~/Library/Application Support/Code/Backups
Linux:~/.config/Code/Backups - 删掉整个
Backups目录——它只存未保存快照,删了不会影响已保存文件
自动保存 ≠ 自动清理,延迟设置很关键
"files.autoSave": "afterDelay" 是唯一能接近“自动落盘”的配置,但它默认只对当前焦点文件生效。真要覆盖全部打开文件,依赖的是 VSCode 1.84+ 的隐藏行为:只要编辑器失去焦点(比如切到终端、面板或外部窗口),就会批量保存所有 dirty 文件。
- 必须配
"files.autoSaveDelay": 1000(单位毫秒),太小(如100)会导致打字中途频繁写盘,尤其在远程开发(SSH/WSL)时网络延迟会让它卡顿 - 该行为只在单个工作区窗口内有效,多个 VSCode 窗口之间不共享焦点状态
- 如果文件被外部修改过且你点了“否”忽略磁盘变更提示,VSCode 会停用对该文件的 autoSave 监听,后续修改都不再触发保存
终端缓存和编辑器缓存得分开处理
很多人混淆“终端输出清屏”和“编辑器草稿清理”。Ctrl+K(macOS)或 Ctrl+L(Windows/Linux)只是视觉清屏,不影响历史缓冲区;而真正影响草稿残留的是 Cache 和 Backups 这两个目录。
-
Cache(路径同上)影响 UI 渲染和插件加载,删了重启后自动重建,但不会动你的代码 -
Backups才是未保存文件的“保险柜”,删它才等于清空草稿 - 远程开发场景下,
Backups可能落在远端机器上(比如 WSL 的/home/xxx/.config/Code/Backups),本地删无效
最易被忽略的是:VSCode 的“未保存文件”状态依赖文件系统事件监听,一旦监听失效(比如挂载点权限变化、杀毒软件拦截),Backups 里可能积攒大量陈旧快照,手动删前最好先确认是否还在被监听。











