我该如何修复他巨大的html文件的缩进,这些文件都乱七八糟的?

我尝试了平常的 “gg=G”命令, ,这是我用来修复代码文件缩进的方法。然而,它似乎不适用于 HTML 文件。它只是删除了所有格式。

我也尝试过设置 :filetype = xml, ,看看欺骗它认为这是一个 XML 文件是否会有帮助,但它仍然没有这样做。

有帮助吗?

解决方案

使用filetype indent on在我的.vimrc中,Vim非常好地缩进HTML文件。

shiftwidth of 2的简单示例:

<html>
  <body>
    <p>
    text
    </p>
  </body>
</html>

其他提示

有几件事都需要到位。只是在一个地方总结一下:

设置以下选项:

:filetype indent on
:set filetype=html           # abbrev -  :set ft=html
:set smartindent             # abbrev -  :set si

然后将光标移动到文件顶部并缩进到结尾:gg =G
或者选择要缩进的所需文本,然后按 = 缩进。

使用智能缩进的主要问题是,如果XML(或HTML)位于一行,因为它可能最终从卷曲请求返回,那么gg=G将无法完成。相反,我刚刚使用从VI直接调用的整理经历了一个很好的缩进:

:!tidy -mi -xml -wrap 0 %

这基本上告诉VI调用整理来清理一个XML文件而不包装这些行以使它们适合默认的68个字符的宽行。我处理了一个大的29MB XML文件,花了5或6秒钟。我猜对于一个HTML文件,命令应该是:

:!tidy -mi -html -wrap 0 %

如评论中所述,tidy是一个基本工具,您可以在许多基础Linux / MacOS系统上找到它。这是projet的页面,如果您希望拥有它,但不要: HTML Tidy

希望这可以提供帮助。

正如tylerl上面解释的那样,请设置以下内容:

:filetype indent on
:set filetype=html
:set smartindent

然而!

请注意,在vim 7.4中,默认情况下,html标签htmlheadbody和其他一些缩进。这是有道理的,因为html文件中的几乎所有内容都属于这些标记。如果你真的想要,你可以像这样缩进这些标签:

:let g:html_indent_inctags = "html,body,head,tbody" 

请参阅此处此处了解更多信息。

这是我的解决方案,非常适合打开<!>“丑陋的<!>”; HTML格式很好:

vim fileIn.html -c "set sw=2 | %s/>/>\r/ | execute 'normal gg=G' | set nohlsearch | g/^\\s*\$/d"

sw命令是因为我的默认值是4,这对于HTML来说太高了。

下一部分在每个元素(>)之后添加换行符(Vim认为它是一个回车,叹气)

然后用=

重新缩进整个文件

然后取消强调set hlsearch(因为我在我的vimrc中有| wq! fileOut.html

然后删除所有空/仅空白行(有关详细信息,请参阅此处,是双重转义,因为它在shell中)

如果您根本不想输入Vim,甚至可以将<=>添加到最后,只需清理文件即可。

我使用这个脚本:https://github.com/maksimr/vim-jsbeautify

在上面的链接中,您拥有所有信息:

  1. 安装
  2. 配置(从第一个示例复制)
  3. 跑步 :call HtmlBeautify()

干得漂亮!

您是否尝试过在 Vim 站点上使用 HTML 缩进脚本?

这是一个重量级的解决方案,可让您缩进,加上您在编辑时不一定要关心的所有HTML精美打印。

首先,下载整洁。确保将二进制文件添加到路径中,以便可以从任何位置调用它。

接下来,创建一个描述您喜欢的HTML风格的配置文件。文档对Tidy来说不是很好,但这里有一个概述,以及所有选项。这是我的配置文件:

bare: yes
break-before-br: no
clean: yes
drop-proprietary-attributes: yes
fix-uri: yes
indent-spaces: 4
indent: yes
logical-emphasis: yes
markup: yes
output-xhtml: yes
quiet: yes
quote-marks: yes
replace-color: yes
tab-size: 4
uppercase-tags: no
vertical-space: yes
word-2000: yes
wrap: 0

将此保存为tidyrc_html.txtftplugin文件夹中(在vimfiles下)。

另外一个文件:在html.vim中添加以下行(或创建)/tidy

map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>

要使用它,只需打开一个HTML文件,然后输入/。 (那个<leader>是<=>键。)

你去吧!无论如何,这不是一个快速的解决方案,但现在你可以更好地编辑这些巨大的,混乱的HTML文件。

您可以整合整洁 vim自动安装web / js-beautify“rel =”nofollow“> html-beautify -autoformat 。 之后,您可以通过一次击键执行安装的任何格式化程序。

  

我尝试了通常的<!>“gg = G <!>”;命令,这是我用来修复代码文件的缩进。但是,它似乎不适用于HTML文件。它只是删除了所有格式。

如果vim的autoformat / indent gg=G似乎是<!> quot; broken <!> quot; (例如左侧缩进每一行),很可能没有启用/加载缩进插件。它应该真的给出一个错误信息,而不是只是做坏的缩进,否则用户只是认为autoformat / indenting功能很糟糕,当它实际上非常好。

要检查缩进插件是否已启用/加载,请运行:scriptnames。看看.../indent/html.vim是否在列表中。如果没有,那么这意味着没有加载插件。在这种情况下,将此行添加到~/.vimrc

filetype plugin indent on

现在,如果您打开文件并运行:filetype plugin indent on,您应该看到:e。然后运行autoindent,现在应该执行正确的autoformat / indent。 (虽然它不会添加换行符,但如果所有html代码都在一行上,则不会缩进)。

注意:如果您在vim命令行而不是smartindent上运行<=>,则必须重新打开文件<=>。

此外,您无需担心<=>和<=>设置,它们与此无关。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top