Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Plegado de código (folding) en vim con fold

Imago voragine.net

He encontrado un poco de tiempo para configurar y probar fold, el sistema nativo de plegado de código de vim. Funciona muy bien cuando los archivos están formateados con sangrías. Si no lo están se puede configurar para que funcione por sintaxis y así detecte el lenguaje de programación del archivo. También dispone de un modo manual, para controlar los pliegues por líneas y adaptarlos al archivo concreto que se esté trabajando.

vim tiene plugins que añaden plegado de código para lenguajes de programación específicos. Yo uso, por ejemplo, PHP-foldexpr. Aunque es un plugin que no se actualiza desde hace más de diez años sigue funcionando perfectamente.

Tras configurar fold he desactivado los plugins de plegado específicos. Es cierto que se pierden algunas funcionalidades específicas de cada lenguaje, como el plegado de funciones y clases de PHP con la documentación en línea integrada. Nada imprescindible para mí.

Comandos del módulo fold de vim que más uso

zo Desplegar pliegue en el que esté el cursor
zc Replegar pliegue en el que esté el cursor
zO Desplegar de manera recursiva el pliegue en el que esté el cursor y los que contenga
zC Replegar de manera recursiva el pliegue en el que esté el cursor y los que contenga
zR Desplegar todos los pliegues
zM Replegar todos los pliegues

Configuración persistente del plegado de código nativo con fold en vim

Para que los pliegues aparezcan replegados cuando se abre un archivo se puede añadir la siguiente línea al archivo .vimrc:

set foldenable

Para que aparezcan desplegadas:

set nofoldenable

Para cambiar el criterio de plegado, y que vim gestione los pliegues en base a las sangrías, lo que vale para casi todos los casos, se puede incluir foldmethod en .vimrc:

set foldmethod=indent

Como todo en vim, fold tiene una documentación exquisita, a la que se puede acceder con :help fold.

Dejar un comentario

No hay comentarios en esta entrada.
*
*

 

No hay trackbacks