在vi中格式化xml

时间:2015-01-15 06:32:22

标签: xml vi

我使用以下命令在vi中格式化我的xml。

:1,$!xmllint --format --recover - 2>/dev/null

然而压痕不合适。输出就像标签内的数据分隔1个空格。

   <masterTag>                     
      <tag1>eeww</tag1>  
      <tag2>rrt</tag2>             
      <tag3>ee</tag3>      
      <tag4>1</tag4>                   
    </masterTag>  

如果我希望在标签内部将变量分隔10个空格,我可以使用什么样的comamnd 即输出

   <masterTag>                     
                <tag1>eeww</tag1>  
                <tag2>rrt</tag2>             
                <tag3>ee</tag3>      
                <tag4>1</tag4>                   
    </masterTag>

还有一个4级案例要求(输入)

       <a>
       <b>
       <c>
       <d>
       </d>

       </c>
<!-- this is test  -->

       </b>
       </a>  

我得到的输出是

   <a>
          <b>
                 <c>
                        <d>
   </d>
                 </c>
                 <!-- this is test  -->
          </b>
   </a>

这显然是错误的

1 个答案:

答案 0 :(得分:1)

来自xmllint手册:http://linux.die.net/man/1/xmllint

  

--format

     

重新格式化并重新输出输出。 XMLLINT_INDENT环境变量控制缩进。默认值为两个空格“”。

因此以下命令:

:1,$!XMLLINT_INDENT='          ' xmllint --format --recover - 2>/dev/null

将您的间距设置为10个空格。

使用export命令可以更改同一shell中对xmllint的所有调用的这些设置:

export XMLLINT_INDENT='          '