search.exclude 无效主因是路径写法错误或作用域错配:必须置于工作区 .vscode/settings.json,且规则需为 "/node_modules/": true 等带双星号和尾斜杠格式。

search.exclude 配置无效?检查路径写法和作用域
VSCode 的“代码重复检测”(即全局搜索 Ctrl+Shift+F)本身不直接暴露“内存上限”开关,但真正吃内存的是底层文件扫描行为。一旦 search.exclude 没生效,node_modules、dist 等目录会被全量递归读取,单次搜索就可能冲到 1.5GB+ RSS。
常见失效原因:
-
search.exclude必须写在工作区根目录的.vscode/settings.json,用户级设置在多根工作区下 100% 不起作用 - 规则必须带双星号和尾部斜杠:
"**/node_modules/**": true✅,"**/node_modules": true❌(VSCode 忽略) - 漏掉
"**/.git/**": true?GitLens 会持续监听.git/objects下成千上万个松散对象,直接卡死搜索进程
禁用 searchService 是最狠的降内存手段
远端或本地大型项目中,searchService 进程是内存杀手——它默认构建全文索引,且不尊重 search.exclude 的部分场景(尤其符号链接或未识别语言)。禁用后,Ctrl+Shift+F 变成纯 ripgrep 流式搜索,RSS 从 1.2GB 降到 200MB 内。
操作方式(需重启窗口才生效):
- 在工作区
.vscode/settings.json中添加:"search.useRipgrep": false - 同时确认:
"search.followSymlinks": false - 如果完全不需要索引加速,可进一步加:
"search.quickOpen.includeSymbols": false
远程开发时 searchService 内存爆掉,参数加错地方就白配
Remote-SSH 连接后搜索卡死、htop 看到一堆 searchService 进程占满内存?这些进程跑在远端服务器上,本地任何启动参数或用户设置都无效。
必须通过环境变量注入远端 Node 进程:
- 在本地 VSCode 的
settings.json(用户或工作区)中配置:"remote.SSH.remoteServerEnv"字段 - 值设为:
{"VSCODE_NODE_OPTIONS": "--max-old-space-size=2048"} -
2048是稳妥起点;超过4096容易引发服务器 swap,得不偿失 - ⚠️ 修改后必须完全关闭当前远程窗口(不只是 Reload Window),再重新 Connect
files.maxMemoryForLargeFilesMB 不是给搜索用的,别混淆
这个参数控制的是单文件加载行为,不是搜索内存。它只在满足两个条件时触发轻量模式:文件大小超阈值 且 语言模式未激活语法服务(比如被识别为 Plain Text)。状态栏显示 Large file mode (read-only) 才算生效。
它对 Ctrl+Shift+F 没有直接影响——搜索走的是另一套文件遍历逻辑。设太高反而危险:files.maxMemoryForLargeFilesMB 分配的是主进程内存,无硬隔离,8GB 机器建议不超过 2048。
真正卡住的点,往往是你一边开着 node_modules 全局搜索,一边指望靠调大这个值来救场。











