Skip to content

Instantly share code, notes, and snippets.

@iangreenleaf
Created March 15, 2011 17:38
  • Star 29 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save iangreenleaf/871107 to your computer and use it in GitHub Desktop.
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

Thanks !

@ladislas
Copy link

that's amazing, thanks so much! :)

@mlongval
Copy link

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