code --disable-extensions是唯一真正禁用所有插件的方式,跳过整个扩展加载流程,用于排查启动卡死等问题;禁用指定插件需通过.vscode/extensions.json或settings.json配置ID并重载窗口。

code --disable-extensions 是唯一真正禁用所有插件的方式
它不是“禁用指定插件”,而是跳过整个扩展加载流程——不读 settings.json、不查 .vscode/extensions.json、不初始化任何插件实例。这是排查启动卡死、白屏、高 CPU 占用的起点,也是验证是否为插件冲突的黄金标准。
必须把 --disable-extensions 放在命令末尾,否则会被忽略;不能和 --extensions-dir 同时使用,否则该参数静默失效。
- macOS:
open -n -b "com.microsoft.VSCode" --args --disable-extensions /path/to/project - Linux:
/usr/bin/code --disable-extensions /path/to/project(避免 alias 覆盖) - Windows:
code --disable-extensions "C:\my project"(路径含空格必须加引号)
想禁用“指定插件”?别信图形界面点一下就完事
VSCode 命令行没有 code --disable-extension esbenp.prettier-vscode 这种语法。所谓“指定禁用”,实际只有两种可靠路径:
-
工作区级屏蔽:在项目根目录新建
.vscode/extensions.json,写入{"unwantedDependencies": ["esbenp.prettier-vscode"]}——仅 VSCode 1.85+ 支持,插件根本不会被激活,也不出现在已禁用列表里 -
配置式禁用:在
settings.json中写"extensions.disabledExtensions": ["esbenp.prettier-vscode"]——但 ID 必须完全匹配市场 URL 最后一段(esbenp.prettier-vscode,不是prettier或prettier-vscode),填错就静默失败
禁用后插件还在运行?大概率是 settings.json 里有“兜底配置”
禁用插件 ≠ 功能消失。VSCode 会按你明写的设置强行拉起插件,哪怕它已被禁用。
-
"editor.defaultFormatter": "esbenp.prettier-vscode"+"editor.formatOnSave": true→ Prettier 仍会格式化 -
"eslint.enable": true或"prettier.enable": true→ 对应插件语言服务器照常启动 -
keybindings.json里绑了extension.prettier.format→ 启动时尝试加载 Prettier 插件解析快捷键
这类配置比 extensions.disabledExtensions 更优先,删掉或设为 false 才算真正切断依赖。
重载窗口是多数禁用操作生效的必要条件
无论是点击“Disable (Workspace)”还是改了 extensions.json,VSCode 都只是标记状态,插件仍在内存中运行。不执行 Developer: Reload Window,ESLint 继续报错、Prettier 继续格式化、GitLens 继续渲染 CodeLens——全都不意外。
重载后检查是否生效:
- 命令面板输入
Extensions: Show Disabled Extensions,确认插件显示disabled in workspace - 再运行
Developer: Show Running Extensions,观察目标插件是否从列表中消失
真正干净的禁用,从来不是点一下就结束的事:配置要对、ID 要准、重载要执行、兜底项要清。漏掉任一环,插件就在后台默默吃 CPU。


















