我正在用vim编写一些html / vue代码,但是我发现自动缩进功能无法按预期工作,特别是嵌套标记和属性分成多行时。
我读了长的html标记商定的coding standard,我认为如果vim可以支持这种缩进样式,那就太好了。 我发现有多个类似的问题,例如this,但它们给出的答案并不令人满意。 我也尝试过html5 plugin的vim,但似乎没有太大帮助。
例如,我希望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尚未主要关注它?
答案 0 :(得分:1)
您不必为此使用插件!使用gg=G
时,将运行equalprg
(请参阅:h 'equalprg')。如果未设置此选项,它将使用默认值或内置的equalprg,这就是为什么看到奇数缩进的原因,因为它们不是为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
命令。