Vim.html.erb的奇怪缩进
我正在输入我的.html.erb文件,我意识到vim缩进的这种奇怪行为Vim.html.erb的奇怪缩进,vim,indentation,Vim,Indentation,我正在输入我的.html.erb文件,我意识到vim缩进的这种奇怪行为 <p> <strong>Expires On:</strong> <%= @item.expires_on %> </p> 到期日期: 为什么在之后按enter键时会发生这种情况 <p> <strong>Expires On:</strong> <%= @item.expires_on %>
<p>
<strong>Expires On:</strong>
<%= @item.expires_on %>
</p>
到期日期:
为什么在
之后按enter键时会发生这种情况
<p>
<strong>Expires On:</strong>
<%= @item.expires_on %>
</p>
_ <= new cursor space
到期日期:
_Vim的默认html缩进不缩进标记。这意味着,它不仅不会删除
之后的缩进级别,而且可能不会在打开
之后自动添加缩进级别。如果是这种情况,可以通过设置变量g:html\u indent\u tags
来更改此行为。它应该包含一个与标记名称匹配的正则表达式。例如:
let g:html_indent_tags = 'p\|li\|nav'
这将为p
、li
和nav
标记添加缩进级别。如果只需要
标记,只需将其设置为“p”:
如果vim确实缩进了初始的
,那么您的indentkeys
选项可能不包含“>”字符。您可以通过执行set indentkeys
来检查其内容。如果它不包含
,您可以将其添加到.vim/ftplugin/html.vim
:
setlocal indentkeys+=<<>
let g:html_indent_tags .= '\|p\|nav\|othertags'
注意使用=
代替=
。这是就地连接。你需要它,因为此时变量已经存在,你不想删除它。我通过万能的谷歌找到了这个问题
为了补充Andrew上面所说的内容,对于OSX上的用户来说,您可能需要浏览一下/Applications/MacVim.app/Contents/Resources/vim/runtime/indent/html.vim,必要的修改应该是显而易见的
我简直不敢相信我花了这么多时间忍受缩进不良的s 我也有同样的问题。Tim Pope有一个优秀的Vim插件,可以为默认情况下缺少的东西添加缩进 奇怪的是,我把let g:html_indent_tags='p\| li\|nav'放在my.vimrc中,但它没有效果,但当我在vim窗口中实际运行它时,它就工作了。我应该把这个放在哪里?呃,对,这个解决方案似乎有点问题。我已经更新了我的答案。我设置了这个变量(并且执行:让g:html\u indent\u tags
显示它没有被取消设置),但是它仍然没有缩进标签或标签。Vim取消了变量的设置,但也让它在之后再次为它指定一个模式,看起来像我给出的示例。即使变量存在,也可能没有正确的值。如果它不是以p\|li\|nav
开头,则不会缩进这些标记。要解决这个问题,您可以将默认文件复制到~/.vim/indent/html.vim
中,并删除unlet
,就像我上面解释的那样。为了简化,这里是我自己的vimfiles中经过调整的文件:。使用此功能,您应该能够将g:html\u indent\u tags
设置为您需要的任何内容。作为HTML5和.erb用户,您推荐的HTML5插件确实为我带来了好处。谢谢“必要的修改应该变得明显”。。。您不能提供代码示例吗?我做了我认为必要的修改,没有任何风险。也许是因为我用了杰纳斯…?哦。很抱歉您只需添加调用HtmlIndentPush('li')
,调用HtmlIndentPush('p')
,等等:)。但是,您必须确保Janus/Vimrc没有加载不同的html缩进文件。他有一整套有用的Vim插件<代码>vim rails
功能极其强大;我还使用vim ruby
vim bundler
vim sleuth
和vim unpaired
。
let g:html_indent_tags .= '\|p\|nav\|othertags'