Developer: Show Running Extensions 是排查插件卡顿的第一步,直接暴露插件对主线程的实际影响,重点关注 Startup Time 超 150ms、CPU/内存持续高占用的插件;code --disable-extensions 可快速验证是否为插件导致卡顿;调整插件设置(如 GitLens 缓存、ESLint 检查时机)和配置 files.watcherExclude 排除 node_modules 等目录能显著减轻卡顿。

Developer: Show Running Extensions 看谁在拖主线程
这个命令是排查插件卡顿的第一步,不是“看看有哪些插件”,而是直接暴露它们对主线程的实际影响。打开 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入并运行 Developer: Show Running Extensions,重点关注两列:
-
Startup Time:超过 150ms 的插件大概率在启动时就抢了主线程,比如某些主题、Copilot 或远程连接类扩展 -
CPU和Memory:持续占用 >200MB 或 CPU 波动频繁的插件(如 GitLens、ESLint、Prettier)往往是后台监听或分析逻辑没节制
注意:列表里显示为 “Activated” 但没明显耗时的插件,可能只是注册了激活事件,还没真正干活;而“Running”状态且 CPU 持续跳动的,才是真正在后台跑任务。
code --disable-extensions 验证是否真由插件引起
这是最干净的验证方式——绕过所有用户扩展,只跑 VS Code 原生内核。关掉所有 VS Code 窗口,在终端执行:
code --disable-extensions
然后打开同一个项目,做相同操作(比如打开大文件、搜索、敲代码)。如果卡顿消失,基本锁定是插件问题;如果依旧卡,就得转向文件监视、语言服务或系统级配置排查。
补充一点:--disable-extensions 不会影响你已安装的插件,也不改变设置,退出后一切照旧。它只是临时“屏蔽”,比逐个禁用快得多,也更可靠。
禁用后别急着卸载,先看它的设置项能不能调轻
很多插件卡,不是因为功能本身重,而是默认行为太激进。比如:
-
GitLens默认开启全仓库历史扫描和符号缓存,关掉gitlens.advanced.caching.enabled能省下几百 MB 内存 -
ESLint默认 onType 实时检查,改成eslint.run设为onSave,能避免边写边解析的卡顿 -
TypeScript扩展默认加载所有@types,把typescript.preferences.includePackageJsonAutoImports改成"auto"或"off",可大幅缩短 TSServer 启动时间
这类调整通常写在 .vscode/settings.json(项目级)或用户 settings.json 中,改完需重启窗口才生效。不卸载、不换插件,就能让它们“变轻”。
files.watcherExclude 必须配,否则插件再轻也白搭
很多插件卡顿,本质是被 VS Code 的文件监听机制“带崩”的。VS Code 默认用 chokidar 监听整个工作区,一旦 node_modules 或 dist 目录存在,插件(尤其是 Git、ESLint、Prettier)会收到海量变更事件,然后排队处理——这时候不是插件写得差,是它被喂得太撑。
在 settings.json 中加这一段:
{
"files.watcherExclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.git/**": true,
"**/__pycache__/**": true,
"**/venv/**": true
}
}
关键点:
- 路径必须用双星号
**/xxx/**,单星号*/xxx/*不生效 - 这个配置在插件读取文件事件前就过滤掉了,比
files.exclude更早、更底层 - 改完必须关闭并重新打开工作区,热重载不生效
这个配置一加,你会发现 GitLens 不再疯狂刷新状态栏,ESLint 不再因 node_modules 里某个 .d.ts 变动而卡住 2 秒——插件没变,但环境变了。











