我该如何修复他那些混乱的大型HTML文件的缩进?
我尝试了通常用来修复代码文件缩进的"gg=G
命令,但是它似乎在HTML文件上无法正常工作。它只是移除了所有格式。
我还尝试设置:filetype = xml
,看看是否欺骗它认为这是一个XML文件会有所帮助,但它仍然没有解决问题。
我该如何修复他那些混乱的大型HTML文件的缩进?
我尝试了通常用来修复代码文件缩进的"gg=G
命令,但是它似乎在HTML文件上无法正常工作。它只是移除了所有格式。
我还尝试设置:filetype = xml
,看看是否欺骗它认为这是一个XML文件会有所帮助,但它仍然没有解决问题。
如果vim的自动格式化/缩进gg=G
似乎“损坏”了(例如每行左缩进),那么最有可能的是缩进插件未启用/加载。它应该真正给出错误消息,而不仅仅是做了错误的缩进处理,否则用户会认为自动格式化/缩进功能很糟糕,实际上它还是相当不错的。
要检查是否启用/加载了缩进插件,请运行:scriptnames
。看看列表中是否有.../indent/html.vim
。如果没有,则表示未加载该插件。在这种情况下,请将此行添加到~/.vimrc
:
filetype plugin indent on
:scriptnames
,你应该会看到.../indent/html.vim
。然后运行gg=G
,这将正确自动格式化/缩进。 (虽然它不会添加换行符,因此如果所有HTML代码都在一行上,则不会缩进)。:filetype plugin indent on
而不是~/.vimrc
,则必须重新打开文件:e
。autoindent
和smartindent
设置,它们与此无关。接着 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