真正多根工作区需满足:状态栏左下角显示[workspace]标识、资源管理器顶部列出多个独立根文件夹、右键有remove folder from workspace选项;否则为单文件夹模式,所有功能仅作用于唯一根目录。

怎么判断当前是单文件夹还是多根工作区?
看状态栏左下角有没有 [Workspace] 标识——没有就是单文件夹模式,所有功能(比如 Ctrl+P 搜索、Ctrl+Shift+F 全局搜索、调试配置加载)都只作用于那个唯一根目录;有则说明正在使用 .code-workspace 文件,左侧资源管理器会显示多个并列的根分组。
右键任意一个项目文件夹,如果菜单里出现 Remove Folder from Workspace,说明它被正式识别为工作区根;如果只有 Reveal in Explorer 之类选项,那它只是子目录,不是根。
- 误拖文件夹进已打开窗口,VSCode 会弹提示“是否添加到当前工作区”,选“否”就白拖了,不会生效
- 即使资源管理器看起来展开了多个目录,只要没
[Workspace],就不是真多根 -
Ctrl+P搜不到某个项目的文件?先确认它是不是工作区里的根目录
保存和打开 .code-workspace 文件的实操要点
别用“添加文件夹到工作区”临时凑数——它不生成文件,关掉窗口就丢。真正可复用、可协作、可 Git 提交的,只有显式保存的 .code-workspace 文件。
创建时必须从空窗口开始:先关闭所有文件夹(File > Close Folder),确保状态栏清空,再执行 Workspaces: Create Workspace;路径务必用相对路径(如 "path": "../backend"),避免写死 /Users/xxx/project 这类绝对路径,否则换机器或 CI 环境直接失效。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 保存后双击该文件,或终端执行
code my-app.code-workspace才算完整加载 - 文件内容里
"folders"是必填项,"settings"是可选的,但建议只放工作区级通用配置(如editor.tabSize),不要塞项目专属设置 - 每个根目录下仍可保留自己的
.vscode/tasks.json和.vscode/launch.json,它们会被自动识别并启用
用命令面板快速切换最近项目,但别信默认列表
Workspaces: Open Recent(快捷键 Ctrl+R / Cmd+R)确实快,但它混排了单文件夹和 .code-workspace 文件,点错一个就回到单根模式,丢失多根上下文。
鼠标悬停在列表条目上,预览完整路径——确认结尾是 .code-workspace 再回车;右键条目选 Pin to Top,把高频工作区钉在最上面,防止被新打开的单文件夹刷下去。
-
Ctrl+P输入Recent:效果一样,但更易触发误操作(比如输成recently就没结果) - 没看到想要的工作区?可能它没被“打开过”——双击一次
.code-workspace文件,它才会进最近列表 - 这个列表不区分“工作区”和“文件夹”,全靠你肉眼识别后缀和路径
为什么不能靠拖拽或 File → Open Folder 切换项目?
拖文件夹进已有窗口,VSCode 只会把它当子目录处理:无法独立启用调试配置、Ctrl+P 搜不到、.vscode/settings.json 不生效、右键没 Remove Folder 选项——表面多目录,实际只有一个根。
而 File > Open Folder 会关闭当前上下文(已开的编辑器标签、终端、调试会话全丢),新开一个窗口或覆盖当前窗口,等于重来一遍。真正的“切换”,是复用当前窗口 + 加载新工作区配置。
- 想保留终端和调试状态?必须用
Workspaces: Open Workspace from File…或双击.code-workspace - 扩展启用状态是全局的,但行为由工作区
settings控制——比如一个工作区设"eslint.enable": true,另一个设false,互不干扰 - 别指望 VSCode 像浏览器那样
Ctrl+Tab轮转工作区——它没这机制,窗口 ≠ 工作区
[Workspace]、最近列表必须手动核对后缀——这三个点卡住,再多快捷键也救不了。










