VSCode 启动变慢时,我通常先打开“帮助”菜单,选择“性能”下的“扩展启动时间”。这里会列出每个扩展在启动阶段的耗时,按倒序排列。看到某个扩展占了几百毫秒甚至更多,就会先考虑它是不是必须的。
先确认扩展对启动的影响
启动慢不一定是扩展的问题。可以按 Ctrl+` 打开终端,运行 code --disable-extensions 启动一个无扩展实例。如果启动明显变快,说明问题出在扩展上。如果还是慢,就要看其他因素,比如工作区设置、大型文件夹或者磁盘 I/O。
确认扩展是瓶颈后,再用上面提到的性能面板定位具体是哪些扩展。有些扩展平时不常用,但一直加载着,比如 Git 相关、Markdown 预览、远程开发工具,这些常是消耗大户。
容易误判的扩展类型
主题和图标扩展通常不影响启动速度,它们只在渲染时生效,加载开销很小。但语法高亮扩展、语言服务扩展(如 ESLint、Prettier)会在打开文件或编辑器时就启动,这类扩展的启动耗时可能被计入“扩展激活”阶段,容易被忽略。
自动补全、代码格式化、IntelliSense 相关扩展也会在后台占用内存和 CPU。如果项目本身很轻,不需要完整语言服务,可以暂时禁用。比如写一个纯文本文件,就不需要 Python 或 TypeScript 的扩展。
建议的处理顺序
我的做法是先全局梳理:打开扩展面板(Ctrl+Shift+X),查看已安装列表。把那些三个月以上没用过的、或者功能重复的扩展直接卸载。比如同时安装了多个颜色选择器、代码片段集合,只保留最顺手的那个。
筛选后,对保留的扩展,进入设置(Ctrl+,),搜索“extensions.autoCheckUpdates”和“extensions.autoUpdate”,可以把自动更新关闭,减少后台网络请求。但注意,关闭自动更新后需要你自己定期手动更新,否则可能错过安全修复。
然后,针对特定工作区可以禁用扩展。VSCode 支持工作区级别的扩展管理:在扩展面板里,对每个扩展点击齿轮图标,选择“禁用(工作区)”。这样只在需要的工作区启用,不影响全局启动速度。
如果项目比较固定,可以在 .vscode/extensions.json 里显式列出允许的扩展,其余所有未列出的扩展都会被自动禁用。示例如下:
{
"recommendations": [
"ms-python.python",
"dbaeumer.vscode-eslint"
],
"unwantedRecommendations": [
"ms-vscode.vscode-typescript-next"
]
}
这样打开该工作区时,只有推荐列表中的扩展会被激活,不在列表里的扩展保持禁用。注意 unwantedRecommendations 是阻止 VSCode 提示安装某些扩展,不是禁用已安装的扩展。要真正禁用,需要在扩展面板里对每个未列出的扩展手动禁用,或者使用下面的配置检查方法。
配置与命令检查
可以用命令行快速禁用所有扩展并逐个启用测试:先运行 code --disable-extensions 启动无扩展实例,然后逐个启用扩展重启确认。或者用快捷键 Ctrl+Shift+P 输入“Developer: Startup Performance”查看更多启动细节。
如果想批量管理,可以在设置中搜索“extensions.ignoreRecommendations”设为 true,关闭推荐弹窗,减少启动时的网络查询。另外,查看启动日志也是个办法:在终端中执行 code --verbose,然后观察输出,可以看到每个扩展的加载顺序和时间戳。如果某个扩展报错或卡住,会明显拖慢启动。
验证禁用效果的方法
禁用扩展后,重启 VSCode,再次打开“帮助” -> “性能” -> “扩展启动时间”,对比前后的总耗时。也可以直接凭感觉,但从秒级到毫秒级的差异,感觉可能不准。稳妥的做法是用 code --status 查看启动时间:在 VSCode 内打开命令面板,输入“Developer: Show Running Extensions”,会列出当前活动的扩展及其内存占用,但启动时间需要从性能面板获取。
另外,可以录制一段启动过程:打开任务管理器(Windows)或活动监视器(macOS),观察 VSCode 进程的 CPU 和内存峰值。禁用扩展后,峰值应明显下降。但不要依赖精确数值,只对比趋势。
回滚与风险控制
禁用扩展后如果发现某个功能缺失,可以重新启用。VSCode 会在扩展面板里标记哪些是工作区禁用的,哪些是全局禁用的。全局禁用会在你打开其他项目时也失效,需要手动启用。最安全的方式是逐个禁用,每次只禁一个,重启测试,确认没问题再禁下一个。
有些扩展之间存在依赖关系,比如 ESLint 扩展依赖 Node.js 执行环境,但禁用了 Node.js 扩展并不会让 ESLint 失效,只要系统中已安装 Node.js。但如果是主题扩展被禁用,某些语法高亮可能会回退到默认。回滚很简单,重新点击扩展的“启用”按钮就行。
建议在禁用前记录当前扩展列表:在终端运行 code --list-extensions > extensions.txt,把输出另存为文件。需要恢复时,运行 cat extensions.txt | xargs -n1 code --install-extension 即可批量重装。但注意这个命令会重新安装,而不是启用。如果要启用已禁用的扩展,需在 UI 里操作,或使用 code --enable-extension 命令,但该命令只适用于扩展 ID。
整体上,禁用扩展的风险很低,无非是功能暂时不可用。只要保留好列表,可以随时恢复原状。如果遇到工作区无法打开的情况,用 code --disable-extensions 启动后,手动启用必要的扩展即可。