禁用插件不等于停用功能,因VSCode仅标记状态而插件仍驻留内存;必须执行Developer: Reload Window才能终止运行,且需检查settings.json中editor.defaultFormatter等强制配置是否残留。

禁用插件不等于停用功能——点完“Disable (Workspace)”后 Prettier 还在格式化、ESLint 还在报错,大概率是因为没重载窗口,或 settings.json 里还留着强制调用配置。
为什么禁用后插件还在运行
VSCode 的工作区禁用只是标记状态,插件代码仍驻留在内存中。不执行重载,它照样响应文件保存、语言服务请求、格式化触发等事件。
- 常见错误现象:
Extensions: Disable Extension in This Workspace点完就关面板,结果prettier继续格式化、eslint继续标红 - 必须执行
Developer: Reload Window(Ctrl+Shift+P → 输入回车),否则禁用不生效 - 重载后,插件图标旁会出现灰色
Workspace标识;也可运行Developer: Show Running Extensions确认进程已退出 - 即使禁用了插件,若
settings.json中仍存在"editor.defaultFormatter": "esbenp.prettier-vscode"或"prettier.enable": true,VSCode 会强行拉起插件来满足配置
优先改插件自身开关,而非依赖 extensions.disabled
对主流插件(Prettier、ESLint、GitLens、Python),直接关掉其功能开关比禁用插件更轻量、更可靠,且无需重载窗口。
-
"prettier.enable": false—— 停掉格式化,但插件仍可提供语法高亮等基础能力 -
"eslint.enable": false或"eslint.run": "never"—— 关闭校验,避免后台扫描 JS/TS 文件 -
"gitlens.codeLens.enabled": false—— 隐藏行内提交信息,降低 CPU 持续占用 - 这些设置写入
.vscode/settings.json即刻生效,只作用于当前工作区,不影响其他项目
彻底不让插件加载:unwantedDependencies(VSCode 1.85+)
当你需要阻止语言服务器、LSP 后台进程启动(比如纯 Markdown 项目里不让 redhat.vscode-yaml 加载),unwantedDependencies 是比 extensions.disabled 更底层的方案。
- 在工作区根目录新建或编辑
.vscode/extensions.json,内容为:
{
"unwantedDependencies": ["esbenp.prettier-vscode", "redhat.vscode-yaml"]
}
https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode 提取 esbenp.prettier-vscode
Developer: Reload Window;它不会出现在“已禁用扩展”列表中,因为插件根本没被尝试激活内置插件禁用不了?那就关它的功能开关
GitHub Pull Requests、Notebook 渲染器等内置插件无法通过 extensions.disabled 或右键菜单禁用——它们不响应用户级禁用指令,也不显示在扩展面板中。
- 但它们大多暴露了细粒度配置项,关掉即可实现“功能休眠”:
-
"githubPullRequests.enabled": false—— 隐藏侧边栏 PR 视图和右上角按钮 -
"notebook.experimental.globalToolbar": false—— 收起 notebook 工具栏 -
"files.associations": {"*.log": "plaintext"}—— 避免把.log错绑到 JSON 语言服务,导致vscode.json-language-features强制加载 - 这些设置同样写入
.vscode/settings.json,立即生效,且无副作用
真正容易被忽略的是:禁用插件 ≠ 清理配置。很多团队协作项目里,.vscode/settings.json 中残留着已禁用插件的 formatter、validator、lens 开关,一打开文件就悄悄唤醒它们。每次禁用前,先搜一遍插件名,删掉所有相关字段,比反复重载窗口更省事。


















