首页 > 解决方案 > =G 格式化 xml/html

问题描述

我通常通过执行以下操作来格式化 xml 或 html:

但是,如果文件仅缩小为一行,这将不起作用,这在 xml 中很常见。有没有办法在vim中轻松格式化单行html或html(即,没有插件)?

此外,vim 中的块格式化非常粗糙(“格式化”可能是一个雄心勃勃的词,因为它似乎更像是一个“缩进器”),例如以下内容:

  <footer>
    <div class="container"><div class="row"><div class="col-md-12">
      <small id="copyright">&copy; 2016 MySite
      </small>
    </div></div></div>
  </footer>

在vim中格式化如下:

  <footer>
      <div class="container"><div class="row"><div class="col-md-12">
                  <small id="copyright">&copy; 2016 MySite
                  </small>
              </div></div></div>
  </footer>

而这是它在TextMate中的作用:

    <footer>
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <small id="copyright">© 2016 MySite</small>
                </div>
            </div>
        </div>
    </footer>

标签: htmlxmlvim

解决方案


据我所知,缩进时没有内置的 vim 功能来分割行。所以你必须在缩进之前这样做。

正如这里注意到的,您可以使用外部工具tidy。它为您缩进和拆分(对 HTML 使用“-html”)。

:!tidy -mi -xml -wrap 0 %

您也可以手动重新格式化它。全部加入一行,用 subst 和 indent 分割。

ggVGgJ
:%s/>\s*</>\r</g
gg=G

推荐阅读