必须在settings.json中配置search.exclude为{"/node_modules": true, "/dist": true},路径须用**/前缀匹配任意层级,配置后需重载窗口生效;它仅影响Ctrl+Shift+F搜索,与files.exclude无关。

全局搜索时怎么跳过 node_modules、dist 这类目录?
VSCode 默认会搜整个工作区,包括构建产物和依赖目录,既慢又干扰结果。关键不是“能不能过滤”,而是必须通过 search.exclude 配置来实现——它只作用于全局搜索(Ctrl+Shift+F),不影响文件树或编辑器打开行为。
直接在设置里搜 search.exclude,点击「在 settings.json 中编辑」,添加规则即可:
{
"search.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/build": true,
"**/.git": true,
"**/coverage": true
}
}
注意:**/ 表示任意层级的子目录;值设为 true 才生效,写 false 或字符串会被忽略;路径区分大小写(Windows 下通常不敏感,但 CI 环境可能敏感)。
为什么改了 search.exclude 还是搜到了 dist 里的文件?
常见原因有三个:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 配置写在了用户级 settings.json 里,但当前是多根工作区(.code-workspace),实际生效的是工作区级配置 —— 必须检查右下角是否显示「工作区设置」,并确保修改的是对应位置
-
dist是由构建工具动态生成、且未被 Git 跟踪的目录,VSCode 有时会因缓存延迟未及时排除 —— 重启 VSCode 或执行命令Developer: Reload Window可解决 - 搜索时勾选了「也搜索已关闭的编辑器」或「使用正则表达式」等选项,可能绕过 exclude 规则 —— 关闭这些额外选项再试
想按项目单独配置,而不是全局统一过滤?
推荐用工作区设置(.vscode/settings.json),这样不同项目可差异化处理:
{
"search.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/tmp": true
}
}
如果项目用 Vite,可能还要加 "**/.vite";如果是 Python 项目,建议加上 "**/__pycache__" 和 "**/*.pyc"。注意:通配符不能写成 dist/**(这是反向匹配,VSCode 不认),必须是 **/dist。
files.exclude 和 search.exclude 有什么区别?
完全不同的两个开关:
-
files.exclude控制资源管理器(左侧文件树)是否显示某类文件/目录 —— 不影响搜索 -
search.exclude仅控制全局搜索范围 —— 不影响文件树显示 - 两者配置格式一样,但互不继承。如果希望“既不显示也不搜索”,就得同时配置两个字段
容易被忽略的一点:某些插件(比如 ESLint 或 Prettier)的临时输出目录(如 .eslintcache)默认不在任一 exclude 列表里,得手动加进去,否则可能意外匹配到缓存内容。

















