尝试以扩展 VS Code 中的代理模式!

什么是 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 中打开该文件夹时,编辑器将保持你之前离开时的状态。

你还可以添加其他特定于文件夹的配置,例如特定于工作区的设置(与全局用户设置相对)、任务定义调试启动文件(参见下面的工作区设置部分)。

Single-folder workspace

在 VS Code 中打开的单文件夹工作区

多根工作区

多根工作区是 VS Code 的一项高级功能,它允许你配置多个不同的文件夹作为同一工作区的一部分。你不是打开一个文件夹作为工作区,而是打开一个<name>.code-workspace JSON 文件,该文件列出工作区中的所有文件夹。例如:

{
  "folders": [
    {
      "path": "my-folder-a"
    },
    {
      "path": "my-folder-b"
    }
  ]
}

Multi-root workspace

在 VS Code 中打开的多根工作区

注意:打开文件夹与打开.code-workspace文件之间的视觉差异可能很微妙。为了提示你已打开.code-workspace文件,用户界面的某些区域(例如,文件资源管理器的根目录)会在名称旁边显示一个额外的(工作区)后缀。

无标题多根工作区

你可以在工作区中灵活地添加或删除文件夹。首先在 VS Code 中打开一个文件夹,然后根据需要添加更多文件夹。

File Explorer context menu, highlighting options to add or remove folders to the workspace

文件资源管理器上下文菜单用于在工作区中添加或删除文件夹

除非你已经打开了一个.code-workspace文件,否则当你第一次向工作区添加第二个文件夹时,VS Code 会自动创建一个无标题工作区。在后台,VS Code 会为你自动维护一个untitled.code-workspace文件,其中包含你当前会话中的所有文件夹和工作区设置。该工作区将保持无标题,直到你决定将其保存到磁盘。

Untitled multi-root workspace

在 VS Code 中打开的无标题多根工作区

注意:无标题工作区和已保存的工作区之间没有区别,除了无标题工作区是为了方便你自动创建的,并且在保存之前始终会恢复。当你关闭打开无标题工作区的窗口时,VS Code 会自动删除无标题工作区(在征求你确认后)。

工作区设置

工作区设置使你能够在已打开的工作区上下文中配置设置。工作区设置始终覆盖全局用户设置。它们以 JSON 文件的形式物理存储,其位置取决于你是将文件夹作为工作区打开,还是打开了.code-workspace文件。

有关设置范围及其文件位置的全面解释,请参阅设置文档。

单文件夹工作区设置

当你将文件夹作为工作区打开时,工作区设置存储在.vscode/settings.json中。

Single-folder workspace settings

当文件夹作为工作区打开时的“设置”编辑器

多根工作区设置

当你将.code-workspace作为工作区打开时,所有工作区设置都将添加到.code-workspace文件中。

你仍然可以按根文件夹配置设置,“设置”编辑器将显示第三个设置范围,称为文件夹设置

Multi-root settings

打开多根工作区时的“设置”编辑器

按文件夹配置的设置会覆盖.code-workspace中定义的设置。

工作区任务和启动配置

工作区设置特定于工作区类似,任务和启动配置也可以限定在工作区范围内。

根据你是将文件夹作为工作区打开,还是打开了.code-workspace文件,工作区任务和启动配置的位置位于.vscode文件夹内,或者位于.code-workspace文件内。此外,即使你打开了.code-workspace文件,任务和启动配置也始终可以在文件夹级别定义。

有关如何在 VS Code 中使用任务和启动配置的更全面概述,请参阅任务调试章节。

常见问题

多根工作区相对于文件夹有什么好处?

最明显的优势是,多根工作区允许你处理可能未存储在磁盘上同一父文件夹中的多个项目。你可以从任何位置选择文件夹添加到工作区。

即使你主要在一个基于单文件夹的项目中工作,你也可以从使用.code-workspace文件中受益。你可以在文件夹中存储多个.code-workspace文件,以根据场景(例如client.code-workspaceserver.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 文档中看到“项目”一词,但它通常指“你正在处理的东西”。根据你的编程语言或框架,工具集本身可能支持称为“项目”的东西,以帮助定义构建配置或枚举包含的文件。