我在 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并且没有按下Tab或Space键,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:
- Debian 7 上的 /usr/share/vim/vim73/indent/html.vim
- Ubuntu 13.10 上的 /usr/share/vim/vim74/indent/html.vim
我正在使用以下版本的 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