vscode启动慢八成因插件冷启动抢跑,最有效手段是禁用非必要插件或设extensions.experimental.affinity为2实现延迟加载;需通过developer: show running extensions查看activation events含*或onstartup的插件,如prettier、yaml、gitlens等,并在settings.json中精准配置对应id的affinity值为2。

VSCode 启动慢,八成是插件在“一开就抢跑”——禁用或设 extensions.experimental.affinity 为 2,是最直接有效的延迟加载手段。
怎么看哪些插件在冷启动时强行激活
别猜,直接看 VSCode 自己的运行账单:Developer: Show Running Extensions 是唯一可信入口。打开后,重点找这些特征:
- 状态为
Active,但你根本没打开任何相关文件(比如没开 JS 文件,esbenp.prettier-vscode却已激活) - 右键 →
Extension Details→ 点齿轮图标 → 展开When字段,值是"*"、"onStartupFinished"或空着没写 - 在
Developer: Startup Performance里看到activationTime超过 1000ms 的插件
这类插件基本就是拖慢首屏的主力,尤其是 gitlens、esbenp.prettier-vscode、redhat.vscode-yaml。
禁用 vs affinity=2:选错等于白干
禁用插件有三种方式,效果天差地别:
-
Disable (Workspace):只对当前文件夹生效,适合临时隔离,但重启后仍可能被其他工作区触发 -
Disable (For All Folders):全局停用,插件不加载也不初始化,保留设置和更新记录——这是最稳妥的默认选择 -
Uninstall:彻底删除,但某些插件(如ms-python.python)卸载后残留用户配置,可能导致后续功能静默失效
extensions.experimental.affinity 是更细粒度的控制,仅限 VSCode 1.86+:
- 设为
2表示“跳过初始激活”,首次调用其功能(如按Shift+Alt+F格式化)时才真正加载 - 必须写进
settings.json,格式严格:"extensions.experimental.affinity": { "esbenp.prettier-vscode": 2, "redhat.vscode-yaml": 2 } - 不能对核心语言支持插件(如
dart-code.dart-code)设为 2,否则语法高亮、跳转会直接消失
哪些插件最该优先延迟或禁用
不是所有插件都适合 affinity=2,得看它是否“高频但非刚需”:
- 工具链类:ESLint、Prettier、YAML 插件默认一开 JS/TS/YAML 就激活,但实际校验/格式化只在保存或手动触发时才需要——适合设为 2
- UI 类:Live Server(预占端口)、Auto Rename Tag(只在 HTML 中有用)、Bracket Pair Colorizer(VSCode 1.85+ 已内置)——建议直接禁用或设为
onLanguage:html - 远程/连接类:Remote - SSH、Docker、GitHub Copilot ——若当前不连远程环境,禁用比延迟更干净
- 带
Preview、Explorer、Tree字样的插件(如 Project Manager),优先用原生工作区功能替代
注意:affinity=2 不改变插件自身逻辑,只是把加载时机从“开机就干”变成“你真要用我才动”——这个边界很容易被忽略,导致误以为配置无效。











