微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.html.erb的Vim Weird缩进

我输入我的.html.erb文件,我意识到 vim缩进的这种奇怪的行为.

<p>
  <strong>Expires On:</strong>
  <%= @item.expires_on %>
</p>

在< / p>之后按Enter键怎么样?有时候是这样的?

<p>
  <strong>Expires On:</strong>
  <%= @item.expires_on %>
  </p>
  _ <= new cursor space

请注意,我确实有文件类型缩进.

解决方法

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'

请注意.=而不是=的用法.这是就地连接.你需要它,因为此时变量已经存在,你不想删除它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐