在尝试正确vim缩进.html文件时,我按照这里列出的示例进行操作.
给出以下文件index.html:
<html>
<body>
<p>
text
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我试图打开它,像这样(忽略我.vimrc,以确保它不会干扰负)
vim -u NONE index.html
Run Code Online (Sandbox Code Playgroud)
然后我设置选项以启用自动缩进:
:filetype plugin indent on
:set filetype=html # abbrev - :set ft=html
:set smartindent # abbrev - :set si
Run Code Online (Sandbox Code Playgroud)
然后我缩进整个文件gg=G,这是结果:
<html>
<body>
<p>
text
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我检查确保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
Run Code Online (Sandbox Code Playgroud)
我的vim版本是7.4:
$ vim --version | head -1
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Sep 23 2013 16:12:20)
Run Code Online (Sandbox Code Playgroud)
它包括智能缩进:
$ vim --version | grep smartindent
-ebcdic +mouse +smartindent +xim
Run Code Online (Sandbox Code Playgroud)
我不知道为什么压痕不起作用!有进一步研究这个问题的线索或想法吗?
FWIW,我正在运行Ubuntu 13.04.
Ben*_*Ben 25
正如Cory的回答所提到的,目前分发的版本是Vimscript 2075.如果您转到该插件页面,您可以看到记录的所有标签,默认情况下会增加缩进.
您在示例中给出的标签都不在此默认列表中,但有很多标签.
由于HTML的缩进对用户偏好非常开放,因此插件维护者已经包含一个选项,用于在增加缩进的标记列表中添加或删除标记.请参阅:help html-indent,其中建议:
You can add further tags with:
:let g:html_indent_inctags = "html,body,head,tbody"
Run Code Online (Sandbox Code Playgroud)
Cor*_*ein 14
在版本7.3和7.4之间,捆绑的html.vim文件位于已$VIMRUNTIME/indent更改.当前分发的版本实际上是Vimscript#2075,html默认情况下它不会缩进某些标签.
我推荐上面的Ben的解决方案,但您也可以恢复到以前版本的分布式html.vim文件.
要执行此操作,只需使用7.3中的html.vim文件替换现有的7.4 文件.
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/
Run Code Online (Sandbox Code Playgroud)
截至7.4.52
在vim内:
:let g:html_indent_inctags = "html,body,head,tbody"
:call HtmlIndent_CheckUserSettings()
Run Code Online (Sandbox Code Playgroud)
.vimrc中的其他内容:
let g:html_indent_inctags = "html,body,head,tbody"
Run Code Online (Sandbox Code Playgroud)
我想只是将其添加到对最佳答案的评论中,在花费太多时间没有得到工作答案之后回馈,但显然没有足够的声誉:(