在Vim中编辑Yaml时缩进错误
Vim似乎无法正确响应YAML文件中的破折号符号,因此破坏了格式 例如,我有一个块,它应该是这样的:在Vim中编辑Yaml时缩进错误,vim,yaml,Vim,Yaml,Vim似乎无法正确响应YAML文件中的破折号符号,因此破坏了格式 例如,我有一个块,它应该是这样的: handlers: - name: restart exim4 service: name=exim4 state=restarted 当我完成键入重新启动exim4并键入服务:Vim重新插入我的最后一行服务时: handlers: - name: restart exim4 service: name=exim4 s
handlers:
- name: restart exim4
service: name=exim4 state=restarted
当我完成键入重新启动exim4
并键入服务:
Vim重新插入我的最后一行服务时:
handlers:
- name: restart exim4
service: name=exim4 state=restarted
显然,Vim试图按列对齐句子,但这不是YAML所需要的。我想创建一个具有两个值的数组
如何修复此问题?安装此插件:
它在设计时考虑了Ansible,但在理论上它可以处理所有类型的YAML文件。如果您没有处理与ansible相关的文件,则必须:设置filetype=ansible。键入:
键时,您可以禁用reindent:
:set indentkeys-=<:>
注意:autocmd
位于filetype
之后
您可以在插入模式下键入CTRL-F来触发reindent,例如:
hello: world
foo: bar<C-F>
# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab:
foo:
bar:
- a
- b
hello:world
福:酒吧
为了在我点击冒号后面的回车键时将nice 2-space YAML作为默认值,我将其添加到我的。vimrc
:
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
" Fix auto-indentation for YAML files
augroup yaml_fix
autocmd!
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab indentkeys-=0# indentkeys-=<:>
augroup END
这也很好地实现了OP的预期结果。我发现它非常有效。这是一个vim插件,它对yaml文件进行缩进(和语法突出显示)。安装它也解决了您所问的特定问题
您需要安装插件(请参阅GitHub repo中的doco),只要您的filetype=yaml
,它就会纠正您的缩进。这对你们俩都有帮助
当您键入您提供的代码段时,或者
如果您已经编写了一些yaml,您可以选择它(使用V
进行行选择,然后使用j
或k
选择更多行),然后使用=
触发vim格式化
您可以使用此自动命令使Vim正确缩进YAML文件(将其放入.vimrc
):
“修复YAML文件的自动缩进
A组yaml_fix
自动驾驶!
autocmd文件类型yaml setlocal ts=2 sts=2 sw=2 expandtab indentkeys-=0#indentkeys-=
螺旋端
基本上,对于YAML文件,它指示Vim:
- 缩进时使用2个空格
- 使用空格代替制表符
- 在行首或冒号插入注释字符(
#
)后跳过重新缩进行
您可以在YAML中添加注释,告诉Vim此文件的特殊配置。例如:
hello: world
foo: bar<C-F>
# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab:
foo:
bar:
- a
- b
然后,使用此文件和默认vim的每个人都可以共享文件创建者的配置。尤其是在合作时,它工作得很好。以下是我为yaml提供的augroup
:
augroup filetype_yaml
autocmd!
autocmd BufNewFile,BufReadPost *.{yaml,yml} set filetype=yaml foldmethod=indent
autocmd FileType yaml |
setlocal shiftwidth=2 |
setlocal softtabstop=2 |
setlocal tabstop=2
augroup END
我看到了这个插件-它希望文件名有一个特定的名称和/或在一个特定的文件夹中。Ansible playbooks不是我编辑的唯一文件。这就是为什么我甚至没有尝试安装它。谢谢,我会将yml设置为“Ansible”类型。哇,这是一个很大的不同,我认为常规的yaml
语法也值得修复,如果是的话走这个路线,你必须在所有的不可操作的文件中放上代码“{ vi=:ft= ANDISC::/CODE”。谢谢,它是这样做的。考虑把它放进~/Vim/ftPultIn/YAMLVIM,用更短的名字替换未来的可读性的短名称。,我必须先在
上使用文件类型插件缩进。还有一个很好的方法是在
上使用语法。这是我在上面的评论的总和-->添加。yml还有助于什么?在哪里?在VIM-Vi改进8.1上仍然使用8个空格缩进(2018年5月18日,编译日期2020年4月15日06:40:31)
保存带有注释的文件,然后用Vim重新打开。