Para mim, a dobradura ideal é dobrar apenas os blocos class
e def
, dobrar recuado é demais para o meu gosto. Eu acho que uma solução elegante é usar o sistema de sintaxe como esta uma mencionado por Tomas. No entanto, este deve substituir o arquivo de sintaxe original e pode acabar sendo mais antigo que o original (ou seja, esse script não menciona a sintaxe do Python 3).
Minha solução é colocar na ~/.vim/syntax
pasta um arquivo nomeado python.vim
apenas com as linhas importantes (retiradas do script acima):
syn match pythonDefStatement /^\s*\%(def\|class\)/
\ nextgroup=pythonFunction skipwhite
syn region pythonFunctionFold start="^\z(\s*\)\%(def\|class\)\>"
\ end="\ze\%(\s*\n\)\+\%(\z1\s\)\@!." fold transparent
hi link pythonDefStatement Statement
Em seguida, basta ativar o dobramento com :set foldmethod=syntax
.