Mi avrebbe evitato un'errore qualche giorno fa mentre testavo un parser di xml proprio perchè vim 7 non ha di default un formattatore e validatore di xml ma è molto semplice aggiungerne uno.
Inserendo in vimrc la seguente riga
vmap ,px !xmllint --format -<cr>
basta selezionare in modalità visuale ciò che si vuole verificare e digitare ',px' a questo punto se l'xml è valido viene formattato altrimenti segnala un errore e specifica anche il punto.
Quindi si passa da
<xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="foo"> <metadata1> bla</metadata1> <metadata2> bla bla</metadata2> </message>
a
<xml version="1.0" encoding="UTF-8" standalone="yes">
<message version="1" type="foo">
<metadata1> bla</metadata1>
<metadata2> bla bla</metadata2>
</message>
ma se c'è un errore (ad esempio manca un '?' iniziale)
<xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="foo"> <metadata1> bla</metadata1> <metadata2> bla bla</metadata2> </message>
otteniamo
-:1: parser error : attributes construct error
<xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="" parser="" error="" couldn="" t="" find="" end="" of="" start="" tag="" xml="" line="" 1=""><xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="" parser="" error="" extra="" content="" at="" end="" of="" the="" document=""><xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="">
</message></xml></message></xml></message></xml></xml></cr><cr><xml version="1.0" encoding="UTF-8" standalone="yes"><xml version="1.0" encoding="UTF-8" standalone="yes"><message version="1" type="" parser="" error="" couldn="" t="" find="" end="" of="" start="" tag="" xml="" line="" 1=""><xml version="1.0" encoding="UTF-8" standalone="yes"><message version="1" type="" parser="" error="" extra="" content="" at="" end="" of="" the="" document=""><xml version="1.0" encoding="UTF-8" standalone="yes"><message version="1" type="">
</message></xml></me