VSCode“另存为”对话框默认打开最近操作的文件夹,由files.rememberLastOpenFolder控制并依赖本地state.vscdb缓存,不响应files.defaultSaveLocation设置。

VSCode 的“另存为”对话框默认打开哪?它不听 files.defaultSaveLocation
很多人改了 files.defaultSaveLocation,发现新建文件(Ctrl+N → Ctrl+S)确实去了指定位置,但一按 Ctrl+Shift+S(另存为),对话框还是弹在上次操作的文件夹——这很正常。files.defaultSaveLocation 只影响「新建未命名文件首次保存」的行为,而「另存为」完全由 VSCode 的路径记忆机制控制,和这个设置无关。
真正管用的是 files.rememberLastOpenFolder 和系统级缓存
VSCode 会记住你最近在「打开文件」「另存为」「添加文件到工作区」等操作中访问过的文件夹,并优先把对话框定位到其中最新那个。这个行为由以下两个配置共同决定:
-
files.rememberLastOpenFolder:设为true(默认)才启用路径记忆;设为false后,每次对话框都回到files.defaultSaveLocation或桌面 - 实际路径缓存存在本地数据库里,不是纯配置项能清空的——改配置后不会重置历史记录
所以如果你刚换电脑或想强制重置,不能只改设置,得手动清理缓存。
怎么彻底清空“另存为”对话框的历史路径?
VSCode 把最近打开/保存路径存在用户数据目录下的 SQLite 数据库里,直接删掉对应表即可。操作前先关掉所有 VSCode 实例:
- Windows:
%AppData%\Code\User\globalStorage\state.vscdb(注意不是state.vscdb-journal) - macOS:
~/Library/Application Support/Code/User/globalStorage/state.vscdb - Linux:
~/.config/Code/User/globalStorage/state.vscdb
用 DB Browser for SQLite 打开该文件,找到 ItemTable 表,删除 key 字段以 explorer.openedFolders 或 dialog.lastFolder 开头的行;或者更简单:直接删掉整个 globalStorage 文件夹(重启 VSCode 后会重建,仅丢失路径记忆,不影响扩展、设置等)。
为什么改了设置、清了缓存,下次另存为还是跳去奇怪的路径?
常见干扰源有这几个:
- 当前编辑器里正在看的文件所属文件夹:如果已打开一个位于
D:\project\src\index.ts的文件,Ctrl+Shift+S默认就跳去D:\project\src\,优先级高于任何记忆路径 - 工作区根目录:若当前是多根工作区,且焦点在某个子文件夹内,对话框可能跳去该子文件夹而非工作区根
- 远程开发(SSH/WSL)下路径映射错位:比如本地显示
/home/user/project,但真实路径是/mnt/c/Users/xxx/project,VSCode 有时会记混,导致对话框卡在不可达路径
这种情况下,最稳的办法是:先用资源管理器打开目标文件夹,再拖一个文件进 VSCode 编辑器——它会立刻把该路径记为“最近使用”,后续另存为就自然落到那里了。











