code --disable-extensions是唯一100%禁用所有插件的方式,它跳过扩展加载流程、不读取配置、不触发activation events,必须置于命令末尾且不可与--extensions-dir混用;settings.json中按ID精准禁用仅对已安装插件生效,ID错则静默失败。

没有“批量禁用所有插件”的图形操作,但有真正有效的两种路径:命令行启动时彻底跳过加载(最干净),或手动编辑 settings.json 按 ID 精准关闭(最可控)。
code --disable-extensions 是唯一 100% 禁用所有插件的方式
它不读取任何配置、不加载扩展进程、不触发 activation events,是排查崩溃、白屏、高 CPU 的起点。关键不是“怎么点”,而是“怎么启动”:
-
code --disable-extensions必须放在命令末尾;若前面出现--extensions-dir,该参数会被静默忽略 - Windows 用户别右键开始菜单图标“以管理员身份运行”再拖项目——GUI 启动绕过所有命令行参数
- macOS 要用:
open -n -b "com.microsoft.VSCode" --args --disable-extensions /path/to/project - Linux 建议用绝对路径:
/usr/bin/code --disable-extensions /path/to/project,避免 alias 覆盖 - 安全模式下打开空窗口后,再用
File > Open Folder...加载项目仍会加载插件——必须把路径直接跟在命令后面
在 settings.json 中批量禁用已安装插件(ID 必须精确)
这个方法不跳过加载流程,但能快速停用多数插件,适合日常精简而非故障排查。它只对已安装插件生效,且 ID 错一个字符就静默失败:
- 插件 ID 是市场页 URL 最后一段,例如
esbenp.prettier-vscode,写成prettier或prettier-vscode都无效 - 在
settings.json中添加:"extensions.enabled": {"esbenp.prettier-vscode": false, "ms-python.python": false} - 禁用后某些插件(如
ms-python.python)的语言服务器仍驻留内存,需手动执行Developer: Reload Window - 工作区级设置(
.vscode/settings.json)可能被用户级设置覆盖,优先检查Ctrl+, → Open Settings (JSON)对应的全局文件
为什么 Extensions 视图里点“Disable All”不管用
那个按钮只是把所有插件状态写进 extensions.json,并不阻止它们在启动早期注入代码。很多插件监听 onStartupFinished 或 *,只要 VS Code 主进程启动完成,它们就自动激活:
- 点完“Disable All”后重启,
Developer: Show Running Extensions仍能看到大量Start-up: true的插件在运行 - 部分插件(如 Live Server、GitHub Copilot)会注册全局命令或 HTTP 代理,禁用 UI 后后台进程仍在通信
- 状态栏图标残留、快捷键仍响应、保存时意外格式化——都是“看似禁用,实则未退”的典型表现
- 真正想验证是否为插件引起的问题,只能靠
--disable-extensions启动后复现
最容易被忽略的一点:禁用插件 ≠ 清除它的配置和快捷键。即使全禁用了,keybindings.json 里还挂着 extension.prettier.format,下次误触会报 command not found;settings.json 里留着 "python.defaultInterpreterPath",一打开 Python 文件就弹找不到解释器——这些都得手动清理。


















