Last Updated: February 25, 2016
· sickill

Pretty format XML in Vim

Vim lets you set equalprg option for each filetype. From Vim docs:

External program to use for "=" command. When this option is empty the internal formatting functions are used; either 'lisp', 'cindent' or 'indentexpr'. When Vim was compiled without internal formatting, the "indent" program is used. ...

Install xmllint command (on Unix-like systems it comes with libxml
package). Then add following line to you .vimrc:

au FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null

Now, to pretty format your XML just type gg=G.

4 Responses
Add your response

Why not gg:=$ ? :-)

over 1 year ago ·

gg=G is one less keystroke, and actually doesn't require holding shift twice (for the colon and dollar sign). :)

over 1 year ago ·

I meant the whole setup. As long as i've used vim it always indented xml correctly without having to setup xmllint. Or am I missing something? :-?

over 1 year ago ·

Yea, I'm honestly not sure what the benefit is here. Maybe it has support for more modern styling or attributes. Otherwise, not sure. :/

over 1 year ago ·