2012-08-15 18 views
5

Cuando estoy viendo archivos de código largos con comentarios detallados en Vim, me gustaría poder cargar los archivos con comentarios doblados pero todo lo demás desplegado. La configuración actual de plegado que tengo en mi .vimrc es:Solo doblar comentarios cuando se abre el archivo en Vim

set foldmethod=syntax 
set nofoldenable 

De esa manera, cuando quiero empezar a hacer pliegues, que sólo puede comenzar a ejecutar comandos z. ¿Pero hay una manera de solo doblar los comentarios (bloquear)?

Respuesta

6

Se puede ejecutar un comando global para cerrar todo el comentario de bloque pliegues:

:g/^\/\*/foldc 

Esto ejecutará :help foldclose en cualquier línea que comienza con /* (un indicador de comentario del bloque común). Observe que el / y * deben escaparse en esta instancia. No necesita escapar del / si usa un delimitador diferente (por ejemplo, :g#^/\*#foldc). Si desea que esto suceda automáticamente, puede agregarlo en un comando automático. Por ejemplo:

set fdm=syntax fen 
augroup closeCommentFolds 
    au! 
    au FileType javascript %foldo | g/^\/\*/foldc 
    au FileType ruby %foldo | g/^=begin/foldc 
augroup end 

Tenga en cuenta que en estos ejemplos el carácter ^ en expresiones regulares especifica que los /* y partidos son al principio de la línea. Si desea hacer coincidir si hay espacios en blanco entre el comienzo de la línea y la coincidencia, utilice ^\s* en lugar de ^. El %foldo abrirá todos los pliegues para que foldenable esté configurado, pero no doblará todo (solo comentarios en este caso).

+0

Este es un gran ansewr. Aprendí mucho. Sin embargo, no funcionó de la caja. Tenía que hacer '... establecer fen | % foldopen | % g ^/\ * @ llamada SilentFold() ', donde' SilentFold' es una función que definí para suprimir los errores de fold para líneas donde se usa el estilo '/*...*/' aunque no sea un comentario en bloque (Sí, me opongo, pero no escribí el código) y usa 'normal zc'. Además, si descubres que lo que he hecho mejora la publicación, no dudes en utilizarlo. (Es demasiado detallado. También me gustaría saber por qué.) +1 ¡Gracias! –

+0

En realidad, mi respuesta se está comportando de manera extraña también ... está doblando cosas que no son comentarios, es decir, bloques '{...}'. –

+0

@Kazark bien, perdón por la confusión. Creo que mi respuesta actualizada ahora está funcionando perfectamente. Házmelo saber. – Conner

Cuestiones relacionadas