【发布时间】:2021-05-28 22:54:21
【问题描述】:
在 vim (neovim) 中,当属性放在自己的行时,XML 代码会奇怪地缩进,如下所示:
<test
first="text"
second="more text"
third="last">
<foo
a="a"
b="b">
<bar />
</foo>
</test>
当我期望和渴望时:
<test
first="text"
second="more text"
third="last">
<foo
a="a"
b="b">
<bar />
</foo>
</test>
这对我来说就像一个错误。我找不到解决这个问题的插件。也许我可以在我的 init.vim 中添加一些东西来纠正这种行为?
编辑: 下面的补丁几乎解决了这个问题,但不能正确处理以下情况:
<test
first="text"
second="more text"
third="last">
<foobar>
</foobar>
<foobar>
</foobar>
</test>
编辑 2:
删除第 90 行上的 + shiftwidth() 可以解决除这种情况之外的所有问题:
<test
first="text">
<foobar>
</foobar>
</test>
<foobar> 应该像上图那样缩进,因为跨越前两行的标签是一个开始标签,表示接下来的行应该缩进。
编辑 3:出于某种原因,<foo 在补丁中缩进了两次。预期:
<test>
<foo
a="a">
</foo>
</test>
我知道正则表达式足以使用它,但 vim 脚本让这很棘手。
编辑 4: 预期输出应该是:
<test>
<foo
a="a" />
<foobar
a="a" >
<test>
</test>
</foobar>
</test>
/> 不应缩进下一行。
【问题讨论】:
标签: xml vim indentation neovim