Vim: XML metnini “oldukça” yapmak


33

viXML metninizi "güzel" yapmak için kolay bir yol var mı ?

Örneğin:

Bunu istiyorum..

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

Bu olmak için ...

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

Her şey başarısız olursa, her zaman makrolar vardır. qq0dt<jqve sonra 3@qj@@5k4I<space><esc>j.j.j.. Vay, bu oldukça şifreli görünüyor.
Braden Best

Yanıtlar:


39

Bununla en çok şansı yaşadım:

:%!xmllint --format %

Yine de etiketleriniz için kesindir, bu nedenle açılış ve kapanış etiketleriniz uyuşmazsa hata verir. Ayrıca, bir tane de yoksa, dosyanızın başına bir XML bildirimi ekler.

Bu sayfa aşağıdakileri önerir, ancak çalışmasını sağlayamıyorum:

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

Test ettim ve bir şekilde çalışıyor gibi görünüyor. Mükemmel değil, ama işi halleder.

Bu işe yaramazsa, sizin için biçimlendirmek için Python'da minidom kullanabilirsiniz.

import xml.dom.minidom

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

Bu gg=Gkomut gerçekten işe yaramadı. Bunun yerine, sahip olduğum önceki tüm girintileri kaldırdı.
Rob Avery IV

Evet, aynı şeyi buldum. Zaten belirli bir biçimlendirme türüne sahipsem çalışıyor gibi görünüyor, ancak genellikle değil. Bunu biraz daha denemek zorunda kalacağım.
Nate

1
:%!xmllint --format %iyi çalışıyor gibi görünüyor, ben de yazıya ekledim.
Nate

1
@ kenny Bununla başa çıkmak için cevabı değiştirdim
törzsmókus

2
": Set ft = xml |%! Xmllint --format -" 'ı geçerli tampon üzerinde çalışmasını sağlamak ve sözdizimi vurgulamasını açmak için
yapıyorum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.