2010-12-30 19 views
30

Al principio, utilizo el conjunto foldmethod = marker, y muevo el cursor al {de una función, uso el zf% para doblar la función actual. Pero hay muchas funciones en este archivo. ¿Cómo puedo doblar todas las funciones en este archivo? Y no quiero doblar {} en las funciones.¿Cómo puedo plegar automáticamente todas las funciones en un archivo con vim?

+4

Las distribuciones de FYI vim generalmente vienen con ayuda incorporada. Si escribe ': ayudar a doblar', puede ver todas las cosas relacionadas con el plegado. –

+1

Tendrá que agregar el idioma que le interesa (no todos los idiomas tienen {} para empezar); plegar en Vim es un tema en sí mismo. – Rook

Respuesta

70

Si :set foldmethod=syntax los pliegues se especificarán a partir de las definiciones de sintaxis. Si lo prefiere, puede :set foldmethod=indent para que la sangría defina los pliegues.

Puede cerrar todos los pliegues con zM. Si tiene pliegues anidados y desea doblar nivel por nivel, use zm. Para abrir pliegues, use zR (todos) y zr (nivel por nivel).

+0

Creo que malinterpretas mi significado. Al principio, necesito configurar fold para cada función. Solo quiero saber cómo configurar fold para todas las funciones por primera vez. –

+0

@Yongwei: bien, creo que lo entiendo ahora. ¿Es esto lo que querías? –

+1

zR y zm no funcionan después de establecer foldmethod = sintaxis –

8

Si cada función tiene su llave de apertura en la primera columna se podía hacer:

:%g/^{/normal! zf% 

tal vez es más claro de esta manera:

:%g /^{/ normal! zf% 

el comando g selecciona líneas de acuerdo con el siguiente patrón, y ejecuta un comando ex (aquí normal! para tocar teclas de modo normal).

Ver :help :g y :help :normal

+0

Yo uso esto - gracias sin embargo, ¿cómo se puede evitar plegar a través de funciones? parece que no solo las funciones – serup

4

me encontré con esto cuando yo estaba buscando algo similar. Obviamente habrías descubierto esto, pero para el beneficio de otras personas lo responderé de todos modos.

que necesita para poner en las siguientes líneas en su .vimrc:

set foldmethod=syntax 
set foldnestmax=1 
3
set foldlevel=0 

se dobla todo, desde el principio, lo que es ción para ser doblado. Según el idioma y la función de plegado, el contenido del plegado variará.

+1

'zM' hacen lo mismo. – MOHRE

1

Trate :%g/\(function\_.\{-}\)\@<={/ normal! f{zf%

Explicar poco a poco:

:%g - buscar globaly en un archivo toda

/\(function\_.\{-}\)\@<={/ - patrón para encontrar primero '{' después de cualquier 'función' y poner el cursor en comenzar de cuerda con que '{'

normal! f{zf% - ejecutar con interés '{' y hacer f{ veces con mover '%' zf% en tha t cadena

+1

no pudo obtener su comand para trabajar - tal vez muestre funciones de ejemplo – serup

1

que estaba tratando de hacer lo mismo y terminó simplemente haciendo:

setlocal foldmethod=marker 
setlocal foldmarker={,} 

Se utiliza el método de plegado marcador y cambia el marcador a una sola llave de cierre (por defecto el marcador es {{{).

+0

¡Me encantó eso, bastante útil! Pero debería dividir las líneas que cierran un corchete y abre otro (como "} else else" –

Cuestiones relacionadas