在Vim中格式化和缩进HTML

时间:2012-04-03 05:48:47

标签: html vim formatting macvim

我目前有一个巨大的HTML文件,它没有换行符,只显示在一行中。

我想在vim中格式化(特别是macvim)。我尝试了以下选项,但没有一个对我有效。

  • 选择文字并按下=。这只会自动打算代码。但由于整个代码存在于一行中,因此它不会执行任何操作
  • 我尝试了这个插件http://www.vim.org/scripts/script.php?script_id=3613这种方法有效,但只会为当前标记插入换行符。我希望整个文件格式化

有没有办法使用插件或其他方式?

谢谢!

3 个答案:

答案 0 :(得分:38)

启动它的一种方法是将所有标签分成各自的行。

:s/<[^>]*>/\r&\r/g
:g/^$/d

如果您有浮动<>符号(例如无效的HTML,JavaScript比较运算符,CSS直接后代选择器部分),这将无法正常工作,您可以切换到类似的做法结束标记 - <\/[^>]*>。无论如何,它提供了一个坚实的开端。

<强>演示:

使用这样的理想化文档,

<!DOCTYPE html><html><head><title>hello</title></head><body>world</body></html>

这产生了这个:

<!DOCTYPE html>
<html>
<head>
<title>
hello
</title>
</head>
<body>
world
</body>
</html>

然后,=将产生你想要的东西:

<!DOCTYPE html>
<html>
    <head>
        <title>
            hello
        </title>
    </head>
    <body>
        world
    </body>
</html>

答案 1 :(得分:3)

为了获得更好的结果,您应该使用专门的外部格式程序。

您可以通过安装插件tidy自动集成html-beautifyvim-autoformat。 之后,您可以通过一次击键执行安装的任何格式化程序。

答案 2 :(得分:0)

最好使用整洁的实用程序as described in this answer

已经为这项工作编写了好的工具