HTML 缩进在编译的 Vim 7.4 中不起作用,任何想法



在试图让vim正确缩进.html文件时,我遵循了此处列出的示例。

给定以下文件index.html

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

我尝试像这样打开它(忽略我的.vimrc以确保它不会产生负面影响(

vim -u NONE index.html

然后我设置选项以启用自动缩进:

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

然后我用 gg=G 缩进了整个文件,结果是:

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

我检查以确保html.vim文件存在,并且它肯定在那里

$ head -2 ~/.vim/after/ftplugin/html.vim 
" Vim syntax file
" Language: HTML
$ head -2 ~/.vim/ftplugin/html.vim
" Vim syntax file
" Language: HTML

我的 vim 版本是 7.4:

$ vim --version | head -1
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Sep 23 2013 16:12:20)

它包括智能缩进:

$ vim --version | grep smartindent
-ebcdic          +mouse           +smartindent     +xim

我不知道为什么缩进不起作用!有什么线索或想法可以进一步研究这个问题吗?

FWIW,我正在运行 Ubuntu 13.04。

正如Cory的回答中提到的,目前分发的版本是Vimscript 2075。如果您转到该插件页面,您可以看到记录的所有标签,默认情况下这些标签会增加缩进。

您在示例中给出的所有标签都不在此默认列表中,但有很多标签。

由于 HTML 的缩进对用户偏好非常开放,因此插件维护者包含一个选项,可以在增加缩进的标签列表中添加或删除标签。参见 :help html-indent,其中建议:

You can add further tags with:
  :let g:html_indent_inctags = "html,body,head,tbody"
在版本

7.3 和 7.4 之间,位于 $VIMRUNTIME/indent 中的捆绑html.vim文件发生了更改。当前分发的版本实际上是 Vimscript #2075,默认情况下它不会缩进某些html标签。

我推荐上面的 Ben 解决方案,但您也可以恢复到分布式html.vim文件的先前版本。

为此,只需将现有的 7.4 html.vim 文件替换为 7.3 中的文件即可。

wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
tar jxf vim-7.3.tar.bz2
cp vim73/runtime/indent/html.vim ~/.vim/indent/

截至 7.4.52

在 vim 中:

:let g:html_indent_inctags = "html,body,head,tbody"
:call HtmlIndent_CheckUserSettings()

其他在 .vimrc 中:

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

我只想把它添加到顶部答案的评论中,回馈,在花了太多时间没有得到答案之后,但显然没有足够的声誉:(

第一个故障排除步骤是运行 :scriptnames 。如果您没有看到.../indent/html.vim,则表示插件未正确加载,缩进将无法正常工作。它可能只是在每一行中留下缩进。(问题是 vim 没有给出错误,所以看起来缩进做得很糟糕。

让它工作的最可靠方法是 把这条线放在你的~/.vimrc .

filetype plugin indent on

然后再次使用 vim 打开文件,并运行 :scriptnames .您现在应该看到.../indent/html.vim。然后键入 gg=G 以自动格式化整个文件。

一个重要的注意事项让我绊倒了一段时间:如果您不将其放入~/.vimrc,而是在打开文件后键入:filetype plugin indent on,则必须再次使用:e重新打开文件。在打开文件之前,必须加载缩进插件。运行:scriptnames进行确认。

旁注:您无需担心smartindentautoindent设置,这些设置用于其他用途。

相关内容

最新更新