xml tools 插件不格式化 xml 文件,首要原因是语言模式未设为 xml;其次需检查 xmltools.formatoptions 或 xmltools.xmltoolsconfig 配置是否正确,且 indentationsize 必须为数字;最后确认 editor.defaultformatter 已绑定到 dotjoshjohnson.xml。

XML Tools 插件不格式化 xml 文件?先确认语言模式
VS Code 不会自动把后缀为 .xml 的文件识别为 XML 语言——它可能被当成纯文本或别的语言(比如某些模板文件被识别为 plaintext 或 html)。格式化功能依赖正确的语言模式,否则 xmlTools.format 根本不会触发。
实操建议:
- 打开你的 XML 文件,看右下角状态栏显示的语言名称(比如 “Plain Text”)
- 点击它 → 选择 “Configure File Association for ‘*.xml’” → 设为
xml - 或者手动按
Ctrl+K M(Win/Linux)或Cmd+K M(Mac),输入xml回车 - 重启文件或重新打开,再试快捷键
Shift+Alt+F
格式化后缩进没变化?检查 xmlTools.xmlToolsConfig 配置项
XML Tools 默认缩进是 2 空格,但如果你改过 VS Code 全局缩进设置(比如设成 4),它并不会自动同步;更关键的是,插件自己的配置项 xmlTools.xmlToolsConfig 优先级更高,一旦写错或缺失,格式化就“看起来没反应”。
实操建议:
- 打开设置(
Ctrl+,),搜xmlTools.xmlToolsConfig - 点击 “在 settings.json 中编辑”,确保有类似内容:
{
"xmlTools.xmlToolsConfig": {
"indentationSize": 2,
"preserveWhitespace": false
}
}
-
indentationSize必须是数字(不能是字符串"2"),否则解析失败,退回到默认行为(可能无缩进) - 如果项目里有
.vscode/settings.json,检查它是否覆盖了该配置
格式化时标签错位、属性换行异常?留意 xmlTools.formatOptions 的兼容性
新版 XML Tools(v2.5+)引入了 xmlTools.formatOptions,它和旧版的 xmlTools.xmlToolsConfig 冲突——两者同时存在时,后者会被忽略,而前者若未完整配置,就会导致格式化逻辑不全(比如只缩进不换行、属性挤在一行)。
实操建议:
- 优先使用
xmlTools.formatOptions(推荐),删除旧的xmlTools.xmlToolsConfig - 最小可用配置示例:
{
"xmlTools.formatOptions": {
"indentSize": 2,
"newlineAfterOpenTag": true,
"newlineBeforeCloseTag": true,
"preserveWhitespace": false
}
}
-
newlineAfterOpenTag和newlineBeforeCloseTag控制是否对空元素/自闭合标签换行,缺省为false,容易造成<tag></tag>被塞进大段内容里 - 老项目升级插件后突然格式化异常,大概率是这个配置迁移没做
保存时自动格式化失效?别只盯 editor.formatOnSave
editor.formatOnSave 开了,XML 还是不自动格式化,常见原因是:VS Code 的格式化提供者(formatter provider)没绑定到 XML 语言。XML Tools 插件必须显式声明自己支持 xml 语言,而某些工作区禁用了该关联。
实操建议:
- 打开命令面板(
Ctrl+Shift+P),运行Format Document With... - 看列表中是否出现 “XML Tools”;如果没有,说明插件未注册成功或被禁用
- 检查
settings.json是否有"[xml]": { "editor.defaultFormatter": "DotJoshJohnson.xml" } - 如果用了 Prettier 或其他 formatter,它们可能抢占了
xml语言的控制权,删掉对应语言块即可
真正卡住的地方往往不是插件装没装,而是语言模式、配置项优先级、格式化提供者这三层之间谁压过了谁。调的时候别只刷新插件,先看右下角语言标识,再查 JSON 配置里有没有互相抵消的字段。










