先说一个核心判断:VSCode 启动慢、响应卡顿,通常不是硬件问题,而是插件在冷启动时“集体加载”导致的。真正控制插件启动的关键,不是简单关闭某个开关,而是通过两个调度机制:activationEvents(插件自行声明触发时机)和 affinity(编辑器强制设定优先级)。

如何查看某个插件是否在启动时立即加载?
许多插件默认“一启动就运行”——比如 Docker、GitLens、ESLint,它们的 activationEvents 配置如果是 * 或未设置,就会在主进程初始化时直接加载。
- 打开命令面板(
Cmd + Shift + P),搜索Extensions: Show Installed Extensions。 - 找到目标插件,点击右上角 ⋯ →
Extension Settings。 - 搜索
activationMode或When字段:如果值为*,或者未显式设置为onCommand、onLanguage:json等,就说明它会在启动时无条件激活。 - 直接进入
settings.json手动覆盖:例如"gitlens.activationMode": "onCommand"。
简单来说,这一步就是给插件“排查户籍”,看看哪些插件在悄悄抢占启动资源。
如何强制延迟加载已安装的插件?
VSCode 1.86+ 版本新增了一个重要配置:extensions.experimental.affinity。它不依赖插件本身适配,尤其对老旧或那些 activationEvents 声明不规范的插件非常有效。
- 打开
settings.json(Cmd + ,→ 右上角 {} 图标)。 - 添加如下结构:
"extensions.experimental.affinity": { "ms-vscode.vscode-typescript-next": 2, "esbenp.prettier-vscode": 2, "redhat.vscode-yaml": 2} - 数字
2表示“延迟加载”,编辑器会跳过初始化,只在首次触发其功能(例如打开 .ts 文件、执行格式化命令)时才加载。 - 注意:核心语言支持插件(如
dart-code.dart-code)不能设置为2,否则语法高亮和跳转功能会直接失效。
这个配置相当于给插件排了一个“值班表”,编辑器决定每个插件何时上岗。
哪些插件最应该优先延迟或禁用?
UI 类和工具链类插件是启动拖慢的主要原因,尤其是那些带有 Webview、远程连接或同步初始化逻辑的插件。
Live Server:开发时常用,但启动即预占端口并监听;建议改为onCommand。Auto Rename Tag:仅用于 HTML/XML 场景,设置为onLanguage:html更合适。Bracket Pair Colorizer:新版 VSCode 已内置括号高亮功能,建议直接卸载。Code Runner:调试小脚本很有用,但启动即加载运行时环境;设置为onCommand更安全。- 所有带有“Preview”“Explorer”“Tree”字样的 UI 插件(例如
Project Manager),优先考虑使用原生工作区功能替代。
真正影响启动速度的,从来不是插件数量,而是有多少插件在 main 进程里执行同步初始化。延迟加载只是手段,关键在于知道每个插件在做什么、何时真正需要它——别让 docker 在你打开一个纯 Markdown 笔记时就开始拉取镜像,这才是真正的资源浪费。
