code --disable-extensions是验证插件冲突的最直接手段,它跳过所有第三方插件加载但保留内置语言支持;若启动后问题消失,则100%确认为插件冲突,否则需排查配置或vscode自身异常。

code --disable-extensions 是最直接的冲突验证手段
它不加载任何第三方插件,但保留 VSCode 内置语言支持(如 TypeScript、JSON),能快速判断问题是否由插件引起。终端执行 code --disable-extensions 启动后,如果卡顿消失、补全恢复、格式化正常,说明 100% 是插件冲突——这不是猜测,是确定性结论。
注意:code --disable-extensions 不修改配置、不卸载插件,只影响本次启动。若问题依旧,应转向检查 settings.json 或 VSCode 自身更新状态(比如刚升级到 1.90 后某些 API 被移除)。
用 --disable-extension 精准隔离单个插件
当怀疑某个具体插件(如 ms-python.python 或 esbenp.prettier-vscode)是元凶时,code --disable-extension 比图形界面禁用更彻底:它跳过该插件的 activate() 函数调用,避免残留监听器或后台进程干扰。
- 先列出所有已安装插件:
code --list-extensions - 逐个测试:
code --disable-extension ms-python.python,观察是否恢复正常 - 若仍异常,换下一个:
code --disable-extension dbaeumer.vscode-eslint - 确认问题插件后,可直接删除其目录(如
~/.vscode/extensions/ms-python.python-2026.6.1),而非仅禁用
Developer: Open Extension Host Log 查看崩溃根源
当出现 Extension host terminated unexpectedly 报错,不要只盯着弹窗——真正线索在扩展宿主日志末尾的 ERROR 行。运行 Developer: Open Extension Host Log,重点看最后一段错误堆栈里的插件 ID 和路径,例如:
ERROR Error: Cannot read property 'onDidChangeActiveTextEditor' of undefined
at activate (/Users/xxx/.vscode/extensions/esbenp.prettier-vscode-9.10.3/dist/extension.js:1)
这里 esbenp.prettier-vscode-9.10.3 就是直接责任人。若日志为空,说明崩溃发生在日志初始化前,必须退回命令行阶段用 --disable-extension 逐个排除。
Console 中搜索 Command 'xxx' is already registered 定位命令冲突
打开开发者工具(Ctrl+Shift+I),切到 Console 标签页,搜索 Command ' 或 Conflict detected。典型报错形如:
Extension 'dbaeumer.vscode-eslint' contributed command 'eslint.executeAutofix' but it's already registered
这类日志不是警告,是明确的注册冲突证据。VSCode 只保留最后一个注册成功的命令,前面的被静默覆盖,导致功能“看似失效”:
- 快捷键按下去没反应,实际执行的是另一个插件逻辑
- 右键菜单项重复或缺失,因多个插件注册了相同
editor/contextid - 旧版插件(如
ms-python.python)即使被禁用,也可能在启动阶段抢先注册命令
命令冲突往往比性能问题更隐蔽——它不卡顿、不报红,只悄悄让功能偏离预期。











