必须重启vscode才生效:search.history字段需手动删除settings.json中整行,且search.usepcre2设为false后也须重启重建索引,热重载无效。

search.history 字段必须手动删,重启才生效
VSCode 的搜索框(Ctrl+Shift+F)下拉历史不是缓存,而是明文写死在 settings.json 里的 search.history 字段。不删它,旧关键词永远在列表里蹦出来,哪怕你换工作区、重装插件也没用。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入并执行Preferences: Open Settings (JSON) - 在打开的
settings.json中搜索"search.history" - 找到整行,例如:
"search.history": ["fetch", "useEffect", "api/error"],直接删掉这一整行(包括引号、冒号、中括号和里面所有内容) - 保存文件,必须重启 VSCode——热重载不生效,下拉列表不会清空
搜到已删文件?关掉 search.usePCRE2 才管用
启用 PCRE2 正则引擎后,VSCode 会复用旧索引快照,导致物理上已删、Git 已提交删除的文件仍出现在搜索结果里。这不是 bug,是索引延迟刷新的表现。
- 在
settings.json中添加或修改:"search.usePCRE2": false - 保存后 必须重启 VSCode,首次全局搜索时才会重建索引
- 禁用后
(?i)、(?:)等 PCRE2 特有语法不可用,但^foo.*bar$、\d+这类基础正则完全不受影响 - 如果还搜得到,先运行
git ls-files --deleted确认是否真删了;再检查files.exclude是否误配(比如漏了结尾斜杠)
终端历史和最近打开记录是分开清理的
别混淆:搜索框历史(search.history)和终端滚动历史、最近打开项目互不影响。它们存的位置、触发机制、清理方式都不同。
- 终端历史清空用
Terminal: Clear(快捷键Ctrl+K/Cmd+K),只清当前 tab 缓冲区;要彻底释放内存,用Terminal: Clear Scrollback - “最近打开”列表存在
recentlyOpened.json文件里,需关闭 VSCode 后清空"entries"和"workspaces"数组 -
quickOpen.includeHistory是 Quick Open(Ctrl+P)的历史开关,跟搜索框无关,别设错地方
真正“彻底删除”的文件为什么还能搜到?先看 Git 索引状态
VSCode 搜索不区分“Git 删除”和“物理删除”,只要路径还在可遍历范围内,就可能被扫到。你以为删干净了,其实只是 git rm --cached 或 files.exclude 配错了。
- 运行
git ls-files --deleted:如果目标文件出现在输出里,说明它还在 Git 索引中,需git rm --cached <file></file>并提交 - 检查
files.exclude是否写成"**/old-folder/**": true却漏了结尾斜杠,正确应为"**/old-folder/**/": true - 临时排除某路径,加一行
"search.exclude": {"**/old-folder/**/": true},比删索引更安全
search.history 和 search.usePCRE2 的改动,不重启 VSCode 就等于没做。











