2009-11-16 22 views
9

Soy un usuario novato de vim y no he podido encontrar en Internet cómo colapsar funciones y he descubierto cómo colapsar la lista de argumentos en C con zfa} y zfa). pero no puedo descifrar cómo colapsar las secciones de comentarios. ¿Cómo puedo hacer eso?Colapsar comentarios y todas las funciones en vim/gvim

Segunda pregunta pero relacionada, ¿hay alguna manera de contraer todas las funciones/listas de argumentos/comentarios en un archivo al mismo tiempo?

Respuesta

21

La funcionalidad a la que se refiere se denomina "plegado" (consulte :help usr_28). El comando zf se usa para crear manualmente un pliegue y solo se usa si la opción foldmethod está configurada como "marcador" o "manual". En los ejemplos que proporcionó, está creando pliegues en las regiones especificadas por los objetos de texto a} y a) (consulte :help usr_4.8).

Para C, puede setlocal foldmethod=syntax y las regiones de plegado se determinarán automáticamente por las reglas de sintaxis. Esto solo debe hacerse para los archivos C, ya sea poniendo la configuración en ~/.vim/ftplugin/c.vim o poniendo el siguiente autocmd en su ~/.vimrc.

autocmd FileType c setlocal foldmethod=syntax 

N.B. ambos requieren que la detección de tipo de archivo esté habilitada (filetype on) y la solución ftplugin requiere que los complementos de tipo de archivo estén habilitados (filetype plugin on). Este último es un superconjunto del anterior, por lo que no necesita ambos comandos en su ~/.vimrc.

Como para la apertura/cierre de todos los pliegues en el búfer en, esos son los zR y zM comandos respectivamente.

+0

Necesita una cosa más. La sintaxis funciona muy bien, pero no me permite definir zfa) para poder colapsar las listas de argumentos. Tengo algunas listas realmente largas que no necesito ver qué contienen y sería muy útil colapsar automáticamente, pero no me permitirá hacerlo en modo sintaxis y tengo demasiadas funciones para que el modo de definición sea utilizable. . –

+0

Desafortunadamente, no puede usar varios métodos de plegado al mismo tiempo y la creación de plegado manual solo funciona para los métodos de marcador/manual. Puede copiar syntax/c.vim desde el directorio de todo el sistema a ~/.vim/syntax/c.vim y agregar la palabra clave "fold" al final de las definiciones de sintaxis de cParen. La desventaja es que tendrás que hacer eso cada vez que se realicen nuevas versiones importantes de Vim para que no pierdas ningún cambio que se realice antes. También requiere que coloque la abertura "{" en una línea separada; de lo contrario, su doblez anulará el doblez de la lista de argumentos. – jamessan

0

Suponiendo que ha configurado las regiones de plegado como las quiere, establezca foldlevel en el nivel deseado.

5

Añadir los siguientes ajustes a ~/.gvimrc:

"folding settings 
set foldmethod=indent "fold based on indent 
set foldnestmax=10  "deepest fold is 10 levels 
set nofoldenable  "dont fold by default 
set foldlevel=1   "this is just what i use 

A continuación, puede alternar plegable con za. Puedes doblar todo con zM y desplegar todo con zR. zm y zr se pueden usar para obtener los pliegues correctamente. Recuerda siempre el archivo de ayuda todopoderoso en "ayuda: plegado" si te quedas atascado.

Fuente: http://smartic.us/2009/04/06/code-folding-in-vim/

Cuestiones relacionadas