改变VIM 中的自动缩进选项

改变VIM 中的自动缩进选项

默认情况下,Vim 似乎不想缩进<li>标签内的内容,尽管它对于大多数其他 HTML 标签都会自动缩进。

例如,如果我从以下代码开始:

<ul>
<li>
foo
</li>
<li>
bar
</li>
</ul>

并让 vim 自动缩进我得到:

<ul>
  <li>
  foo
  </li>
  <li>
  bar
  </li>
</ul>

然而我真正想要的是这个:

<ul>
  <li>
    foo
  </li>
  <li>
    bar
  </li>
</ul>

在编写新代码时,让它在大多数开始标记后自动缩进,但这个标记后不自动缩进,这有点烦人,不过这很容易解决。当我使用 vim 自动格式化一些我试图处理的大型生成 HTML 时(尝试使用生成的源代码模拟一些 UI 更改),这真的让我很烦。

有没有什么简单的方法可以改变这种自动缩进行为,使其<li>像任何其他打开标签一样对待并缩进内容?

答案1

我没有看到简单的方法可以做到这一点,但是这个解决方案并不太难。

  1. 如果您使用的是 Unix,请将 $VIMRUNTIME/indent/html.vim 复制到 ~/.vim/indent/html.vim;如果您使用的是 Windows,请复制到 ~/vimfiles/indent/html.vim。
  2. 编辑 indent/html.vim 的副本,将这一行添加到

    call <SID>HtmlIndentPush('li')

    该文件中已有的类似调用列表中。

那就可以了。

答案2

如果其他人像我一样通过谷歌找到了这个问题,那么还有另一种解决方案,使用 Tim Pope 的乌合之众扩展。这将自动添加正确的缩进并更新 HTML5 的一些其他标签。

相关内容