必须清除search.history字段并禁用search.usepcre2:先手动删除settings.json中"search.history"整行,再设"search.usepcre2": false,重启vscode以重建索引、清空下拉历史并排除已删文件。

VS Code 本身不保存全局“搜索历史记录”——你每次在 Ctrl+Shift+F(或 Cmd+Shift+F)里输的关键词,关掉搜索面板就没了,不会自动记住。但你看到的“搜出来一堆历史文件”,大概率不是搜索历史,而是 Local History 插件生成的快照文件被纳入了搜索范围,或者 VS Code 把你之前打开过的、但已删除/未提交的临时编辑记录当作了可索引文件。
为什么搜索结果里总出现 .history 文件?
这是 Local History 插件(如 Local History 或 VS Code 1.66+ 内置的本地历史功能)自动创建的快照文件,通常存放在 .history 子目录或扩展私有目录中。它们是真实存在的文件,VS Code 默认会把整个工作区(包括隐藏目录)纳入全文搜索范围。
- 现象:搜索关键词后,结果里混着一堆路径含
.history、~、.vscode或带时间戳的文件 - 原因:这些文件没被
search.exclude规则过滤,也没被插件禁用 - 风险:误删或误提交这些文件可能破坏历史回滚能力,但它们本身不属于 Git 跟踪范围
如何让搜索彻底忽略 .history 类文件?
直接修改工作区或用户级搜索排除规则,比关插件更安全——因为你可能还需要局部回滚功能,只是不想让它干扰搜索。
- 打开设置 → 搜索
search.exclude→ 编辑settings.json - 添加或确认以下排除项(支持 glob 通配):
"search.exclude": { "**/.history": true, "**/.vscode/**": true, "**/node_modules/**": true, "**/*.log": true } - 如果用了第三方 Local History 插件(比如
xyz.local-history),检查它的storagePath配置,把对应路径也加进search.exclude - 改完保存,无需重启,下次搜索立即生效
想删掉已有 .history 文件怎么办?
它们是普通文件,删了就没了,但要注意两点:一是别手动删错目录,二是删完要清一下 VS Code 的文件索引缓存,否则旧路径还可能短暂出现在搜索结果里。
- 先停用 Local History 插件(在扩展面板搜
local history→ 点“禁用”) - 在终端执行:
find . -name ".history" -type d -prune -exec rm -rf {} +(macOS/Linux)或用资源管理器定位并删除所有.history文件夹 - 删完后,在 VS Code 中按
Ctrl+Shift+P→ 输入Developer: Reload Window刷新文件索引 - 注意:
.history通常不在 Git 里,所以删完不会影响 commit 记录;但如果你正依赖它恢复某段代码,删前请确认已备份
真正难处理的不是“怎么删”,而是你删完一次,过两天又冒出新的 .history ——根源在于插件默认开启且未配置排除。所以优先做 search.exclude 和插件设置,比反复手动清理靠谱得多。











