在Vim中编辑Yaml时错误的缩进

Vim似乎没有正确地反应在YAML文件中的破折号,因此打破了格式。

例如,我有一个块应该是这样的:

handlers: - name: restart exim4 service: name=exim4 state=restarted 

当我完成键入restart exim4并键入service: Vim reindents我的最后一个service线:

  handlers: - name: restart exim4 service: name=exim4 state=restarted 

显然,Vim试图按排列语句,但这不是YAML所需要的。 我想创build一个有两个值的数组。

如何解决这个问题?

安装这个插件:

https://github.com/chase/vim-ansible-yaml

它是用Ansible编写的,但理论上它可以与各种YAML文件一起工作。 你将不得不:不幸的是,设置filetype = ansible,如果你不是与可靠的相关文件工作。

为了在冒号后点击回车符时将默认的2-space YAML作为默认值,我将其添加到我的.vimrc

 autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab 

这对OP的预期结果也很好。

键入时可以禁用重新加载: key:

 :set indentkeys-=<:> 

请编辑~/.vimrc文件,并添加这些行:

 filetype plugin indent on autocmd FileType yaml setl indentkeys-=<:> 

注意: autocmdfiletype之后。


您可以通过在INSERT模式下键入CTRL-F来重新触发,例如:

 hello: world foo: bar<CF>