VSCode中search.exclude需用glob模式且以/或/开头,如"/node_modules": true;search.include可限定搜索范围,files.exclude仅隐藏资源管理器文件而不影响搜索。

为什么改了 search.exclude 还是搜到 node_modules
最常踩的坑是路径写法无效:"node_modules": true 或 "node_modules/**": true 都不会起作用。VSCode 的 search.exclude 只认 glob 模式,且必须以 **/ 或 / 开头。
真正生效的是:
-
"**/node_modules": true—— 排除所有层级下的node_modules目录(推荐) -
"/node_modules": true—— 仅排除工作区根目录下的node_modules
注意:Windows 用户别写成 \node_modules,必须用正斜杠 /;**/node_modules/** 虽然合法,但多一层 /** 是冗余的,没必要。
如何让搜索只落在 src 和 include 下
用 search.include 做白名单,比靠 exclude “删减”更干净。它会强制搜索范围收缩到指定路径内,其他路径一概不扫。
在项目根目录的 .vscode/settings.json 中写:
{
"search.include": {
"${workspaceFolder}/src/**": true,
"${workspaceFolder}/include/**": true,
"D:/ThirdParty/OpenCV/include/**": true
}
}
说明:
-
${workspaceFolder}是当前工作区根路径,自动适配不同系统 - 绝对路径(如 OpenCV)也能加,但只对本项目生效,换机器需手动改
- 一旦设了
search.include,search.exclude仍有效,但它是“在 include 范围内再排除”
临时限定搜索:不用改配置,右键就能切目录
想快速查某个子目录,比如 packages/core,根本不用动 settings.json。
操作步骤:
- 在资源管理器里点中
packages/core文件夹 - 右键 → Find in Folder
- 这时搜索框底部会自动填入
**/packages/core/**(含 glob 前缀)
这个动作是临时的,关掉搜索面板就失效,不影响任何配置。适合高频切换、一次性排查场景。
files.exclude 和 search.exclude 到底有什么区别
这是最容易混淆的一点:files.exclude 完全不影响 Ctrl+Shift+F 搜索,它只控制左侧资源管理器是否显示文件。
换句话说:
- 你把
"**/node_modules": true写进files.exclude→ 左侧看不到node_modules,但全局搜索照样扫进去 - 只有写进
search.exclude→ 搜索时才真正跳过该路径
多根工作区下,每个子文件夹的 .vscode/settings.json 里的 search.exclude 是独立生效的,不能靠一个配置管全部。


















