vscode 的工作区(workspace)

@TOC

<math xmlns="http://www.w3.org/1998/Math/MathML"> O . 总述 : 如有疑问可留言沟通交流 O. 总述:^{如有疑问可留言沟通交流} </math>O.总述:如有疑问可留言沟通交流

Visual Studio Code 的 "workspace" 是在VSCode窗口(实例)中打开的一个或多个文件夹的集合,即工作区可以包含多个文件夹。

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

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

注意:

  • 可以在没有工作区的情况下打开 VSCode。例如,通过从 "File" 菜单中选择 "Open File" 来打开一个新的VSCode窗口时,将不在工作区内。在这种模式下,VS Code 的一些功能会减少,但仍然可以打开文本文件并对其进行编辑。

  • 相对于打开文件夹而言,打开 *.code-workspace 文件 会在用户界面某些区域(例如,文件资源管理器的根)的名称旁边显示了一个额外的(WORKSPACE)后缀。

<math xmlns="http://www.w3.org/1998/Math/MathML"> Ⅰ . 工作区类别 : 如有疑问可留言沟通交流 Ⅰ. 工作区类别:^{如有疑问可留言沟通交流} </math>Ⅰ.工作区类别:如有疑问可留言沟通交流

VSCode 的工作区分为如下两类:

$Ⅰ.1 单文件夹工作区(Single-folder workspaces)

打开文件夹后,VS Code 将自动跟踪打开的文件和编辑器布局等信息,以便在重新打开该文件夹时编辑器将保持原样。还可以添加其他特定于文件夹的配置,如特定于工作区的设置(相对于全局用户设置)、任务定义和调试启动文件。

$Ⅰ.2 多文件夹工作区(Multi-root workspaces)

多个文件夹(根文件夹)工作区是 VS Code的高级功能,允许您将多个不同的文件夹配置为工作区的一部分。生成一个 <name>.code-workspace JSON文件,列出了工作区的文件夹。例如:

json 复制代码
{
  "folders": [
    {
      "path": "my-folder-a"
    },
    {
      "path": "my-folder-b"
    }
  ]
}

可以先在 VS Code 中打开一个文件夹,然后根据需要添加更多文件夹。除非已经打开了 *.code-workspace 文件,否则第一次向工作区添加另一个文件夹时,VS code将自动创建一个"untitled"工作区。在后台,VS Code会自动维护一个 untitled.Code-workspace 文件,该文件包含当前会话中的所有文件夹和工作区设置。工作区将保持"untitled",直到用户决定将其保存到磁盘。

<math xmlns="http://www.w3.org/1998/Math/MathML"> Ⅱ . 工作区设置 : 如有疑问可留言沟通交流 Ⅱ. 工作区设置:^{如有疑问可留言沟通交流} </math>Ⅱ.工作区设置:如有疑问可留言沟通交流

工作区设置将覆盖全局用户设置(user settings),应用于工作区上下文。工作区设置的存储位置取决于工作区类别:

Ⅱ.1 设置项菜单(UI)

Ⅱ.2 设置项脚本(JSON)

工作区类别 描述 工作区设置的存储位置
Single-folder workspace 打开 单个文件夹 作为工作区 所有工作区设置将存储在 .vscode/settings.json
Multi-root workspace 打开 *.code-workspace 文件 所有工作区设置将添加到 *.code-workspace 文件中。(但依旧可以单独配置每个文件夹(根目录)的设置,编辑器的设置将显示第三个设置作用域范围,称为文件夹设置(Folder Settings),将存储在对应文件夹下的 .vscode/settings.json 中)

因此,vscode 的设置项 作用域划分等级如下图:

与工作区设置作用域特定于工作区的方式类似,tasks 和 launch 配置也限定在工作区的范围内。根据打开的是文件夹作为工作区 还是 .code-workspace 文件,工作区的 tasks 和 launch 配置文件将位于.vscode文件夹 或 .code-workspace 文件内。此外,tasks 和 launch 配置始终可以在文件夹级别配置 ,即使打开了 .code-workspace 文件也是如此。 有关如何在VScode中使用 tasks 和 launch 配置,可以参考 tasksdebugging

<math xmlns="http://www.w3.org/1998/Math/MathML"> Ⅲ . 潜在问 题 如有疑问可留言沟通交流 Ⅲ. 潜在问题^{如有疑问可留言沟通交流} </math>Ⅲ.潜在问题如有疑问可留言沟通交流

  • Q1. 与文件夹(Single-folder workspaces)相比,多根工作区(Multi-root workspaces)有什么好处?

A1: 最明显的优点是,多根工作区允许处理多个项目 ,可以将任意位置的文件夹添加到工作空间,这些项目可能不存储在磁盘上的同一根目录中。

即使是对于单个文件夹的项目,也推荐使用 .code-workspace 文件来管理项目配置。可以在文件夹中存储多个 .code-workspace 文件,以根据场景提供项目某些方面的作用域文件夹视图(例如,client.code-workspace、server.code-wworkspace,以从文件资源管理器中筛选出不相关的文件夹)。由于 .code-workspace 文件支持相对路径 ,因此这些工作区文件将适用于所有人,而与文件夹的存储位置无关。

最后,如果希望某些项目应用相同的工作区设置或 tasks / launch 配置集可以考虑将这些设置或任务添加到 .code-workspace 文件中,并从该工作区 添加/删除 这些文件夹。

  • Q2. 为什么VS Code会在重新启动时恢复所有无标题(untitled)的工作区?

A2: 无标题(untitled)工作区是为 明确决定是否保留而设计的。第一次创建无标题工作区时,VS Code 会将指定的文件夹以及所有现存的工作区设置添加到工作区文件中。在保存或删除无标题的工作区之前,此用户数据始终被还原并显示在 VSCode 窗口中。

  • Q3. 如何删除无标题的工作区?

A3: 可以通过关闭窗口并取消保存无标题(untitled)工作空间的提示来删除无标题工作区...

  • Q4. 可以使用没有文件夹的多根工作区吗?

A4: 可以.code-workspace 文件的文件夹部分保留为空,这样会得到一个不显示任何根目录的 VS code 实例。在这种情况下仍然可以存储工作区设置,甚至 tasks / launch 配置...

  • Q5. VS Code支持 项目(projects) 或 解决方案(solutions) 吗?

A5: VSCode 没有"项目"或"解决方案"的概念 (项目 或 解决方案 有时在其他开发工具中定义,例如Visual Studio IDE)。可能会在VSCode文档中看到"项目"一词,但它通常意味着"你正在做的事情"。根据编程语言或框架,工具集本身可能支持称为"项目"的东西,以帮助定义构建配置或枚举包含的文件。...

<math xmlns="http://www.w3.org/1998/Math/MathML"> Ⅳ . 友情链 接 如有疑问可留言沟通交流 Ⅳ. 友情链接^{如有疑问可留言沟通交流} </math>Ⅳ.友情链接如有疑问可留言沟通交流

  1. Visual Studio Code文章专栏
  2. Visual Studio文章专栏
  3. 点云文章专栏

文章撰写不易,转载请标明出处!
如果感觉本文对您有帮助,请留下您的赞,您的支持是我坚持写作分享的最大动力,谢谢!

References
0. Workspaces in Visual Studio Code
1. Tasks in Visual Studio Code
2. Debugging in Visual Studio Code
可以肯定的是学海无涯,这篇文章也会随着对 vscode 的深入学习而持续更新,
欢迎各位在评论区留言进行探讨交流。

相关推荐
芯橦1 天前
【瑞昱RTL8763E】音频
单片机·嵌入式硬件·mcu·物联网·音视频·visual studio code·智能手表
行十万里人生6 天前
信号处理: Block Pending Handler 与 SIGKILL/SIGSTOP 实验
c++·后端·深度学习·ubuntu·serverless·信号处理·visual studio code
奇点 ♡8 天前
【线程】线程安全的单例模式
linux·c语言·c++·安全·单例模式·visual studio code
羊小猪~~10 天前
C/C++语言基础--C++运算符重载以及其重载限制
java·c语言·开发语言·c++·visualstudio·visual studio code
豆包MarsCode11 天前
豆包MarsCode IDE 搭建 VitePress 博客并使用 GitHub 部署
ide·人工智能·python·数据分析·github·visual studio code
奇点 ♡12 天前
【线程】POSIX信号量---基于环形队列的生产消费者模型
linux·运维·服务器·开发语言·c++·算法·visual studio code
自白12 天前
关于我是如何二次开发了 antd-vue 的a-range-picker组件,同时还添加了 vscod智能提示这件事
vue.js·visual studio code·ant design
奇点 ♡16 天前
【线程】线程的控制
linux·运维·c语言·开发语言·c++·visual studio code
羊小猪~~21 天前
C/C++语言基础--从C到C++的不同(上)
linux·c语言·c++·后端·qt·visualstudio·visual studio code
就是蠢啊25 天前
VScode 的简单使用
visual studio code