Girinti ile katlama gibi ama kat yorumları dahil (her yorum önceki satır ile aynı düzeyde kat olsun demek).
Ne yazık ki, foldignore anahtar kelimesi yalnızca bir satır yorum için çalışır. Ben vimrc ifade ile katlayın:
set foldmethod=expr
set foldexpr=FoldMethod(v:lnum)
function! FoldMethod(lnum)
"get string of current line
let crLine=getline(a:lnum)
" check if empty line
if empty(crLine) "Empty line or end comment
return -1 " so same indent level as line before
endif
" check if comment
let a:data=join( map(synstack(a:lnum, 1), 'synIDattr(v:val, "name")') )
if a:data =~ ".*omment.*"
return '='
endif
"Otherwise return foldlevel equal to indent /shiftwidth (like if
"foldmethod=indent)
else "return indent base fold
return indent(a:lnum)/&shiftwidth
endfunction
Son blok:
indent(a:lnum)/&shiftwidth
Girintide bir kat düzeyli taban döndürür.
Ve diğeri :
join( map(synstack(a:lnum, 1), 'synIDattr(v:val, "name")') )
Satırın ilk karakterinin sözdizimiyle bir yorum olarak değerlendirilip değerlendirilmeyeceğini denetler. Bu nedenle, girintiyi ve sözdizimi katlamayı en gelişmiş katlama olan ifade ile birleştirmenin iyi bir yoludur.
Sonucun nasıl görünmesini istediğinize bağlı olarak "katlama metnini de ayarlayabileceğinizi" unutmayın.