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

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

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

たとえば、

私はこれが欲しい..

            <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>

答え1

私はこの点で最も幸運でした。

:%!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()

関連情報