Search code examples
xmlvim

Vim indent xml file


I am learning Vim but I thought this was a simple task but I cannot get it to work. I have browser SO but the solutions are not working for me.

I am trying to correctly indent an file (xml). The command I use is:

gg=G 

or ggVG= (made this one up myself probably does something different ;))

My .vimrc is:

syntax on 
filetype plugin indent on 
set nu 

Solution

  • I like Berei's answer. However, I think the following is a little more flexible in that you don't have to alter your vimrc file. Plus it is easier to format select portions of the XML file (something I happen to do a lot).

    First, highlight the XML you want to format.

    Then, in visual mode, type ! xmllint --format -

    Your command-line at the bottom will look like this:

    :'<,'>!xmllint --format -

    Then hit enter.

    Technical Explanation

    The selected text is sent to the xmllint command, then --format'ed, and the results of xmllint are placed over your selected text in vim. The - at the end of the command is for receiving standard input - which, in this case, is the selected text that vim sends to xmllint.