正确写法是"/.log": true,因vscode search.exclude仅支持glob模式且需/*前缀匹配任意层级;修改后需重载窗口或删除.vscode/.search重建索引,且须确认配置在settings.json中而非其他文件。

search.exclude 里怎么写才能真正排除 .log 文件
直接写 *.log 或 .log 都无效,VSCode 的 search.exclude 只认 glob 模式,且必须带 **/ 前缀才能匹配任意层级的文件。
-
"*.log": true:只排除项目根目录下的 .log 文件,src/utils/app.log仍会被搜到 -
".log": true:语法错误,VSCode 直接忽略整条规则 -
"**/*.log": true:正确写法,匹配所有子目录下的 .log 文件 - 多个类型要分开写,不能合并成
"**/*.log,**/*.tmp": true—— 这会被当做一个路径,不生效
为什么改了 search.exclude 还是搜出 dist/ 里的文件
最常见原因是 VSCode 搜索依赖本地索引缓存,修改配置后不会自动重建。尤其在大型项目中,旧索引还在内存里跑。
- 先执行
workbench.action.reloadWindow(快捷键Ctrl+Shift+P→ 输入该命令)强制重载窗口 - 或者手动删掉
.vscode/.search文件夹(如果存在),让 VSCode 下次搜索时重建索引 - 检查是否在搜索面板右上角的 “files to exclude” 输入框里填了内容 —— 它的优先级高于
search.exclude,会覆盖你的配置 - 确认你改的是对的地方:
search.exclude必须写在.vscode/settings.json(工作区)或用户 settings JSON 中,写在tsconfig.json或package.json里完全没用
node_modules 要怎么写才真正被跳过
写成 "node_modules": true 或 "node_modules/**": true 都不行 —— 前者不合法,后者只匹配根目录下的 node_modules,嵌套在 packages/foo/node_modules 里照样被扫。
- 必须用
"**/node_modules/**": true,**/表示任意深度前缀,第二个**表示该目录下所有内容 - 同理,
"**/dist/**": true才能跳过所有dist目录,不管它在./dist还是./src/lib/dist - 别用反斜杠
\,Windows 下也要写/,否则 glob 匹配失败 - 注意值必须是
true(布尔值),不是字符串"true"或空字符串
search.exclude 和 files.exclude 别混用
这两个设置作用完全不同,很多人以为配了 files.exclude 就等于搜索也跳过了,结果一搜全是 build/ 里的旧代码。
-
search.exclude:只影响Ctrl+Shift+F全局搜索,决定哪些文件不参与文本扫描 -
files.exclude:只影响左侧资源管理器的文件可见性,以及部分语言服务(比如 TS 的路径提示),但不影响搜索结果 - 想让搜索变快、结果干净 → 必须配
search.exclude - 想让侧边栏清爽、减少干扰 → 配
files.exclude
.code-workspace 里,而不是 settings.json。











