VIM凹痕HTML标签具有单独行上的属性



我正在用vim编写一些html/vue代码,但是我发现自动内置功能无法正常工作,尤其是嵌套标签和属性分解为多行。

我阅读了长时间HTML标签商定的编码标准,我认为如果VIM可以支持这种凹痕样式,那将是不错的。我发现了这样的多个类似的问题,但是他们没有给出令人满意的答案。我还尝试了VIM的HTML5插件,但似乎没有太大帮助。

例如,我希望vim缩进以下内容:

<template>
    <my-tag 
        attr1
        attr2
        attr3>
        <my-sub-tag
            attr1
            attr2
            attr3>
        </my-sub-tag>
    </my-tag>
</template>

但是目前,当我按gg=G时,它会缩进这样的东西:

<template>
    <my-tag 
     attr1
     attr2
     attr3>
        <my-sub-tag
      attr1
      attr2
      attr3>
        </my-sub-tag>
    </my-tag>
</template>

是否有一种相对较快的方法来修复它(例如一个不错的插件(,或者尚未成为VIM的主要问题?

您不必为此使用插件!当您使用gg=G时,运行equalprg(请参阅:H'QueliendPrg'(。当未设置此选项时,它会使用默认或内置的QuarePRG,这就是为什么您会看到奇数凹痕,因为它们不是为HTML构建的。

您可以使用更有能力格式化特定文件类型的外部程序。例如,对于HTML,您可以将html-beautify(npm install --global html-beautify(用于CSS,JSON和其他您使用prettier

您可以执行以下操作以使用外部程序。

:setlocal equalprg=html-beautify -f - -I -s 2

prettier的新版本还支持HTML格式。

:setlocal equalprg=prettier --stdin --parser=html

将其添加到~/.vim/after/ftplugin/html.vim并使用相同的命令gg=G进行格式化行。

另请参见:h 'formatprg':h gq命令。

最新更新