Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Dumb-smart indentation for Yaml
" Vim indent file
" Language: Yaml
" Author: Ian Young
" Get it bundled for pathogen: https://github.com/avakhov/vim-yaml
if exists("b:did_indent")
finish
endif
"runtime! indent/ruby.vim
"unlet! b:did_indent
let b:did_indent = 1
setlocal autoindent sw=2 et
setlocal indentexpr=GetYamlIndent()
setlocal indentkeys=o,O,*<Return>,!^F
function! GetYamlIndent()
let lnum = v:lnum - 1
if lnum == 0
return 0
endif
let line = substitute(getline(lnum),'\s\+$','','')
let indent = indent(lnum)
let increase = indent + &sw
if line =~ ':$'
return increase
else
return indent
endif
endfunction
" vim:set sw=2:
@jacqueswww
Copy link

jacqueswww commented Oct 25, 2015

Thanks !

@ladislas
Copy link

ladislas commented May 29, 2017

that's amazing, thanks so much! :)

@mlongval
Copy link

mlongval commented Aug 16, 2018

Thanks for this. Helps a lot.

modified for "set sw=4" (personal preferences)

@heph
Copy link

heph commented Nov 5, 2021

Oh wow. Thanks for figuring this out. The default vim yaml indent was driving me nuts editing all these kubernetes configs!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment