必须彻底清进程并重载语言服务才能解决格式化失效问题,因插件更新或同步后旧服务残留导致新配置未加载,需杀尽Code进程、启用对应插件、修正语言ID配置(如vue-html)、检查Developer Tools报错及输出面板日志确认服务启动。

直接重启 VSCode 不够,必须彻底清进程 + 重载语言服务。插件更新、Settings Sync 同步或跨平台迁移后,格式化失效几乎都卡在这一步——VSCode 没真正“断电”,旧语言服务还在后台挂着,新配置压根没加载。
右下角语言模式和格式化器名称全灰?说明服务没起来
这不是设置没生效,是语言服务器根本没启动。比如 Vue 文件显示 “Vue” 但旁边没有 Prettier 或 Volar,Format Document With… 列表为空,点 Shift+Alt+F 直接报 There is no formatter for 'vue'-files installed.。
- 先别改
settings.json,先确认插件是否真激活:Ctrl+Shift+X → 搜索volar(Vue)或prettier,看右上角是否显示“启用中”,不是“已禁用”或“仅工作区启用” - 点击右下角语言标识(如
Vue),选“Configure 'vue' language settings” → 确保没被误设成Plain Text或HTML - 某些插件(如 Volar 2.x)已弃用
vue语言 ID,改用vue-html,此时必须在settings.json中写"[vue-html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },写[vue]块无效
Developer Tools 里报 command not found?说明扩展注册失败
按 Ctrl+Shift+I(Windows/macOS)打开开发者工具 → Console 标签页 → 再按一次 Shift+Alt+F,如果出现 command 'editor.action.formatDocument' not found 或类似 Failed to activate extension esbenp.prettier-vscode,就是扩展没完成初始化。
- 临时禁用所有非必要插件(尤其主题类、UI 增强类),只留语言支持插件(如
Vue Language Features)和格式化插件(如Prettier) - 重启前手动杀干净进程:
Windows用任务管理器结束全部Code.exe;macOS用活动监视器强制退出所有Code进程;Linux运行pkill -f "code" - 重开 VSCode 后,立即打开输出面板(
Ctrl+Shift+U)→ 切换到对应语言日志(如Volar、Prettier),看有没有Starting server或Connected字样
保存时格式化不触发,但手动能用?检查 formatOnSave 链路是否被劫持
手动 Shift+Alt+F 有效,但 Ctrl+S 没反应,说明格式化能力存在,只是保存钩子断了。新版 ESLint、Volar、XML Tools 等插件常会接管 onWillSaveTextDocument,却不自动注册自己为默认格式化器。
- 搜
editor.formatOnSave,确认用户级和工作区级都为true,且没被"[javascript]": { "editor.formatOnSave": false }这类语言块覆盖 - 如果用了 ESLint 插件,检查它自己的开关:
eslint.format.enable必须为true,且editor.defaultFormatter要指向dbaeumer.vscode-eslint(若想让 ESLint 负责格式化) - 某些插件(如 Red Hat XML)升级后默认关掉
xml.format.enable,需显式设为true,否则editor.formatOnSave形同虚设
真正卡住的往往不是配错哪一行 JSON,而是语言服务没重启、进程残留、或者某个插件在背后悄悄覆盖了你的配置。每次改完设置,别急着试快捷键,先去输出面板盯一眼对应服务的日志——有 Started 才算活了,没日志就等于没启动。











