code --disable-extensions 是第一道验证线,它跳过所有第三方插件但保留内置语言支持,若启动变快、补全恢复即100%确认插件冲突;否则需排查settings.json或VSCode升级导致的API废弃问题。

code --disable-extensions 是第一道验证线
插件更新后突然卡顿、补全失效、保存格式化错乱,别急着卸载重装——先执行 code --disable-extensions 启动 VSCode。它跳过所有第三方插件,但保留内置语言支持(如 JSON、TypeScript),能立刻判断问题是否由插件引起。
如果启动变快、补全正常、右键菜单恢复 → 100% 是插件冲突,不是 VSCode 自身损坏或配置错误;如果问题依旧,说明是 settings.json 里某项配置(比如刚加的 "editor.formatOnSave": true)与新版本不兼容,或 VSCode 刚升级到 1.118 后某些 API 被移除(例如 vscode.workspace.onWillFormatDocument 已废弃)。
注意:code --disable-extensions 不修改任何配置,关掉窗口就自动恢复,安全且可逆。
Developer: Start Extension Bisect 快速缩窄嫌疑范围
手动一个一个禁用插件太慢,尤其你装了 69 个插件。VSCode 内置的二分法排查命令才是真解法:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入并运行Developer: Start Extension Bisect - 它会自动把已启用插件分成两组,禁用其中一组,重启后问你“问题是否复现”
- 你只需点“是”或“否”,3–4 轮后就能锁定到 1–2 个插件
比 UI 点禁用快 5 倍以上,特别适合更新后启动即崩溃、连插件面板都打不开的情况。它不依赖插件是否“显示为启用”,而是真实控制加载行为。
Console 里搜 Command 'xxx' is already registered 直击注册冲突
打开开发者工具(Ctrl+Shift+I),切到 Console 标签页,直接搜索 Command 或 Conflict。常见报错形如:
ERROR Command 'eslint.executeAutofix' is already registered by extension 'dbaeumer.vscode-eslint'
这说明不止一个插件试图注册同名命令——典型高发于 ESLint、Prettier、EditorConfig 同时启用时。这类冲突不会导致崩溃,但会让保存行为不可预测(比如格式化两次、光标跳动、诊断重复)。
解决方式不是删插件,而是显式指定归属:
- 在
settings.json中加"eslint.format.enable": false关闭 ESLint 的格式化能力 - 或设
"editor.defaultFormatter": "esbenp.prettier-vscode",让 Prettier 成为唯一格式器
避免靠“禁用”来掩盖问题,否则下次更新又可能触发。
Developer: Show Running Extensions 看谁在后台卡住激活
有些插件更新后看似正常,实则卡在激活阶段:状态显示 Activation failed,或 Activation Time 超过 1000ms(1 秒)。这类插件不报错、不崩溃,却拖垮整个启动流程,还可能残留监听器持续消耗 CPU。
运行 Developer: Show Running Extensions 后重点关注:
-
Activation Time (ms):超过 1000 毫秒的插件(尤其是ms-python.pylance、Vue.volar、rust-lang.rust-analyzer)高度可疑 -
Status:显示空白或Activation failed,说明它依赖的 VSCode 版本号或 Node.js 运行时不匹配(比如插件package.json里写死"engines": {"vscode": "1.115"},而你已升到 1.118)
真正麻烦的不是插件崩了,而是它悄悄卡住、不退出、不让别的插件继续加载——这种问题单看控制台日志根本发现不了,必须靠这个命令和 Extension Bisect 双验证。


















