vscode启动慢主因是扩展同步激活与文件监视器全盘扫描;需用developer: show running extensions定位长期显示activating…的插件(如gitlens、python),配置files.watcherexclude排除node_modules等目录,并设extensions.experimental.affinity为2实现延迟加载。

VSCode 启动慢,90% 以上不是电脑性能问题,而是扩展同步激活 + 文件监视器全盘扫描共同导致的——禁用 GitLens、Python 扩展,加两行 files.watcherExclude 和 extensions.experimental.affinity 配置,冷启动从 4 秒压到 800ms 很常见。
怎么快速定位拖慢启动的扩展
启动后立刻按 Cmd+Shift+P(macOS)或 Ctrl+Shift+P(Windows/Linux),输入并执行 Developer: Show Running Extensions。列表里长期显示 Activating… 的就是真凶。
- 重点关注
gitlens、ms-python.python、esbenp.prettier-vscode、dbaeumer.vscode-eslint、ms-vscode-remote.remote-ssh - 若状态显示
activated by another extension,说明它被连带唤醒,得顺藤摸瓜查源头 - 右键插件 →
Extension Details→ 点齿轮图标 → 展开When字段,就能看到它声明的activationEvents - 禁用后必须完全退出 VSCode(macOS 用
Cmd+Q,不能只关窗口),否则旧进程残留,效果不显
为什么 files.watcherExclude 配了还不生效
files.watcherExclude 是第一道防线,但写错格式、位置或没重启工作区,设置就等于没加。
- 路径必须带
**/前缀和/**后缀,例如"**/node_modules/**": true;写成"node_modules/": true或"*/node_modules/*"都无效 - 必须写进项目根目录的
.vscode/settings.json,不是用户设置界面(界面加引号会导致解析失败) - 改完后必须完全关闭当前工作区(不只是窗口),再重新用
File → Open Folder打开 - Linux 用户若
cat /proc/sys/fs/inotify/max_user_watches返回值低于524288,需先提升系统限制,否则仍 fallback 到轮询模式
如何让 Python/Prettier 这类扩展真正延迟加载
像 ms-python.python 或 esbenp.prettier-vscode 默认声明 onStartup 或通配符 * 激活事件,一启动就强制初始化语言服务器——但你可能只在打开 .py 文件时才需要它。
- 在用户级
settings.json(不是工作区)中添加:"extensions.experimental.affinity": { "ms-python.python": 2, "esbenp.prettier-vscode": 2 } - 数字
2表示“仅在关联文件打开或命令触发时加载”,不是启动即载入 - 该配置对旧版扩展无效,需确认扩展页的
Activation Events字段是否支持条件触发(2026 年主流扩展已适配) - 不要给所有插件都设
2——比如 Python 扩展若你每天写 Python,设为1(正常加载)反而更稳;而Remote - SSH这类非日常插件才适合2
缓存配置不当会让优化前功尽弃
VSCode 有两类关键缓存直接影响冷启动和热启动耗时:Extension Host 缓存(模块加载路径、已解析的扩展依赖)和 Renderer 进程缓存(UI 布局、侧边栏状态)。它们默认启用,但容易被以下操作破坏:
- 频繁修改
settings.json中的路径类配置(如files.associations、editor.defaultFormatter),触发扩展重激活,清空Extension Host缓存 - 禁用
files.hotExit或window.restoreWindows,导致每次重启都丢弃Renderer状态,UI 重新渲染 - 工作区未标记为
Trusted,强制执行额外安全检查,跳过部分缓存路径 - 缓存目录清理要精准:只删
%APPDATA%\Code\Cache(Windows)、~/Library/Caches/com.microsoft.VSCode(macOS)或~/.config/Code/Cache(Linux),别碰User或Extensions
最容易被忽略的是:改完 files.watcherExclude 后没重开工作区,或者把配置误加进了用户设置而非项目级 .vscode/settings.json;还有人以磁盘根目录或用户主目录当工作区打开——这等于让 VSCode 扫描整个系统。











