search.exclude 必须用双星号 glob 模式如 "*/.swp": true(布尔值),否则静默失效;它不读 .gitignore 或 files.exclude,需重载窗口或删 .vscode/.search 才生效。

search.exclude 怎么配才能过滤 .swp、.swo 这类临时交换文件
直接写 "**/*.swp": true 就行,但必须用双星号开头、值为布尔 true(不能是字符串 "true"),否则整条规则静默失效。VSCode 搜索不读 .gitignore,也不继承 files.exclude,只认这个字段。
常见错误:
-
"*.swp": true → 只匹配工作区根目录下的 .swp 文件,子目录里全漏掉 -
".swp": true → 语法非法,整条规则被丢弃 -
"**/*.swp": "true" → 值不是布尔型,VSCode 忽略该规则
推荐配置(放进 .vscode/settings.json):
{
"search.exclude": {
"**/*.swp": true,
"**/*.swo": true,
"**/*.un~": true,
"**/*.swx": true
}
}
临时排除交换文件,不用改配置
打开搜索面板(Ctrl+Shift+F)后,点右上角 ⋯ → «Files to exclude»,直接填 **/*.swp,**/*.swo(逗号分隔,不能有空格)。这条规则优先级高于 search.exclude,关掉面板自动清空,适合紧急排查时快速甩开干扰项。
注意:
- 如果搜出来还有 .swp 文件,第一反应就是检查这里有没有非空内容
- 填错格式(比如
**/*.swp, **/*.swo中间带空格)会导致第二条规则完全失效 - 这个输入框不支持正则,只认 glob,且路径基准仍是工作区根目录
为什么改了 search.exclude 还是搜出 .swp 文件
VSCode 搜索依赖本地索引缓存,改完设置不会自动刷新已有结果。尤其在大项目里,旧索引可能持续返回已被排除的路径。
必须做以下之一才能立即生效:
- 按
Ctrl+Shift+P→ 输入Developer: Reload Window→ 回车(比重启快,保留所有标签页) - 手动删掉
.vscode/.search文件夹(如果存在),强制重建索引 - 别用
Ctrl+Q或关掉再开——那不算重载,缓存还在
files.exclude 和 search.exclude 别混用
files.exclude 控制资源管理器里是否显示文件,不影响搜索;search.exclude 才真正决定 Ctrl+Shift+F 扫哪些路径。想让 .swp 既不在侧边栏出现、也不进搜索结果,得两条都配:
{
"files.exclude": {
"**/*.swp": true,
"**/*.swo": true
},
"search.exclude": {
"**/*.swp": true,
"**/*.swo": true
}
}
但要注意:files.exclude 的值影响文件树渲染,而 search.exclude 的值才决定实际扫描范围——后者才是你真正该盯紧的地方。


















