我正在输入我的.html.erb文件,我意识到vim缩进的这种奇怪的行为。
<p>
<strong>Expires On:</strong>
<%= @item.expires_on %>
</p>
在</p>
发生这种情况后我怎么按回车?
<p>
<strong>Expires On:</strong>
<%= @item.expires_on %>
</p>
_ <= new cursor space
请注意,我确实有filetype indent on
。
答案 0 :(得分:4)
Vim的默认html缩进不会缩进<p>
标记。这意味着,它不仅不会在</p>
之后删除缩进级别,而且在打开<p>
之后也可能不会自动添加缩进级别。如果是这种情况,您可以通过设置变量g:html_indent_tags
来更改此行为。它应包含与标记名称匹配的正则表达式。例如:
let g:html_indent_tags = 'p\|li\|nav'
这会为p
,li
和nav
标记添加一定级别的缩进。如果您只想要<p>
标记,只需将其设置为“p”:
let g:html_indent_tags = 'p'
如果vim确实 缩进初始<p>
,则您的indentkeys
选项可能不包含“&gt;”字符。您可以通过执行set indentkeys
来检查其内容。如果它不包含<>>
,您可以将其添加到.vim/ftplugin/html.vim
:
setlocal indentkeys+=<<>
修改强>:
不幸的是,vim似乎取消了那个变量......这对我来说根本没有意义,但你可以做的一件事就是将变量赋值添加到.vim/after/ftplugin/html.vim
。这应该可以解决问题。就个人而言,我做了一些不同的事情 - 我已将默认文件复制到.vim/indent/html.vim
并注释掉删除变量的行。尽管如此,使用after
目录可能是一个更好的主意。
修改强>:
html5插件似乎没有受到此问题的影响。改为安装它可能是一个好主意。否则,g:html_indent_tags
变量仍然是可以去的地方,但最佳位置可能是~/.vim/after/indent/html.vim
:
let g:html_indent_tags .= '\|p\|nav\|othertags'
请注意.=
而非=
的使用情况。这是就地连接。你需要它,因为此时变量已经存在,你不想删除它。
答案 1 :(得分:1)
我遇到了同样的问题。 Tim Pope有一个出色的Vim插件,默认情况下会为缺少的东西添加缩进。 https://github.com/tpope/vim-ragtag
答案 2 :(得分:0)
我通过全能的谷歌来解决这个问题。
为了补充Andrew在上面所说的内容,对于OSX上的那些人,您可能想看看/Applications/MacVim.app/Contents/Resources/vim/runtime/indent/html.vim并且必须进行修改变得明显。
我简直不敢相信我花了这么多时间来度过这段糟透的&lt; li&gt; s!