web-dev-qa-db-ja.com

Vim:XMLテキストを「きれい」にする

vi内でXMLテキストを「きれい」にする簡単な方法はありますか?

例えば:

これ欲しい..

            <person>
  <name>Nick</name>
 <age>26</age>
         <gender>male</gender>
<occupation>doctor</occupation>
    </person>

これになる...

<person>
    <name>Nick</name>
    <age>26</age>
    <gender>male</gender>
    <occupation>doctor</occupation>
</person>
33
Rob Avery IV

私はこれで最も運が良かった:

:%!xmllint --format %

ただし、タグについては厳密なので、開始タグと終了タグが一致しない場合はエラーになります。また、XML宣言がない場合は、ファイルの先頭にXML宣言を追加します。

このページでは次のことをお勧めしますが、動作させることはできません:

:set filetype=xml
:filetype indent on
gg=G

私はそれをテストしました、そして、それはいくらかうまくいくようです。完璧ではありませんが、仕事は完了です。

それがうまくいかない場合は、Pythonでminidomを使用してフォーマットすることができます。

import xml.dom.minidom

xml = xml.dom.minidom.parse(filename)
formatted_xml = xml.toprettyxml()
40
Nate