更改 VIM 中的 <li> 自动缩进选项

Her*_*rms 3 html vim autoindent

默认情况下,Vim 似乎不想缩进<li>标签内的内容,尽管它可以正确地自动缩进大多数其他 HTML 标签。

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

<ul>
<li>
foo
</li>
<li>
bar
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

并让 vim autoindent 它我得到:

<ul>
  <li>
  foo
  </li>
  <li>
  bar
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

然而,我真正想要的是:

<ul>
  <li>
    foo
  </li>
  <li>
    bar
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

在编写新代码以使其在大多数打开标签后自动缩进时有点烦人,但不是这个,尽管这很容易解决。真正让我着迷的是使用 vim 自动格式化一些我正在尝试使用的大型生成的 HTML(尝试使用生成的源模拟一些 UI 更改)。

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

gar*_*ohn 6

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

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

    call <SID>HtmlIndentPush('li')

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

那应该这样做。