在 Vim 中快速格式化 XML 需先安装 xmllint,再于 .vimrc 中配置 formatprg 或快捷键(如 f),支持全文件/选区格式化,并可处理编码与缩进问题。
在 Vim 中快速格式化 XML 代码,核心是借助外部工具(如 xmllint)并配置好快捷键或命令,无需手动缩进或换行。
xmllint 是 libxml2 提供的命令行 XML 工具,多数 Linux 发行版自带,macOS 可通过 Homebrew 安装:
sudo apt install libxml2-utils
brew install libxml2(通常已包含 xmllint)libxml2-utils
终端中运行 xmllint --version 确认可用。若不可用,Vim 的格式化命令会失败。
将以下内容添加到你的 ~/.vimrc(或 ~/.config/nvim/init.vim)中:
autocmd FileType xml setlocal formatprg=xmllint\ --format\ --recover\ -
这行配置让 Vim 在 XML 文件中启用 gq 命令时调用 xmllint 自动美化。之后只需:
ggVG 全选),再按 gq
gq
注意:--recover 参数可容忍轻微语法错误(如缺失闭合标签),避免格式化中断。
在 .vimrc 中添加快捷键,比如用 触发全文件格式化
:
autocmd FileType xml nnoremapf :%!xmllint --format --recover -
这样打开 XML 文件后,按下 \f(默认 是 \)即可整份重排。你也可以把 改成 , 或其他键位。
如果 XML 声明含 encoding="GBK" 或类似非 UTF-8 编码,xmllint 可能报错。此时建议:
:set fileencoding=utf-8 | write!
:%!xmllint --encode utf-8 --format --recover -
--nsclean 并配合 --indent(新版 xmllint 默认启用)默认缩进为 2 空格;如需 4 空格,目前 xmllint 不支持直接配置,可后续用 :%s/^ / /g 批量替换,或改用 xmlstar 等替代工具。