search.exclude 是 VSCode 全局搜索的硬性路径过滤规则,优先级高于 .gitignore;它默认排除 node_modules、.git 等目录,修改需编辑 settings.json;临时绕过可在搜索面板取消勾选“使用排除设置”;Replace in Files 同样受其约束且不提示跳过文件。

search.exclude 配置项控制全局搜索是否跳过某些路径
VSCode 默认跳过 node_modules、.git、dist 等目录,靠的就是 search.exclude 这个设置。它不是“建议跳过”,而是硬性过滤——只要路径匹配,就完全不扫描,哪怕你正想修 node_modules 里的本地 patch。
检查方式:按 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS)→ 输入 Preferences: Open Workspace Settings (JSON) → 查看是否存在 search.exclude 字段。
- 若想临时绕过所有排除规则:在搜索面板右上角点
⋯→ 取消勾选「使用排除设置」(仅本次生效) - 若要永久修改:直接在
settings.json中增删键值对,例如:{ "search.exclude": { "**/build/**": true, "**/coverage/**": true } } - 注意通配符语义:
**/api/**会排除所有含api的子路径(如src/utils/apiClient),而src/api/**才只排除顶层src/api
files to exclude 是搜索时的动态过滤,不改配置文件
每次打开搜索面板后,点击右上角 ⋯,会出现 files to include 和 files to exclude 两个输入框。这里填的内容只影响当前这次搜索,不会写入任何 JSON 配置。
适合快速试错或一次性操作,比如搜 handleLogin 但不想碰测试文件:
- 在
files to exclude中填:**/test/**, **/mocks/**, *.spec.ts - 多个条件用英文逗号分隔,支持 glob 语法(
**匹配多级目录,*匹配单级) - 不能写正则,只认路径模式;也不能用
!否定,必须显式列出要排除的
search.useIgnoreFiles 决定是否继承 .gitignore
默认情况下,VSCode 全局搜索会读取项目根目录下的 .gitignore,并把里面列出的路径也加入排除列表。这很合理,但有时会干扰你——比如你想批量改 .env.local 里的变量名,但它被 .gitignore 拦住了。
解决办法是关掉这个自动继承:
- 在
settings.json中添加:"search.useIgnoreFiles": false
- 或者只对当前工作区关闭:在工作区设置里加同名字段,避免影响其他项目
- 注意:关掉后,
.gitignore里写的node_modules就不再自动排除了,得手动补进search.exclude,否则搜索可能变慢甚至卡住
排除规则和 Replace in Files 的关系容易被忽略
Replace in Files(快捷键 Ctrl+Shift+H)完全受上述所有排除规则约束。但关键一点常被漏掉:它**不会警告你哪些文件被跳过了**——界面只显示“已替换 X 处”,却不会告诉你“还有 Y 个文件因 search.exclude 被忽略”。
所以当你发现替换结果比预期少,优先检查:
- 左下角状态栏是否显示完整工作区路径(而非“未打开文件夹”)
- 搜索面板右上角的
⋯是否意外启用了排除 -
search.exclude里有没有过于宽泛的模式(如**/src/**误写成**/s?rc/**) - 目标文件是否被标记为只读(右下角显示
Read-only),此时Replace in Files会静默跳过


















