如何在 VS Code 中手动编辑最近打开的文件列表?

nac*_*cab 10 visual-studio-code

我严重依赖该File: Open Recent\xe2\x80\xa6命令来打开常用文件,但昨天我的本地 Google 云端硬盘文件夹已移至新位置,现在我无法再通过“打开最近的”面板访问该文件夹中的任何文件,因为路径不匹配。

\n

修复方法很简单,只需将“/Google Drive/”替换为“/Google Drive/My Drive/”,但我不知道哪个文件包含最近打开的面板中显示的文件列表。

\n

我假设它在某个地方~/Library/Application Support/Code,但不确定在哪里。

\n

Eli*_*kel 8

前几天我也想知道同样的事情,并在寻找解决方案时发现了这一点,所以今天我花了一些时间进行调查。
自从您发布帖子以来已经过去了几周,所以希望这仍然对您有所帮助。
另外,我使用的是 Windows,对 macOS 不熟悉,但我认为调整解决方案应该很容易。

设置的位置
这些设置存储在以下文件中:%APPDATA%\Code\User\globalStorage\state.vscdb. 该文件是一个 sqlite3 数据库,用作键值存储。它有一个名为 的表ItemTable,相关键为history.recentlyOpenedPathsList

该值具有以下结构:

{
  "entries": [
    {
      "folderUri": "/path/to/folder",
      "label": "...",
      "remoteAuthority": "..."
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

要查看当前列表,可以运行以下命令:

sqlite3.exe -readonly "%APPDATA%\Code\User\globalStorage\state.vscdb" "SELECT [value] FROM ItemTable WHERE [key] = 'history.recentlyOpenedPathsList'" | jq ".entries[].label"
Run Code Online (Sandbox Code Playgroud)

修改设置
具体而言,我对更改其显示方式(标签)感兴趣,因此我将详细说明我是如何做到这一点的,但更新路径应该同样容易。这是我用来进行这些编辑的 Python 代码:

sqlite3.exe -readonly "%APPDATA%\Code\User\globalStorage\state.vscdb" "SELECT [value] FROM ItemTable WHERE [key] = 'history.recentlyOpenedPathsList'" | jq ".entries[].label"
Run Code Online (Sandbox Code Playgroud)

代码参考
作为参考(主要是为了我未来的自己),这里是相关的源代码区域。此处
读取设置。 按原样使用这些值(请参阅此处)。但是,当使用该页面时,该区域将填充至此处。在 中,标签的呈现方式略有不同:vscode snapshot 文件夹名称是链接,父文件夹是其旁边的文本。这是通过splitName方法完成的。
File->Open RecentGet StartedRecentsGet Started

笔记

  • 在摆弄设置文件之前,明智的做法是对其进行备份。
  • 我不确定 vscode 如何处理和缓存设置,因此我认为最好在进行任何更改之前关闭所有 vscode 实例。
  • 我还没有玩过太多,所以不确定需要 json 编码或 html 编码的字符将如何发挥作用。
  • 请记住,其他扩展可能会保存某些状态,因此如果发生任何奇怪的情况,请将其归咎于此。
  • 作为参考,我使用的是 vscode 1.74.2。

链接