VSCode启动慢主要源于插件加载、工作区配置解析、Windows杀软拦截及Remote-SSH服务端下载。应逐个禁用可疑插件、精简.vscode/settings.json、添加杀软排除项、预装轻量vscode-server。

VSCode 启动慢,大概率是插件在拖后腿
VSCode 默认启动时会加载所有已启用插件的主进程代码,哪怕你只打开一个空文件夹,只要插件多、质量差,冷启动就可能卡在「正在激活扩展」上。这不是硬盘或内存问题,而是插件生命周期管理本身带来的开销。
实操建议:
- 用
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)打开命令面板,输入并执行Developer: Show Running Extensions,看哪些插件长期占用高 CPU 或长时间「Activating…」 - 逐个禁用可疑插件(尤其是带「Live Server」「Auto Rename Tag」「Beautify」这类常驻后台功能的),每次禁用后重启 VSCode 测试启动耗时
- 把
extensions.ignoreRecommendations设为true,避免被推荐插件悄悄启用;检查extensions.autoUpdate是否为false,防止更新后自动重载引发卡顿
工作区配置太多会显著拉长首次加载时间
当你在某个文件夹里打开 VSCode,并且该文件夹下存在 .vscode/settings.json 或 .vscode/tasks.json,VSCode 会在启动时解析并校验这些配置——尤其当里面写了大量 files.associations、emeraldwalk.runonsave 这类复杂规则时,解析成本不可忽略。
常见错误现象:打开项目根目录特别慢,但打开桌面空白文件夹却秒开。
实操建议:
- 删掉
.vscode/settings.json里非必需的全局覆盖项,比如把"editor.fontSize": 14这种个人偏好移到用户设置中(Ctrl+, → Open Settings (JSON)) - 避免在
settings.json中使用正则匹配路径的files.associations,改用更轻量的files.associations字面量映射,例如"*.ts": "typescript"而非"**/src/**/*": "typescript" - 如果用了
eslint.enable: true,确认没同时启用eslint.packageManager指向yarn却实际用pnpm,这种不匹配会导致启动时反复探路失败
Windows 上杀毒软件拦截 node_modules 是隐形杀手
VSCode 启动过程依赖大量 Node.js 子进程(如语言服务器、语法检查器),而 Windows Defender 或第三方杀软常对 node_modules 下成百上千的小文件做实时扫描,导致 vscode-server 或 tsserver 初始化阻塞在「创建进程」阶段。
使用场景:仅在 Windows 系统复现,macOS / Linux 无此问题;现象是任务管理器里能看到多个 node.exe 卡在「挂起」状态。
实操建议:
- 将 VSCode 安装目录(如
C:\Users\XXX\AppData\Local\Programs\Microsoft VS Code)和常用项目根目录加入 Windows Defender 排除列表(设置 → 隐私和安全性 → Windows 安全中心 → 病毒和威胁防护 → 管理设置 → 添加或删除排除项) - 禁用杀软的「行为监控」或「勒索软件防护」模块,这类功能对 Node.js 动态加载行为极其敏感
- 不要用
npm install -g全局安装 VSCode 插件依赖(如typescript),全局路径更容易被误扫;优先用项目本地node_modules
remote-SSH 启动慢?别让远程服务器跑 full VSCode server
用 Remote-SSH 打开远程项目时,VSCode 会在远端自动下载并解压完整版 vscode-server,默认行为是拉取最新稳定版(体积大、解压慢)。如果你只是写脚本或查日志,根本不需要全部功能。
性能影响:首次连接可能耗时 30 秒以上,后续连接虽快,但只要远端 ~/.vscode-server 被清理或版本升级,就会重复这个过程。
实操建议:
- 在远程服务器手动预装轻量版 server:运行
curl -L https://update.code.visualstudio.com/commit:(替换code --version/server-linux-x64/stable | tar -C ~/.vscode-server/bin/ -xzf -code --version输出的实际 commit id) - 在本地
settings.json加上"remote.SSH.serverPickPortsFromConfig": true,避免每次连都重新探测端口 - 禁用远程端不必要的插件同步:在远程窗口按
Ctrl+Shift+P,执行Preferences: Configure Remote Settings,把extensions.ignoreRecommendations和extensions.autoUpdate显式设为false
真正卡住启动的,往往不是 VSCode 本身,而是它不得不配合的生态组件——插件机制、配置解析、杀软策略、远程协议实现。每个环节都有明确可测的干预点,但得一个个试,不能靠「一键优化」配置糊弄过去。











