code --disable-extensions 是 vscode 唯一真正有效的安全模式,它从启动第一毫秒绕过整个扩展系统,不读配置、不加载任何插件代码;图形界面“禁用全部”仅写入 settings.json,无法阻止早期注入的插件(如 ms-python.python)触发崩溃。

直接用 code --disable-extensions 启动,就是 VSCode 唯一真正有效的安全模式。它不读配置、不加载任何插件代码、不触发初始化逻辑——不是“看起来像禁用”,而是从启动第一毫秒就绕过整个扩展系统。
为什么图形界面里点“禁用全部”不管用
设置页里勾选“禁用全部扩展”只是往 settings.json 里写了一堆 "extensions.disabledExtensions",但很多插件(比如 ms-python.python 或 esbenp.prettier-vscode)会在主进程初始化阶段就注入钩子,这时候配置还没读完,禁用已经失效了。更常见的是:工作区级禁用和用户级启用冲突,你点了“禁用”,实际只在当前文件夹生效,用户设置里还开着。
典型现象包括:
-
Extension host terminated unexpectedly依然弹出 - 打开
.py文件后 CPU 瞬间拉满,哪怕你刚在设置里“禁用全部” - 重启 VSCode 后插件又自动亮起,图标旁还带个灰色“工作区”标签
code --disable-extensions 的正确用法和常见翻车点
这条命令必须放在命令行末尾,且不能和 --extensions-dir 同时出现,否则会被静默忽略——VS Code 参数解析器只认最后那个开关。
实操要点:
- Windows:打开
cmd,输入code --disable-extensions "C:\my project"(路径含空格必须加引号) - macOS:终端执行
open -n -b "com.microsoft.VSCode" --args --disable-extensions /path/to/project - Linux:确保
code在 PATH,运行/usr/bin/code --disable-extensions /path/to/project - 别用开始菜单右键“以管理员身份运行”再拖项目进去——GUI 启动完全绕过命令行参数
- 如果 macOS 提示
command not found: code,先去 VSCode 菜单选Shell Command: Install 'code' command in PATH
确认是插件问题后,怎么快速定位肇事者
手动一个个禁用太慢,尤其装了 30+ 插件时。VS Code 内置的 Developer: Start Extension Bisect 是唯一靠谱方案。
操作流程:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS) - 输入并运行
Developer: Start Extension Bisect - 它会自动分组、禁用一半插件、重启 VSCode,你只需回答“是”(问题复现)或“否”(正常)
- 3–4 轮就能锁定具体插件 ID,比如
ms-python.python或ritwickdey.liveserver - 验证时别用
--disable-extensions,改用code --disable-extension ms-python.python单独禁用该 ID
注意:有些插件禁用后语言服务器仍在后台跑,得手动执行 Developer: Reload Window 才真正卸载。
禁用不等于干净,删插件前得清三处残留
点一下 Uninstall 只删代码目录,以下三处几乎必然残留,且会干扰后续行为:
-
settings.json里的专属配置,比如"prettier.requireConfig"或"eslint.enable" -
keybindings.json中绑定的快捷键,如extension.prettier.format,重装后触发会报command 'extension.prettier.format' not found -
.vscode/extensions.json里的推荐记录,下次打开该文件夹仍会弹窗提示安装
物理删除插件目录(如 ~/.vscode/extensions/ms-python.python-2026.8.0)比禁用更彻底,但别误删 ~/.vscode/extensions 整个文件夹——那是所有插件的根目录。











