什么是VS Code工作区?

Visual Studio Code 工作区是一组在 VS Code 窗口(实例)中打开的一个或多个文件夹。大多数情况下,你会打开一个文件夹作为工作区。不过,根据你的开发流程,你可以使用一种叫做多根工作区的高级配置,包含多个文件夹。

工作区的概念使 VS Code 能够:

  • 设置只能针对某个或多个文件夹,而不适用于其他文件夹。
  • 持久化任务,调试器启动仅在该工作区上下文中有效的配置。
  • 存储并恢复与该工作区相关的UI状态(例如,打开的文件)。
  • 选择性地只为该工作区启用或禁用扩展。

你可能会在 VS Code 文档、问题和社区讨论中看到“文件夹”和“工作区”这两个术语被交替使用。把工作区看作是一个项目的根源,拥有额外的VS Code知识和能力。

注:也可以在没有工作区的情况下打开 VS Code。例如,当你通过从平台的文件菜单中选择文件打开新的 VS Code 窗口时,你不会进入工作区。在此模式下,VS Code 的一些功能有所限制,但你仍然可以打开文本文件并编辑它们。

我该如何打开 VS Code 的“工作区”?

你可以通过“文件>打开文件夹......菜单,然后选择一个文件夹来打开工作区。

或者,如果你从终端启动 VS Code,你可以把路径传递给文件夹,作为第一个参数代码打开命令。例如,使用以下命令打开当前文件夹(.) 带有 VS 代码:

code .

单文件夹工作区

你不需要做任何作,就能让一个文件夹变成VS Code工作区,只需用VS Code打开文件夹。一旦打开文件夹,VS Code 会自动跟踪配置,比如打开的文件或编辑器布局。当你在 VS Code 中重新打开那个文件夹时,编辑器会恢复到你之前离开时的状态。

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

单文件夹工作区

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

多根工作区

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

{
  "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,服务器代码-工作空间以过滤文件资源管理器中无关的文件夹)。因为.code-workspace文件支持相对路径文件夹这些工作区文件对所有人都适用,不管文件夹存放在哪里。

最后,如果你想对某些项目应用相同的工作区设置或任务/启动配置,可以考虑将它们添加到.code-workspace文件并添加或移除这些文件夹。

为什么 VS Code 在重启时会恢复所有未命名的工作区?

无标题工作区的设计就是你必须明确决定是否保留。第一次创建无标题工作区时,VS Code 会将指定的文件夹添加到工作区文件中,并添加所有现有的工作区设置。这些用户数据始终会被恢复并在 VS Code 窗口中显示,直到未命名的工作区被保存或删除。

我如何删除一个没有标题的工作区?

你可以通过关闭无标题工作区窗口并关闭保存无标题工作区的提示来删除。

我可以用没有文件夹的多根工作区吗?

可以保留文件夹一段.code-workspace文件为空,这样你会得到一个不显示任何根文件夹的VS Code实例。在这种情况下,你仍然可以存储工作区设置,甚至任务或启动配置。

VS Code 支持项目或解决方案吗?

VS Code 没有像其他开发工具(如 Visual Studio IDE)中定义的“项目”或“解决方案”概念。你可能会在VS Code文档中看到“项目”这个词,但它通常指的是“你正在做的事情”。根据你的编程语言或框架,工具集本身可能支持所谓的“项目”,帮助定义构建配置或枚举包含的文件。