VisualStudio 代码从不重新打开以前的文件或文件夹

我有这个问题的完全相反的问题: VisualStudio 代码始终重新打开以前的文件或文件夹

VSCode 似乎永远不会记住我以前打开的文件,并且总是以一个空窗口开始。我检查了一下,如果我的快捷方式偶然地具有参数“-n”(这将强制执行此行为) ,但是它不在那里。

有没有办法强制 VSCode 记住打开的文件和文件夹?

47021 次浏览

似乎,VsCode 只会记住打开的文件,如果您还有一个文件夹打开。 没关系,如果这只是一个虚拟文件夹的地方在您的驱动器-如果您打开文件夹之外的文件,他们也将被记住。

我不确定这是设计好的,还是个漏洞。

编辑: 这是一个 bug,在这里跟踪了“ a href = “ https://github.com/Microsoft/vscode/questions/207”rel = “ norefrer”>

编辑2: 综上所述,关于这个问题现在有两种解决办法:

已经实现了 Hot exit ,它可以恢复 VS Code 关闭之前没有保存的文件。 若要更改此设置,请使用以下设置:

files.hotExit: "onExit"

若要重新打开所有文件,请使用以下设置:

window.restoreWindows: "all"

但是这个 给你的发现仍然是一个悬而未决的问题。

...

你可以试试设置选项:

"window.reopenFolders": "all"

这应该可以重新打开关闭编辑器时打开的所有内容,但我还没有测试它。我通常喜欢不重新打开任何东西,所以我使用 none。默认值是 one

我已经尝试了 window.reopenFolders 选项,发现如果从桌面图标启动 VSCode,文件夹和文件将重新打开,但是如果我在资源管理器中点击一个文件并且它使用 VSCode 打开(当前没有运行 VSCode) ,以前的文件夹和文件将不会打开。我不确定是否有解决办法。

他们在2016年11月增加了 这个功能

下面是改变热退出行为的设置:

"files.hotExit": "onExit"

所以我也需要这个功能,现在只是

"window.restoreWindows": "none",

在设置中。

控制重新启动后重新打开窗口的方式。选择“ none”以总是以一个空的工作区开始,选择“ one”以重新打开上次工作的窗口,选择“文件夹”以重新打开所有已打开文件夹的窗口,或选择“ all”以重新打开上次会话的所有窗口。

浏览: 打开文件—— > 首选项—— > 设置并添加 "window.restoreWindows": "all" 到您的 setings.json 文件。 记住在前面的语句中添加逗号。

这将重新打开所有窗口,你已经打开在你的最后一次会议结束时。

这也可以在 VSCode 1.42(Q12020)意外关闭的情况下工作(比如 OS 更新的操作系统重新启动,或者任何 VSCode 被强制关闭的情况)。

参见 Vscode/第12058期(“定期保存 UI 状态以防止关机时丢失”)和 PR 87158提交54ab792,其中包括注释:

    // In some environments we do not get enough time to persist state on shutdown.
// In other cases, VSCode might crash, so we periodically save state to reduce
// the chance of loosing any state.
// The window loosing focus is a good indication that the user has stopped working
// in that window so we pick that at a time to collect state.

Bpasero 补充了 在这个问题上:

推动了一项改革(87158英镑) :

  • 每六十年拯救一次州政府
  • 当窗口失去焦点时保存状态

真正的解决办法是,Electron 提供 API 来检测 Windows 上的系统关闭情况(例如 电子/电子 # 15620的建议)。

当 VSCode 具有焦点并且 Windows 重启时,这些改变可能不会有帮助,但是在我的测试中,当任何非 VSCode 的 UI 弹出时,它会工作(例如,Windows 的一些应用更新的提示)。
我想这是目前我们能做的最好的了。


关于 第15949期中提到的 window.reopenFolders=all最后(2020年9月)评论说明它还没有解决。

在 VSCode 1.52中更新2020年11月 第15949期:

然后,window.restoreWindows 中的选项总和将是:

  • preserve (new) : 恢复所有窗口,与启动 VSCode 的方式无关
  • all : 所有窗口都会恢复,但是在文件或文件夹上启动 VSCode 时不会
  • folders : 只还原文件夹,但在文件或文件夹上启动 VSCode 时不还原文件夹
  • one : 只恢复一个窗口,但是在文件或文件夹上启动 VSCode 时不会恢复
  • 永远不会恢复任何窗口

我已推出 window.restoreWindows: preserve作为新的选择。
all仍然是默认值。

参见:

还原以前会话窗口的新设置

为现有的 window.restoreWindows设置保留一个新的设置值,可以强制在启动 VSCode 时还原在关闭 VSCode 之前打开的每个窗口,即使显式要求 VSCode 打开特定的文件夹或文件。

一个常见的例子是双击一个文件在 VSCode 中打开它或使用终端打开一个特定的文件或文件夹。
如果没有 window.restoreWindows: 在这种情况下保留,VSCode 将只打开指示的文件或文件夹,但不恢复任何其他窗口。


有了 VSCoe 1.60(2021年8月) ,你还可以:

保持编辑器处于打开状态,而不是在它们无法还原时关闭

到目前为止,当编辑器在重新加载窗口或重新启动应用程序后未能恢复时,编辑器将自动关闭,直到找到成功加载的编辑器。

这种行为可能导致令人沮丧的结果,其中一个精心创建的编辑器布局和安排是离开由于编辑器关闭。

在这个版本中,曾经成功打开的编辑器将不会关闭,即使它无法恢复。编辑器指出问题并提供重试操作的方法:

https://media.githubusercontent.com/media/microsoft/vscode-docs/vnext/release-notes/images/1_60/keep-editor-open.png

对我来说,vscode 中的设置已经是: "window.restoreWindows": "all",它仍然不打开以前的文件夹和打开软件的窗口。

我所做的就是设置 "window.restoreWindows": "none",关闭 vscode 并重新打开它,把它设置回 "window.restoreWindows": "all"。那我就没问题了。