在 Vim 中格式化和缩进 HTML

新手上路,请多包涵

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

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

  • 选择文本并按下 = 。这只会自动使用代码。但是由于整个代码都在一行中,所以它什么也没做
  • 我试过这个插件 http://www.vim.org/scripts/script.php?script_id=3613 这种方法有效,但只会为当前标签插入换行符。我要格式化整个文件

有没有办法使用插件或其他方式来做到这一点?

谢谢!

原文由 Sudar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 809
2 个回答

启动它的一种方法是将所有标签拆分到它们自己的行中。

 :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>

原文由 Chris Morgan 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

原文由 chtenb 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题