
为什么 workspace 级插件禁用比全局禁用更关键
因为很多插件(比如 Live Server、ESLint、Prettier)在非对应项目中不仅没用,还会拖慢启动速度、触发误报或干扰调试。VSCode 默认不自动按工作区开关插件,必须手动配置,否则你打开一个纯 Python 项目时,JavaScript Debugger 依然在后台加载。
如何在当前工作区禁用指定插件
打开工作区根目录下的 .vscode/extensions.json(若不存在则新建),写入以下结构:
{
"recommendations": [],
"unwantedDependencies": ["esbenp.prettier-vscode", "msjsdiag.debugger-for-chrome"]
}
unwantedDependencies 是 VSCode 1.85+ 引入的正式字段,它会让这些插件在该工作区完全不被激活——不是“禁用”,而是“不加载”。注意:unwantedDependencies 只在工作区生效,不影响其他文件夹;且插件必须已安装,否则无效。
- 插件 ID 可在插件市场页 URL 中找到,例如
https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode→ ID 是esbenp.prettier-vscode - 禁用后重启窗口或重新打开文件夹才生效
- 不要和
extensions.ignoreRecommendations混用,后者只影响推荐提示,不阻止加载
哪些插件适合放进 unwantedDependencies
判断标准很简单:该插件是否只服务于某类语言/框架/流程?如果是,就该进列表。常见场景包括:
- 前端项目里禁用
ms-python.python、rust-lang.rust - Python 项目里禁用
dbaeumer.vscode-eslint、esbenp.prettier-vscode - 纯 Markdown 工作区禁用所有 LSP 类插件(如
redhat.vscode-yaml、golang.go) - CI 配置目录(如
.github/)中禁用所有语言服务器,只留editorconfig.editorconfig
禁用后仍被触发?检查这三处
有时候插件看似禁用了,但语法高亮、格式化或错误提示还在出现,大概率是以下原因:
-
settings.json里写了强制启用项,比如"editor.formatOnSave": true+"editor.defaultFormatter": "esbenp.prettier-vscode"—— 即使插件被unwantedDependencies排除,VSCode 仍会尝试加载它来执行格式化 - 插件本身提供多语言支持(如
redhat.vscode-yaml同时支持 YAML 和 Kubernetes 清单),禁用后部分能力可能由其他插件“代偿” - 工作区设置了
"extensions.autoUpdate": true,而插件更新后 ID 变更(极少见,但某些迁移插件如旧版prettier-vscode到新版esbenp.prettier-vscode会发生)
最稳妥的做法:禁用插件后,打开命令面板(Ctrl+Shift+P),运行 Developer: Show Running Extensions,确认目标插件不在列表中。


















