怎样设置vscode的自动保存与恢复【教程】

10次阅读

vs code自动保存与恢复需files.autoSave、files.hotExit、files.restorewindows协同控制;autoSave仅写入磁盘,hotExit决定退出时是否暂存未保存内容,restorewindows控制启动时是否还原窗口状态。

怎样设置vscode的自动保存与恢复【教程】

VS Code 的自动保存和恢复不是靠“开启某个开关”就能一劳永逸的,它由多个独立配置项协同控制,且行为会因文件是否已保存、是否在工作区、是否启用备份等条件而变化。直接改 files.autoSave 可能没效果,因为 files.hotExitfiles.restoreWindows 被禁用时,编辑器根本不会尝试恢复未保存内容。

如何让文件修改后自动写入磁盘(autoSave)

这是最常被误解的一点:自动保存 ≠ 自动存档。它只决定 VS Code 是否在切换焦点或一段时间后把当前缓冲区内容写入文件系统,不涉及崩溃恢复。

  • files.autoSave 有四个可选值:off(默认)、afterDelayonFocusChangeonWindowChange
  • 推荐设为 afterDelay,再配合 files.autoSaveDelay(单位毫秒,默认 1000),避免频繁写入影响性能
  • 注意:onFocusChange 在编辑器内点击不同 tab 时触发保存;onWindowChange 是切到其他应用时才保存,容易漏存
  • 未保存的文件(无路径的 untitled-* 文件)不会触发 autoSave,必须先执行一次“另存为”

为什么关掉 VS Code 后再打开,上次没保存的内容不见了

这取决于 files.hotExitfiles.restoreWindows 两个设置是否启用。它们控制的是“退出时是否暂存未保存内容”和“启动时是否还原上次窗口状态”,和 autoSave 无关。

  • files.hotExit 设为 onExitAndWindowClose(推荐),才能在关闭窗口或整个应用时保留未保存更改
  • files.restoreWindows 决定启动时是否还原上次打开的文件夹/窗口:all(全部还原)、one(仅一个窗口)、none(不还原)
  • 如果使用多窗口,每个窗口的恢复状态是独立的;但若 hotExitoff,哪怕 restoreWindowsall,未保存内容也早已丢弃
  • 崩溃场景下,VS Code 依赖本地临时备份(位于 $HOME/Library/application Support/Code/Backups%APPDATA%CodeBackups),此时 hotExit 必须为 onExitAndWindowClose 才会生成有效备份

哪些情况会导致自动保存与恢复失效

不是配置错了,而是某些操作或环境直接绕过机制。

  • 通过命令行用 code --newcode --reuse-window 启动时,可能跳过正常恢复流程
  • 文件被外部程序修改(如 git checkout、脚本覆盖),VS Code 默认会提示冲突,此时 autoSave 不会强行覆盖,需手动确认
  • 远程开发(ssh / WSL / Containers)中,hotExit 依赖本地客户端保存状态,远程端崩溃后无法恢复未同步的更改
  • 设置了 files.excludesearch.exclude 掩盖了备份目录,可能导致恢复时找不到临时文件

真正起作用的从来不是单个配置,而是 files.autoSave + files.hotExit + files.restoreWindows 三者的组合逻辑。尤其要注意 hotExit 的值——设成 offonExit(不包含 window close)时,关掉最后一个窗口就等于永久丢弃未保存内容。

text=ZqhQzanResources