100%是插件冲突——执行code --disable-extensions后若.py或.ts文件补全正常、状态栏显示“pylance ready”等提示,即可确认;非网络、token或语言服务器问题,该命令仅临时禁用插件,关闭即恢复。

多语言混合项目里插件冲突不是偶发问题,而是必然发生——只要你在同一工作区打开 .py、.ts、.vue 文件,且装了对应语言的主流插件,就大概率触发补全失效、跳转错乱或保存时反复格式化。
怎么快速确认是插件冲突而不是语言服务器挂了
别急着重装 Python 或删配置。直接终端执行:code --disable-extensions,然后打开任意一个 .py 或 .ts 文件,敲几行代码按 Ctrl+Space。如果补全立刻出现、状态栏显示 “Pylance Ready” 或 “TypeScript Server ready”,那 100% 是插件冲突——不是网络卡、不是 token 过期、也不是 ms-python.python 没装好。
这个命令只临时禁用所有插件,关掉窗口就自动恢复,比点十次“禁用”按钮还快。
哪些插件组合在混合项目里最危险
这些组合在真实团队项目中复现率极高,不是理论风险:
-
github.copilot+aliyun.tongyi-lingma+tabnine.tabnine-vscode:三者都注册editor.suggest.provider,VS Code 会随机选一个响应,结果就是补全时有时无、光标卡顿、右下角图标消失 -
ms-python.python+ms-python.pylance:旧版 Python 插件已把 Pylance 当子模块打包,再同时启用会导致类型检查重复初始化,CPU 占用飙升到 300% -
johnsoncodehk.volar+octref.vetur:Vue 3 项目里共存,轻则<template></template>区域高亮失效,重则整个.vue文件爆红,但.ts文件完全正常 -
esbenp.prettier-vscode+dbaeumer.vscode-eslint+editorconfig.editorconfig:保存时三个插件抢着格式化,你改一行,它来回修三遍,最终结果可能比原始代码还丑
工作区禁用必须写 settings.json,不能只点按钮
图形界面点“禁用(工作区)”看似方便,但实际只改了用户级设置,对当前项目无效。真正生效的写法是手动编辑项目根目录下的 .vscode/settings.json:
{
"extensions.enabled": {
"github.copilot": false,
"ms-python.python": false,
"octref.vetur": false,
"esbenp.prettier-vscode": false
}
}
注意三点:
-
extensions.enabled是白名单逻辑,设为false才是禁用;写成"extensions.disabled"完全无效,VS Code 根本不认这个字段 - 禁用
ms-python.python后仍报错?说明残留进程还在跑。直接删掉对应目录:rm -rf ~/.vscode/extensions/ms-python.python-*(macOS/Linux) - 如果项目里只有前端代码,但
python插件仍在后台扫描所有文件,那它不仅没用,还会拖慢大仓库的启动速度
按语言粒度禁用比全禁更精准
有些插件你不想彻底禁用,只是不想让它碰某类文件。比如 prettier-vscode 在 Python 项目里不该参与格式化,但 JS/TS 文件里必须用它。这时要加语言专属配置:
{
"[python]": {
"editor.formatOnSave": false,
"editor.defaultFormatter": null
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
这种写法不会影响插件本身是否加载,但能切断它对特定语言文件的实际干预。比全局禁用更细,也比靠运气祈祷它“自觉不干活”可靠得多。
真正难的不是找到哪个插件该禁,而是判断它在当前项目里到底有没有被需要——很多插件装了就忘,直到某天 .vue 文件突然满屏红线,才想起三个月前随手点的“安装推荐”。











