如何在 VI 中整理 HTML 文件的缩进?
-
03-07-2019 - |
题
我该如何修复他巨大的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 。
希望这可以提供帮助。
这是我的解决方案,非常适合打开<!>“丑陋的<!>”; 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
在上面的链接中,您拥有所有信息:
- 安装
- 配置(从第一个示例复制)
- 跑步
: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.txt
在ftplugin
文件夹中(在vimfiles下)。
另外一个文件:在html.vim
中添加以下行(或创建)/tidy
:
map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>
要使用它,只需打开一个HTML文件,然后输入/
。 (那个<leader>
是<=>键。)
您可以整合整洁和 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
上运行<=>,则必须重新打开文件<=>。
此外,您无需担心<=>和<=>设置,它们与此无关。