z33*_*33k 8 workspace visual-studio-code vscode-settings
我认为 VS Code 将所有相关的元数据保存在.vscode文件夹和.code-workspace文件中,因为这些都包含在工作区文件夹中,所以我认为它们都是独立的,移动时不会引起问题。但显然我大错特错了。
将我的工作区文件夹移动到新位置并相应地更改保存在.code-workspace文件中的文件夹路径后,所有打开的编辑器窗格和底部面板都消失了。我现在拥有的是一个不错的欢迎窗口。
我知道官方指南推荐的内容,但这只是移动.code-worskpace图元文件 - 文件夹仍然保留在原位。
我刚刚遇到了同样的问题。我的工作区根本没有保存到文件中(我只是在每个项目文件夹上使用“使用代码打开”选项),并且“将工作区另存为”选项没有帮助,因为它只是创建了一个带有几个空的 JSON 文件其中的对象(这可能是有道理的,因为我没有真正修改任何工作区设置,我只想保留我打开的编辑器和类似的东西)。
至少在 Windows 上,似乎这些类型的“工作区”设置实际上存储在%APPDATA%\Code\User\workspaceStorage 的子文件夹中,并且使用 SQLite 数据库文件来存储实际设置,所以这就是我结束的做:
将您的文件夹移动到磁盘上的新位置(首先关闭所有 VS Code 窗口)
使用 VS Code 打开新文件夹位置(在此阶段您将只获得欢迎选项卡,但我们只需要它来为新位置创建设置存储文件夹)。然后再次关闭VS代码。
在文件资源管理器中打开%APPDATA%\Code\User\workspaceStorage,进入每个子文件夹并打开workspace.json(在任何旧的文本编辑器中)。至少在我的情况下,它只包含一个文件夹属性,它是与此设置文件夹相关的文件夹的路径(但只是更改它根本不会帮助我们,这是我尝试的第一件事)。使用它来确定这些子文件夹中的哪些与旧路径和新路径相关。
复制state.vscdb从旧到新,并删除state.vscdb.backup在新的。
在某种 SQLite 数据库文件编辑器中以new 方式打开state.vscdb(我使用DB Browser for SQLite并且运行良好,但也有SQLiteStudio,它看起来总体上可能更好)。
运行 UPDATE 查询以更新数据库中的所有路径。它们似乎以三种不同的格式/转义级别存储 - 文件夹之间可以有一个正斜杠、两个反斜杠或四个反斜杠。在我的情况下,我想将我的项目文件夹从我的 Windows 用户文件夹的根目录移动到我在 OneDrive 中的常用文档文件夹中,所以我的查询如下所示,因为我只需要更改每个文件夹的中间部分小路。例如,如果您要移动到不同的驱动器,则可能需要做一些更复杂的事情(需要查看数据库中的所有现有路径以了解它们是如何编码的)。
UPDATE `ItemTable` SET `value` = REPLACE(REPLACE(REPLACE(`value`, 'User/Project', 'User/OneDrive/Documents/Project'), 'User\\Project', 'User\\OneDrive\\Documents\\Project'), 'User\\\\Project', 'User\\\\OneDrive\\\\Documents\\\\Project')
Run Code Online (Sandbox Code Playgroud)
保存数据库后,我刚刚在 VS Code 中打开了新文件夹,一切似乎都像在旧位置一样加载了:)
(另外,以防万一有人好奇,workspaceStorage 中的子文件夹名称似乎是基于路径的某种散列,因为如果您删除与之前在 VS Code 中打开的文件夹相关的子文件夹,然后打开该文件夹再次在代码中,它重新创建相同的子文件夹名称。这意味着仅更新旧的 workspace.json 和就地数据库文件将不起作用)
| 归档时间: |
|
| 查看次数: |
3425 次 |
| 最近记录: |