El folding permite colapsar regiones de texto para reducir el ruido visual y navegar archivos grandes con más claridad. Vim ofrece seis métodos de plegado adaptables a cualquier flujo de trabajo.


Abreviaciones de modos:
N = Normal | I = Insert | V = Visual | C = Command | VB = Visual Block

Comandos básicos de fold

ModoComandoAcción
NzoAbre el fold bajo el cursor
NzcCierra el fold bajo el cursor
NzaAlterna el fold bajo el cursor (open/close)
NzOAbre el fold y todos sus anidados recursivamente
NzCCierra el fold y todos sus anidados recursivamente
NzAAlterna el fold recursivamente
NzrReduce el foldlevel global en 1 (abre un nivel)
NzRAbre todos los folds del archivo
NzmAumenta el foldlevel global en 1 (cierra un nivel)
NzMCierra todos los folds del archivo

Navegar entre folds

ModoComandoAcción
NzjSalta al inicio del siguiente fold
NzkSalta al final del fold anterior
N[zSalta al inicio del fold actual
N]zSalta al final del fold actual

Crear y eliminar folds manuales

ModoComandoAcción
Nzf{motion}Crea un fold manual sobre el movimiento
VzfCrea un fold manual sobre la selección
NzdElimina el fold bajo el cursor
NzDElimina el fold y sus anidados recursivamente
NzEElimina todos los folds manuales del archivo
C:{n},{m}foldCrea un fold manual entre las líneas n y m

Métodos de folding (foldmethod)

MétodoDescripción
manualFolds creados manualmente con zf
indentPliega según el nivel de indentación
syntaxPliega según la sintaxis del lenguaje
exprPliega según una expresión Vimscript personalizada
markerPliega entre marcadores {{{ y }}} en el texto
diffPliega las zonas sin cambios en modo diff

Configurar el método de folding

ModoComandoAcción
C:set foldmethod=indentActiva folding por indentación
C:set foldmethod=syntaxActiva folding por sintaxis
C:set foldmethod=markerActiva folding por marcadores
C:set foldlevel=1Muestra solo el primer nivel de folds al abrir
C:set foldlevel=99Abre todos los folds por defecto
C:set foldcolumn=2Muestra una columna visual indicando folds
C:set foldenableActiva el folding
C:set nofoldenableDesactiva el folding sin eliminar los folds

Folding con marcadores

ModoComandoAcción
Nzf con foldmethod=markerInserta {{{ y }}} automáticamente
C:set foldmarker={{{,}}}Define los marcadores de apertura y cierre
C:set foldmarker=<!--,-->Usa marcadores HTML como delimitadores

Ejemplo de marcadores en código:

// Sección de configuración {{{
const config = { ... }
// }}}

Persistir folds entre sesiones

ModoComandoAcción
C:mkviewGuarda los folds y la vista del buffer actual
C:loadviewRestaura los folds guardados con :mkview
C:set viewoptions=foldsLimita lo que guarda :mkview solo a folds

Para persistir automáticamente en vimrc:

autocmd BufWinLeave * mkview
autocmd BufWinEnter * silent! loadview

Tips

  • foldmethod=indent es el más inmediato en Python y lenguajes donde la indentación es estructura: funciona sin configuración adicional.
  • zR y zM son los comandos de orientación rápida: abre todo para ver el mapa completo, cierra todo para ver solo la estructura.
  • nofoldenable desactiva el folding temporalmente sin perder los folds definidos; foldenable los restaura tal como estaban.
  • Los marcadores {{{ y }}} permiten anotar secciones lógicas en archivos de configuración o Vimscript con control total sobre los límites.
  • :mkview y :loadview en autocmds es la forma más simple de persistir folds sin plugins; guarda también la posición del cursor y el scroll.