Vim:使 XML 文本“漂亮”

Rob*_* IV 37 vim editors xml vi text-processing

是否有一种简单的方法vi可以使您的 XML 文本“漂亮”?

例如:

我要这个..

            <person>
  <name>Nick</name>
 <age>26</age>
         <gender>male</gender>
<occupation>doctor</occupation>
    </person>
Run Code Online (Sandbox Code Playgroud)

成为这个...

<person>
    <name>Nick</name>
    <age>26</age>
    <gender>male</gender>
    <occupation>doctor</occupation>
</person>
Run Code Online (Sandbox Code Playgroud)

Nat*_*ate 48

我最幸运的是:

:%!xmllint --format %
Run Code Online (Sandbox Code Playgroud)

但是,它对您的标签很严格,因此如果您的开始和结束标签不匹配,则会出错。它还在您的文件顶部添加了一个 XML 声明(如果您也没有)。

此页面推荐以下内容,但我无法使其正常工作:

:set filetype=xml
:filetype indent on
gg=G
Run Code Online (Sandbox Code Playgroud)

我测试了它,它似乎有点工作。不完美,但它完成了工作。

如果这不起作用,您可以在 Python 中使用 minidom 为您设置格式。

import xml.dom.minidom

xml = xml.dom.minidom.parse(filename)
formatted_xml = xml.toprettyxml()
Run Code Online (Sandbox Code Playgroud)

  • `:%!xmllint --format %` 似乎运行良好,所以我已将其添加到帖子中。 (2认同)
  • 我正在做 ":set ft=xml | %!xmllint --format -" 以使其在当前缓冲区上工作并打开语法突出显示 (2认同)