vim 缩进 html 标签,属性分行
vim indent html tags with attributes on separate lines
我正在用 vim 编写一些 html/vue 代码,但我发现自动缩进功能没有按预期工作,尤其是嵌套标签和属性被分成多行时。
我阅读了 coding standard 同意的长 html 标签,我认为如果 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 的主要关注点?
您不必为此使用插件!当您使用 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
命令。
我正在用 vim 编写一些 html/vue 代码,但我发现自动缩进功能没有按预期工作,尤其是嵌套标签和属性被分成多行时。
我阅读了 coding standard 同意的长 html 标签,我认为如果 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 的主要关注点?
您不必为此使用插件!当您使用 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
命令。