我如何收拾一个HTML文件的第六缩进?

问题描述 投票:118回答:10

如何修复产品,其全乱了他的巨大的HTML文件的缩进?

我尝试了平时"gg=G" command,这是我用它来修复代码文件的缩进。然而,这似乎并没有对HTML文件的工作权利。它只是删除了所有格式。

我也试着设置:filetype = xml,看是否欺骗它,以为这是一个XML文件,将有助于但它仍然没有做到这一点。

html vim vi indentation
10个回答
86
投票

随着我的filetype indent on,Vim的缩进HTML文件很好地内.vimrc

简单的例子为2 shiftwidth

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

0
投票

我尝试通常的“GG = G”命令,这是我使用固定的代码文件的缩进。然而,这似乎并没有对HTML文件的工作权利。它只是删除了所有格式。

如果Vim的自动套用格式/缩进gg=G似乎是“破”(比如左缩进每一行),最有可能的缩进插件未启用/加载。它应该给一个错误信息,而不是仅仅做不好的缩进,否则用户只是觉得自动套用格式/缩进功能是可怕的,当它实际上是相当不错的。

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

filetype plugin indent on

现在,如果你打开文件,并运行:scriptnames,你应该看到.../indent/html.vim。然后运行gg=G,现在应该做的正确的自动套用格式/缩进。 (虽然它不会增加换行符,因此,如果所有的HTML代码是单行线,它不会缩进)。

注:如果您在Vim命令行,而不是:filetype plugin indent on上运行~/.vimrc,则必须重新打开该文件:e

此外,您不必担心autoindentsmartindent设置,它们不适合此。


168
投票

有几件事情都需要到位。只是为了总结它们都在同一个位置:

设置以下选项:

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

然后或者将光标移动到该文件,并缩进到端部的顶部:gg =G 或者选择所需的文本缩进和命中=缩进它。


52
投票

使用智能缩进的主要问题是,如果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的系统。这里是谟在页面的情况下,你希望你有,但并不:HTML Tidy

希望这可以帮助。


46
投票

正如上面tylerl解释说,设置如下:

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

However!

需要注意的是在VIM 7.4 html标签htmlheadbody,和其他一些默认情况下不缩进。这是有道理的,在HTML文件中几乎所有的内容这些标签下下降。如果你真的想,你可以得到这些代码缩进像这样:

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

herehere以获取更多信息。


11
投票

这是我的解决方案,很好地工作在一个很好的方式间隔开“丑” HTML:

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

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

下一部分的每个元素(>)后增加了一个换行符(VIM认为这是一个回车,叹息)

然后重新缩进与=整个文件

然后unhighlight >(因为我有set hlsearch在我的vimrc)

然后删除所有空/只的空白线(详见here,也这是双重逸出,因为它在壳)

你甚至可以添加| wq! fileOut.html到最后,如果你不希望在所有的进入Vim,只是清理文件。


6
投票

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

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

  1. 安装
  2. 配置(从第一个例子中复制)
  3. 运行:call HtmlBeautify()

做这项工作一级棒!


4
投票

你是否尝试过使用的Vim的网站上的HTML脚本缩进?


4
投票

这里有让你缩进,加上所有的HTML的格式打印,你不一定要在乎,而你正在编辑一个重量级的解决方案。

首先,下载Tidy。确保你的二进制文件添加到您的路径,这样你就可以从任何位置调用它。

接下来,创建说明您最喜欢的HTML味配置文件。文档不是很大的整齐,但这里是一个overviewall the options的列表。下面是我的配置文件:

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.txt文件夹中保存为ftplugin(下vimfiles)。

还有一个文件:添加以下行(或创建)html.vim,也ftplugin

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

要使用它,只需打开一个HTML文件,并键入/tidy。 (这/<leader>键)。

你去那里!不是一个快速的解决方案,以任何方式,但现在你编辑那些巨大的,混乱的HTML文件,好一点的装备。


2
投票

您可以整合双方tidy并通过安装插件html-beautify自动vim-autoformat。在此之后,你可以执行任何一个格式化安装有一个按键。

© www.soinside.com 2019 - 2024. All rights reserved.