VSCode启动慢主因是扩展同步激活或工作区全盘扫描;禁用GitLens、Python等扩展,配置files.watcherExclude排除node_modules等目录及extensions.experimental.affinity设为2,可将冷启动从4秒降至800ms。

VSCode启动慢,八成不是机器不行,而是扩展在启动时同步卡住,或工作区配置触发了全盘扫描——禁用 GitLens、Python 扩展,加两行 files.watcherExclude 和 extensions.experimental.affinity 配置,冷启动从 4 秒压到 800ms 很常见。
怎么快速定位拖慢启动的扩展
别靠“感觉”或“猜”,VSCode 自带两个命令就能直接看到真实瓶颈:Developer: Startup Performance 显示每个插件的 Start Delay(毫秒),超过 300ms 的基本就是高危项;Developer: Show Running Extensions 实时反映 CPU % 和 Memory MB,长期 >5% CPU 或 >300MB 内存的插件(比如 gitlens、dbaeumer.vscode-eslint、ms-python.python)必须优先处理。
重点关注 Activation Events 列含 onStartup 或 * 的扩展,它们一启动就拉起进程、扫描文件、建索引,哪怕你没开一个对应语言的文件。启动耗时超过 100ms 的,优先考虑禁用。
- 右键扩展名 → 选
Disable (Global)(全局禁用)或Disable (Workspace)(仅当前项目禁用),别直接卸载,留着备用 - 禁用后必须完全退出 VSCode(macOS 用
Cmd+Q,不能只关窗口),否则旧插件进程可能仍在内存里跑 - Remote - SSH 禁用后明显变快,说明问题不在本地,而是远程连接阻塞 UI 线程
为什么 files.watcherExclude 能立竿见影
VSCode 默认用 chokidar 监视整个工作区,一旦打开含 node_modules 或 dist 的目录,它就会尝试建立数万级 inotify 句柄(Linux)或反复轮询(macOS),直接拖垮启动和响应速度。
在项目根目录的 .vscode/settings.json 中添加:
"files.watcherExclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/.git/**": true,
"**/build/**": true,
"**/logs/**": true,
"**/__pycache__/**": true
}注意:用户级设置无效,必须写在工作区级 .vscode/settings.json 中;改完后务必关闭并重新打开该工作区,否则不生效。
- Linux 用户额外检查:
cat /proc/sys/fs/inotify/max_user_watches,若低于524288,运行echo 524288 | sudo tee /proc/sys/fs/inotify/max_user_watches - macOS 用户若仍卡顿,可临时加一行:
"files.useExperimentalFileWatcher": false - 绝对不要把
/、/Users/xxx或C:\当工作区打开——这等于命令 VSCode 全盘监听
extensions.experimental.affinity 怎么设才真正延迟加载
像 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 年 5 月资料确认主流扩展已适配)。
- 禁用后不清理
settings.json里的残留配置,插件可能悄悄复活——搜索eslint.enable、prettier.requireConfig、git.enabled等字段,整行删掉再保存 -
keybindings.json里绑定了extension.prettier.format这类快捷键,也会触发插件初始化 - 项目根目录下
.vscode/extensions.json若还写着推荐插件,一打开文件夹就会弹窗提示安装
真正影响效果的,往往不是某一项配置,而是多个细节叠加后的状态:files.watcherExclude 没写对路径模式、extensions.experimental.affinity 放错了 settings.json 层级、禁用插件后没彻底退出进程——这些地方一漏,优化就前功尽弃。


















