VSCode启动慢主因是插件冷启动抢主线程,需通过Developer: Show Running Extensions查看Activation Time超1000ms或Status异常的插件,并用code --status验证;禁用无效,应设extensions.experimental.affinity为2实现延迟加载,同时配置files.watcherExclude排除干扰目录。

VSCode 启动慢,八成不是硬件或网络问题,而是某个插件在冷启动时抢跑并卡住主线程——activationEvents 声明为 "*" 或 "onStartupFinished" 的插件,哪怕你只打开一个 .txt 文件也会被强制拉起。
怎么看哪个插件在拖慢启动
别靠猜,直接看 VSCode 自己记的账:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),运行Developer: Show Running Extensions - 重点盯两列:
Activation Time (ms)超过1000的,基本等于一开就抢控制权;Status长期显示Activating或空白的,说明它卡住了但没报错 - 顺手终端执行
code --status,输出里Extensions区域的耗时更准,不受 GUI 渲染延迟干扰
哪些插件最常“假装待命”却干重活
它们不显眼,但 package.json 里写着宽泛的激活条件,一启动就初始化完整服务:
-
ms-vscode.js-debug:即使你从不调试 JS,也会同步拉起整个调试器服务 -
ms-vscode.vscode-typescript-next:无tsconfig.json也硬启 TS Server,内存占用高且不可跳过 -
eamodio.gitlens:默认开启全仓库历史扫描,gitlens.advanced.caching.enabled不关,内存涨几百 MB -
ms-python.python:旧版本会在打开任意文件时尝试初始化 Python 环境 -
ms-vscode-remote.remote-ssh:连接失败时 UI 线程挂起几秒,无提示
禁用 ≠ 解决,affinity=2 才是真延迟加载
禁用(For All Folders)只是让 VSCode 忽略它的 activationEvents,但插件元数据仍在内存里注册;真正跳过初始加载,得靠 extensions.experimental.affinity:
- 打开
settings.json(命令面板输入Preferences: Open Settings (JSON)) - 添加配置,例如:
"extensions.experimental.affinity": { "esbenp.prettier-vscode": 2, "redhat.vscode-yaml": 2, "ms-python.python": 2 } - 数字
2表示“延迟加载”,VSCode 启动时不调用其activate(),直到你首次触发相关功能(如保存、右键格式化、打开 YAML 文件) - 注意:该设置仅对 VSCode 1.86+ 有效,且不影响插件后续行为逻辑
files.watcherExclude 不配,所有优化都白搭
VSCode 的文件监听器(chokidar)一旦被 node_modules、.git 这类目录拖住,所有依赖文件事件的插件都会变慢——不是插件本身慢,是它等不到触发信号:
- 必须在
settings.json中明确排除:"files.watcherExclude": { "**/.git/**": true, "**/node_modules/**": true, "**/dist/**": true, "**/build/**": true } - 这个配置要写进用户级或工作区级
settings.json,改完需关闭并重新打开工作区才生效 - 如果项目里有大量临时构建产物(如
out/、target/),也建议一并加入排除列表
真正难处理的不是耗时长的插件,而是那些 Activation Time 看似正常(比如 300ms)、但 Status 一直空着、也不报错的插件——它可能已悄悄注册了监听器,却在后台持续占用资源却不释放。这类插件往往不会出现在 code --status 的高耗时名单里,只能靠 Developer: Open Process Explorer 查内存和 CPU 持续占用才能揪出来。


















