禁用非必要插件是提升vscode性能最直接有效的手段;优先禁用auto rename tag、path intellisense、未配置的eslint和gitlens等宽泛监听类插件,并配合files.watcherexclude、search.exclude及ts/js语言服务关闭等配置优化。

加插件通常不会优化加载速度,反而大概率让 VSCode 更慢——尤其是对大型项目。真正有效的“优化”,绝大多数时候是关插件、调配置、排除路径,而不是装新插件。
哪些插件必须禁用
不是所有“常用”插件都适合大型项目,有些插件一启用就触发全量文件扫描,直接拖垮启动和响应。
-
Auto Rename Tag:监听所有 HTML/JSX 文件变更,files.watcherExclude对它基本无效 -
Path Intellisense:默认递归扫描整个工作区找路径,node_modules里几万个.d.ts文件都能让它卡住 -
ESLint(未配置eslint.validate或eslint.options.cwd):会自动加载并校验node_modules下所有 JS/TS 文件 -
GitLens:默认开启文件级 watcher,可临时保留,但需在设置中加"gitlens.advanced.fileWatcher.latency": 1000
验证方式:打开命令面板运行 Developer: Show Running Extensions,看“启动耗时”列,超过 100ms 的插件优先关掉。
为什么 files.exclude 不等于 search.exclude
files.exclude 只控制左侧资源管理器是否显示文件夹,Ctrl+Shift+F 全局搜索完全不受影响。很多人配了 "node_modules": true 还发现搜索扫到 node_modules,不是 bug,是用错了地方。
-
search.exclude才真正控制搜索范围,且路径必须带**/前缀,比如"**/node_modules": true - 写成
"node_modules"或"node_modules/**"都不生效 - 多根工作区下,每个子文件夹的
search.exclude是独立生效的,不能靠根目录一条规则覆盖全部
files.watcherExclude 配错会触发 inotify 耗尽
Linux/macOS 下 VSCode 默认用 inotify 监听文件变化,未排除构建产物目录(如 dist、build、.next)会导致系统 inotify 句柄快速打满,报错 ENOSPC 或 watcher limit reached——此时编辑器响应变慢、热更新延迟、甚至无法监听新文件。
-
files.watcherExclude的 glob 模式必须以**/开头,例如"**/dist/**": true,否则不生效 - 它不支持
!取反语法,没法“排除所有但保留某一个” - 某些插件(如 GitLens、ESLint)会绕过该设置自行扫描,所以禁用非必要扩展比死磕配置更有效
TS/JS 语言服务相关配置要关掉
TypeScript 语言服务器是大型项目卡顿的主因之一,它默认会解析 node_modules 和所有 package.json 中的依赖,导致内存暴涨、CPU 占用长期 30%+。
-
"typescript.preferences.includePackageJsonAutoImports": "off"—— 关闭自动从package.json推导导入路径 -
"javascript.suggest.autoImports": false—— 禁用 JS 自动导入提示(TS 同理设"typescript.suggest.autoImports": false) -
"typescript.tsserver.log": "off"—— 关闭日志,避免磁盘 I/O 拖慢 -
"typescript.tsserver.maxTsServerMemory": 4096—— 仅在 16GB+ 内存机器上设,否则可能抢走其他进程资源
真正容易被忽略的是:这些配置必须写在工作区 .vscode/settings.json 里,而不是用户级设置。全局设置对多根工作区或特定项目往往不起作用。











