如何在VI中整理HTML文件的缩进?

153

我该如何修复他那些混乱的大型HTML文件的缩进?

我尝试了通常用来修复代码文件缩进的"gg=G命令,但是它似乎在HTML文件上无法正常工作。它只是移除了所有格式。

我还尝试设置:filetype = xml,看看是否欺骗它认为这是一个XML文件会有所帮助,但它仍然没有解决问题。

12个回答

1
我尝试了通常的“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设置,它们与此无关。

0

接着 wisbucky 的回答,以下是我诊断和修复使用 gg=G 缩进 xml 的基本步骤:

检测问题所在:

gg=G
(says 115 lines indented but actually all lines are still at left edge)

:se indentexpr?
indentexpr=

:scriptnames
(look for one ending in /indent/xml.vim but it's not there)
(look in system folder to make sure /usr/share/vim/vim81/indent/xml.vim exists --- it does)

解决问题:

:se ft?
filetype=xml

:filetype
filetype detection:ON  plugin:OFF  indent:OFF

:filetype indent on
:filetype
filetype detection:ON  plugin:OFF  indent:ON

:e
:se indentexpr?
indentexpr=XmlIndentGet(v:lnum, 1)

gg=G

:se indentexpr? 的健全性检查来自于 https://dev59.com/F2gu5IYBdhLWcg3wAici#11660992


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接