我正在输入我的 .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
.
最佳答案
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
可能是选项不包含“>”字符。您可以通过执行 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'
注意
.=
的用法而不是 =
.这是就地串联。您需要它,因为此时变量已经存在并且您不想删除它。
关于Vim .html.erb 的奇怪缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7327206/