vscode默认以“替换当前窗口”方式打开文件夹,故需用“add folder to workspace”添加多项目;各文件夹可配独立.settings.json,工作区设置优先级较低;终端不自动切换目录,调试须用${workspacefolder:xxx}指定cwd。

VSCode 打开多个文件夹后为啥只显示一个?
因为默认打开方式是「替换当前窗口」,不是「追加到工作区」。直接双击或拖拽文件夹进 VSCode 窗口,旧文件夹会被顶掉,看起来像“只支持一个项目”。
- 正确做法:用
File > Add Folder to Workspace...(不是Open Folder...)把其他项目加进来 - 如果已经打开了单个文件夹,先执行
File > Save Workspace As...生成.code-workspace文件,之后所有操作都基于这个工作区文件展开 - 误点
Open Folder...后,可以按Ctrl+K Ctrl+O(Windows/Linux)或Cmd+K Cmd+O(macOS)快速呼出「Add Folder to Workspace」面板
多文件夹工作区里怎么区分不同项目的设置?
每个文件夹可独立配置 settings.json,但必须放在对应文件夹下的 .vscode/settings.json 路径里;根级 .code-workspace 文件也能写 settings,但那是全局覆盖,容易混淆。
-
.vscode/settings.json是文件夹级设置,优先级高于工作区设置,适合配语言服务器路径、格式化选项等与项目强绑定的项 -
.code-workspace中的settings字段只影响整个工作区行为(比如"editor.tabSize": 2),不适合写"python.defaultInterpreterPath"这类路径依赖项 - 常见坑:在工作区设置里写了
"eslint.workingDirectories"却没加["./backend", "./frontend"],导致 ESLint 只扫第一个文件夹
终端自动切换到对应文件夹目录吗?
不会。VSCode 终端默认继承主窗口的工作区根路径(即 .code-workspace 所在目录),不是你当前打开的编辑器文件所属的子文件夹。
- 手动切:在终端里用
cd进入对应文件夹,或右键编辑器标签 →Open in Integrated Terminal - 自动切:安装扩展
Terminal Here或启用内置功能 —— 在资源管理器中右键文件夹 →Open in Integrated Terminal(需 VSCode 1.84+) - 注意:
Ctrl+Shift+`新建终端默认复用上一个终端的路径,不是当前活动编辑器路径
调试多个项目时 launch.json 怎么写?
不能只靠一个 .vscode/launch.json,得用 configurations + cwd 显式指定每个服务的运行目录,否则 Node.js 启动报 Cannot find module、Python 找不到 src 包都是常态。
- 每个
configuration必须设"cwd": "${workspaceFolder:backend}"(假设 backend 是你在工作区里添加的文件夹名) - 避免用
"cwd": "${fileDirname}",它依赖当前打开的文件,调试时容易错位 - 如果两个项目用不同 Node 版本,别只配
runtimeExecutable,还得在各自文件夹的.vscode/settings.json里设"node.debug.port"防端口冲突











