vscode默认不格式化xml,需安装redhat.vscode-xml插件、配置editor.defaultformatter和editor.formatonsave等设置、关闭html.autoclosingtag冲突项,三步完成后即可实现自动缩进、属性分行与标签对齐。

VSCode 默认不格式化 XML,装对插件、配对设置、关掉冲突功能,三步就能让 XML 自动缩进、属性分行、标签对齐——不是它不行,是默认没开。
XML 格式化必须装插件,redhat.vscode-xml 是首选
VSCode 内置的 XML 支持只管高亮和基础校验,Format Document(Shift+Alt+F)根本没反应。装 redhat.vscode-xml 后,它会接管整个流程:缩进、换行、空行保留、属性拆分全可控。
- 安装后必须重启 VSCode 窗口,否则语言服务器不加载
- 它依赖 LSP,响应快、稳定性高,比轻量版
XML Tools更适合带 XSD 的项目 - 如果只是临时美化一个
.config文件,XML Tools也能用,但它不校验结构、不支持补全
格式化不生效?检查这三项配置是否写进 settings.json
插件装了 ≠ 自动工作。VSCode 需要明确告诉它“XML 文件该谁来格式化”,否则右键菜单里还是灰的。
-
"editor.defaultFormatter": "redhat.vscode-xml"—— 指定默认格式化器,缺了就手动选 -
"editor.formatOnSave": true—— 保存即格式化,避免漏触发 -
"xml.format.splitAttributes": "force"—— 强制每个属性独占一行,长标签立刻可读
注意:"xml.format.enabled": true 也得开着,否则格式化功能直接被禁用。
XML 标签自动补全靠 XSD 关联,不是靠插件开关
补全不是“开了插件就有”,而是 VSCode 解析了你的 XSD 后,才生成建议列表。关键在 XML 文件里那行 xsi:noNamespaceSchemaLocation 或 xsi:schemaLocation。
- 路径必须是相对路径(如
"./config.xsd"),不能用file://或网络地址 - XSD 文件名必须是
.xsd小写后缀,.XSD或.xsds都不认 - 必须同时启用
"xml.validation.schema": true,否则连 schema 文件都不去加载 - 如果 XSD 超过 5MB,补全会明显卡顿,建议拆分或简化
成对标签自动闭合被内置功能拦截,得手动关掉 html.autoClosingTag
装了 Auto Close Tag 却没反应?大概率是 VSCode 1.84+ 自带的 html.autoClosingTag 在抢活。它和插件互斥,且优先级更高。
- 在
settings.json里加"html.autoClosingTag": false - 改完必须全窗口重启,仅重载设置无效
- 想让
<script></script>和<style></style>也自动闭合,再加"auto-close-tag.SublimeTextMode": true
真正容易被忽略的是:语言模式必须是 XML(右下角显示 “XML”),不是 “Plain Text” 或 “PHP”,否则所有功能都失效。











