什么是 VS Code 工作区?
Visual Studio Code 工作区 是在 VS Code 窗口(实例)中打开的一个或多个文件夹的集合。在大多数情况下,你会打开一个文件夹作为工作区。但是,根据你的开发工作流,你可以包含多个文件夹,使用一种称为多根工作区的高级配置。
工作区的概念使 VS Code 能够:
- 配置仅适用于特定文件夹的设置,而不影响其他文件夹。
- 持久化仅在该工作区上下文中有效的任务和调试器启动配置。
- 存储和恢复与该工作区相关的 UI 状态(例如,打开的文件)。
- 仅为该工作区选择性地启用或禁用扩展。
你可能会在 VS Code 文档、问题和社区讨论中看到“文件夹”和“工作区”这两个术语互换使用。可以将工作区看作是具有额外 VS Code 知识和功能的项目的根。
注意:也可以在没有工作区的情况下打开 VS Code。例如,当你通过从平台的**文件**菜单中选择一个文件来打开一个新的 VS Code 窗口时,你将不会在工作区内。在这种模式下,VS Code 的某些功能会受限,但你仍然可以打开和编辑文本文件。
如何打开 VS Code “工作区”?
你可以通过使用**文件** > **打开文件夹...** 菜单,然后选择一个文件夹来打开工作区。
或者,如果你从终端启动 VS Code,可以将文件夹的路径作为 code
命令的第一个参数来打开。例如,使用以下命令在 VS Code 中打开当前文件夹 (.
):
code .
单文件夹工作区
除了用 VS Code 打开文件夹之外,你不需要做任何事情来让一个文件夹成为 VS Code 工作区。一旦你打开一个文件夹,VS Code 会自动跟踪配置,例如你打开的文件或编辑器布局。当你在 VS Code 中重新打开该文件夹时,编辑器将恢复到你上次离开时的状态。
你还可以添加其他特定于文件夹的配置,例如工作区特定的设置(相对于全局用户设置)、任务定义和调试启动文件(参见下文的工作区设置部分)。
在 VS Code 中打开的单文件夹工作区
多根工作区
多根工作区是 VS Code 的一项高级功能,允许你将多个不同的文件夹配置为同一工作区的一部分。你不是打开一个文件夹作为工作区,而是打开一个 <name>.code-workspace
JSON 文件,该文件列出了工作区的所有文件夹。例如:
{
"folders": [
{
"path": "my-folder-a"
},
{
"path": "my-folder-b"
}
]
}
在 VS Code 中打开的多根工作区
注意:打开一个文件夹与打开一个
.code-workspace
文件在视觉上的差异可能很细微。为了提示你已经打开了一个.code-workspace
文件,用户界面的某些区域(例如,文件资源管理器的根目录)会在名称旁边显示一个额外的**(工作区)**后缀。
无标题多根工作区
你可以灵活地在工作区中添加或删除文件夹。首先在 VS Code 中打开一个文件夹,然后根据需要添加更多文件夹。
用于在工作区中添加或删除文件夹的文件资源管理器上下文菜单
除非你已经打开了一个 .code-workspace
文件,否则当你第一次向工作区添加第二个文件夹时,VS Code 会自动创建一个*无标题*工作区。在后台,VS Code 会自动为你维护一个 untitled.code-workspace
文件,其中包含当前会话中的所有文件夹和工作区设置。该工作区将保持*无标题*状态,直到你决定将其保存到磁盘。
在 VS Code 中打开的无标题多根工作区
注意:无标题工作区和已保存的工作区之间没有区别,只是无标题工作区是为了方便而自动创建的,并且会一直恢复,直到你保存它。当你关闭一个打开了无标题工作区的窗口时,VS Code 会(在征求你的确认后)自动删除无标题工作区。
工作区设置
工作区设置允许你在已打开的工作区上下文中配置设置。工作区设置总是会覆盖全局用户设置。它们物理上存储在一个 JSON 文件中,其位置取决于你是将文件夹作为工作区打开,还是打开了一个 .code-workspace
文件。
有关设置作用域及其文件位置的全面解释,请参阅设置文档。
单文件夹工作区设置
当你将文件夹作为工作区打开时,工作区设置存储在 .vscode/settings.json
中。
当文件夹作为工作区打开时的设置编辑器
多根工作区设置
当你打开一个 .code-workspace
作为工作区时,所有工作区设置都会被添加到 .code-workspace
文件中。
你仍然可以为每个根文件夹配置设置,设置编辑器将呈现第三个设置作用域,称为**文件夹设置**:
打开多根工作区时的设置编辑器
按文件夹配置的设置会覆盖在 .code-workspace
中定义的设置。
工作区任务和启动配置
与工作区设置特定于工作区类似,任务和启动配置也可以限定在工作区范围内。
根据你是将文件夹作为工作区打开还是打开了 .code-workspace
文件,工作区任务和启动配置的位置要么在 .vscode
文件夹内,要么在 .code-workspace
文件内。此外,即使你打开了 .code-workspace
文件,任务和启动配置也始终可以在文件夹级别定义。
有关如何在 VS Code 中使用任务和启动配置的更全面概述,请参阅任务和调试章节。
常见问题
多根工作区相比于单个文件夹有什么好处?
最明显的优势是,多根工作区允许你处理多个可能未存储在磁盘上同一父文件夹中的项目。你可以从任何地方挑选文件夹添加到工作区。
即使你主要在基于单个文件夹的项目中工作,也可以从使用 .code-workspace
文件中受益。你可以在文件夹内存储多个 .code-workspace
文件,以根据不同场景提供项目的范围化文件夹视图(例如 client.code-workspace
、server.code-workspace
用于从文件资源管理器中过滤掉不相关的文件夹)。由于 .code-workspace
文件支持 folders
部分的相对路径,因此这些工作区文件对每个人都有效,无论文件夹存储在何处。
最后,如果对于某些项目,你想应用同一套工作区设置或任务/启动配置,可以考虑将这些添加到 .code-workspace
文件中,并从该工作区添加或删除这些文件夹。
为什么 VS Code 会在重启时恢复所有无标题工作区?
无标题工作区被设计为你必须明确决定保留与否的东西。第一次创建无标题工作区时,VS Code 会将指定的文件夹添加到工作区文件中,并添加所有现有的工作区设置。这些用户数据总是会被恢复并显示在 VS Code 窗口中,直到无标题工作区被保存或删除。
如何删除无标题工作区?
你可以通过关闭其窗口并拒绝保存无标题工作区的提示来删除无标题工作区。
我可以在没有文件夹的情况下使用多根工作区吗?
可以将 .code-workspace
文件的 folders
部分留空,这样你最终会得到一个不显示任何根文件夹的 VS Code 实例。在这种情况下,你仍然可以存储工作区设置,甚至任务或启动配置。
VS Code 支持项目或解决方案吗?
VS Code 没有像其他开发工具(如 Visual Studio IDE)中有时定义的那样的“项目”或“解决方案”的概念。你可能会在 VS Code 文档中看到“项目”这个词,但它通常意味着“你正在处理的东西”。根据你的编程语言或框架,工具集本身可能支持所谓的“项目”来帮助定义构建配置或枚举包含的文件。