online python vim folding

online - ¿Cuál es la forma recomendada de usar Vim plegable para código Python?



editor vi online (9)

Creo que el plegado de sangrado está bien para Python. Estoy haciendo un repositorio git multi-ramificado para vim-config python / django IDE ideas. ¡Tenedor lejos!

http://github.com/skyl/vim-config-python-ide

Estoy interesado en habilitar el plegado de código en Vim para el código de Python. Me he dado cuenta de varias maneras de hacerlo.

¿Alguien tiene una forma preferida de doblar el código de Python en Vim? Es decir,

  • ¿Tienes un plugin Vim particular que usas y te gusta?
  • ¿Utiliza plegado manual o coloca marcadores en los comentarios?
  • ¿Alguna otra forma recomendada de doblar el código para Python en Vim?



Para mí, el plegado ideal es doblar solo los bloques de class y def , el doblado de guiones es demasiado para mi gusto. Creo que una solución elegante es usar el sistema de sintaxis como este mencionado por Tomás. 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 carpeta ~/.vim/syntax un archivo llamado python.vim con solo 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

Luego simplemente active el plegado con :set foldmethod=syntax .


Personalmente, no puedo convencerme a mí mismo de tirar mi código con los marcadores. Me he acostumbrado bastante (y soy eficiente) a usar el plegado de hendiduras. Junto con el mapeo de la barra espaciadora (ver a continuación) para abrir / cerrar pliegues y los comandos zR y zM, estoy en casa. Perfecto para Python!

nnoremap <space> za

vnoremap <space> zf



Python es muy adecuado para doblar en la sangría, poco para escribir mi propio código. Uso marcadores ya que pueden procesar un documento de la manera que lo desee y puede servir como una especie de tabla de contenidos. Tengo esto en mi poder para cambiar entre los dos cuando estoy viendo el código de otra persona.

#Toggle fold methods /fo let g:FoldMethod = 0 map <leader>fo :call ToggleFold()<cr> fun! ToggleFold() if g:FoldMethod == 0 exe ''set foldmethod=indent'' let g:FoldMethod = 1 else exe ''set foldmethod=marker'' let g:FoldMethod = 0 endif endfun #Add markers (trigger on class Foo line) nnoremap ,f2 ^wywO#<c-r>0 {{{2<esc> nnoremap ,f3 ^wywO#<c-r>0 {{{3<esc> nnoremap ,f4 ^wywO#<c-r>0 {{{4<esc> nnoremap ,f1 ^wywO#<c-r>0 {{{1<esc>


Sin embargo, otro complemento para doblar el código de Python. Bastante simple, manejando cadenas de documentos, y en el GitHub:

SimpylFold

¡Disfrutar!


Yo uso this archivo de sintaxis para Python. Establece el método de plegado para la sintaxis y pliega todas las clases y funciones, pero nada más.