Para mí, el plegado ideal es doblar solo los bloques class
y def
, el doblado con sangría es demasiado para mi gusto. Creo que una solución elegante es utilizar el sistema de sintaxis como esta uno mencionado por Tomas. Sin embargo, este está destinado a reemplazar el archivo de sintaxis original y puede terminar siendo más antiguo que el original (es decir, ese script no menciona la sintaxis de Python 3).
Mi solución es colocar en la ~/.vim/syntax
carpeta un archivo llamado python.vim
solo con las líneas importantes (tomadas del script anterior):
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
Entonces simplemente active el plegado con :set foldmethod=syntax
.