extensions.json 必须位于项目根目录的 .vscode/extensions.json 路径,json格式合法且仅含 recommendations 字段,同时 extensions.ignorerecommendations 为 false,vscode 扩展视图底部才会显示「workspace recommendations」区域。

插件推荐列表 extensions.json 怎么写才生效
项目根目录下的 .vscode/extensions.json 是团队协作时统一插件环境的核心机制,但它不是“装完就自动装”,必须满足三个条件才会触发提示:文件存在 + 格式合法 + 用户未禁用推荐功能。
-
extensions.json必须放在项目根目录的.vscode/子目录下,路径错一层(比如放成./extensions.json)就完全无效 - 内容必须是标准 JSON,且顶层只允许
recommendations字段,例如:{ "recommendations": ["ms-python.python", "esbenp.prettier-vscode"] } - 用户需在设置中开启
extensions.autoCheckUpdates和extensions.showRecommendations(默认开启,但有人会关掉) - VSCode 仅在首次打开该工作区时弹出安装建议;后续打开不会重复提醒,也不会自动安装——这点常被误认为“失效”
多个同名插件共存时怎么避免冲突
比如同时启用 ESLint 和 Prettier,或装了两个代码格式化插件(prettier-vscode 和 editorconfig),VSCode 不会自动协调它们的执行顺序,结果往往是保存后反复格式化、样式来回跳变。
- 优先级由插件自身声明的
activationEvents和contributes.formatters决定,而非安装顺序——不能靠“先装哪个”来控制 - 检查冲突最直接的方式:右键编辑器空白处 → “格式化文档”,看弹出菜单里列出哪些格式化提供者;若出现多个,说明已注册冲突
- 解决方法不是卸载,而是禁用次要插件,并在
settings.json中显式指定主力:"editor.defaultFormatter": "esbenp.prettier-vscode"
- 特别注意:某些插件(如
Python扩展)内置 Linter 和 Formatter,启用外部pylint或black前,务必关闭其对应子功能,否则诊断信息会重叠甚至打架
插件更新后行为异常,如何快速回退到旧版
VSCode UI 不提供版本回退入口,新版插件一旦引入破坏性变更(比如 Python 扩展 v2024.x 移除了旧调试协议支持),你只能手动降级——这个动作比想象中更频繁,且容易卡在第三步。
- 第一步:在 Extensions 视图中卸载当前插件(右键 → Uninstall),别跳过,否则
.vsix安装会失败 - 第二步:访问
marketplace.visualstudio.com/items?itemName=author.extension-name,把author.extension-name替换成实际 ID(如ms-python.python) - 第三步:滚动到页面底部找
Version History,点击目标版本旁的Download—— 注意不是“Install”,下载的是.vsix文件 - 第四步:按
Ctrl+Shift+P打开命令面板,输入Extensions: Install from VSIX...,选中刚下载的文件 - 关键细节:回退后插件状态默认为“启用”,但部分配置项(如
python.defaultInterpreterPath)可能因版本差异被忽略,需手动核对
插件路径被改过,怎么确认当前加载的是哪个版本
当你用 code --extensions-dir /custom/path 启动,或公司策略强制重定向插件目录时,VSCode 仍会从默认路径加载部分内置扩展,导致“明明卸载了却还在运行”的困惑。
- 打开命令面板(
Ctrl+Shift+P),输入并运行Developer: Show Running Extensions,它会列出所有已加载插件及其完整路径 - 重点看
Location列:如果是USER表示来自用户级扩展目录(~/.vscode/extensions),WORKSPACE表示来自工作区.vscode/extensions,BUILTIN是 VSCode 自带的 - 若发现某个插件出现在两个路径下(比如
USER和WORKSPACE),说明有本地覆盖逻辑,此时以WORKSPACE路径为准 - 路径不一致时,
settings.json中的插件相关配置(如prettier.requireConfig)可能只对特定路径生效,需分别检查
Developer: Show Running Extensions 和手动验证行为来定位。











