如何让 vim 缩进所有 HTML 标签?

如何让 vim 缩进所有 HTML 标签?

我在 Debian 7 上使用 vim 编辑 HTML 文档。我开始输入:<HTML>Return

首次返回后,光标缩进一级,这样当我输入<head>以及文档的其余部分时,它会显示如下内容:

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Test page</title>
    </head>
    <body>
        <div>
            <p>This is a paragraph.</p>
        </div>
    </body>
</html>

每行的标签后面都跟了一个,Return并且没有按下TabSpace键,vim 按照我的预期格式化了它。此外,当输入结束标签的首字母时</,vim 会取消该行的缩进,以匹配相应的开始标签的级别。

然后,在 Ubuntu 13.10 上的 vim 中输入相同的文档,当我以相同的方式输入相同的文档时,我得到以下结果:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Test page</title>
</head>
<body>
<div>
    <p>This is a paragraph.</p>
</div>
</body>
</html>

请注意,缩进直到<p>标签才开始,我猜是其后续兄弟元素和子元素。似乎 HTML 缩进样式的后续版本已选择不缩进诸如 html、head、body 等标签(?),以提高可读性。

我不喜欢 vim 不缩进所有标签这一事实。我该如何改变这种状况?

我尝试查看不同版本的缩进文件,但我没能弄清楚是否可以在那里做任何事情。pastebins:

我正在使用以下版本的 vim:

  • Debian 7:“Vi IMproved 7.3(2010 年 8 月 15 日,编译于 2013 年 2 月 10 日 02:27:59)”
  • Ubuntu 13.10:“Vi IMproved 7.4(2013 年 8 月 10 日,编译于 2013 年 8 月 12 日 00:28:05)”

答案1

确保你已经安装了完整的 vim:

sudo apt-get install vim

然后创建一个名为~/.vimrc以下内​​容的文件:

filetype plugin indent on

那么它就可以工作了。

更新来源更新内容)

在 7.4 版本中,缩进文件发生了变化,这就是导致问题的原因。新的缩进不会缩进每个 html 标签,但您可以使用以下命令指定要缩进的标签:

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

在 vim 中,或者像往常一样不带:in ~/.vimrc。(当然,将那些要缩进的标签放入列表中。)

或者,您可以直接将旧版本的缩进文件替换为新版本。在 12.04 中,旧缩进文件位于,/usr/share/vim/vim73/indent/html.vim所以我猜 7.4 版本的文件位于/usr/share/vim/vim74/indent/html.vim。或者,如果仅为您的用户覆盖它并保证其不受更新影响,请将其放入~/.vim/indent/html.vim

相关内容