¿Cómo puedo doblar automáticamente un código C largo en Vim?
Pregunta
Regularmente me encuentro con códigos C sin doblar.Es irritante leerlos si no están doblados, especialmente en archivos largos.¿Cómo puedo doblarlos?
Solución
Para plegar de acuerdo con la sintaxis
:set foldmethod=syntax
Si desea hacerlo de forma manual en los bits que desea plegar
:set foldmethod=manual
a continuación, crear nuevos pliegues mediante la selección de / en movimiento y presionando zf por ejemplo.
shift-v j j zf
(ignorando los espacios)
Editar:. Véanse también los comentarios de esta respuesta para la sangría y marcadores foldmethods
Otros consejos
Creo que puede haber mezclado la terminología. ¿Necesita "envoltura" o "plegado". Envoltura es aquel en el que las líneas que no suelen encajar en la pantalla debido a su longitud, se envuelven, es decir, se muestra en varias líneas consecutivas en pantalla (en realidad, es una línea, en varias líneas - difícil de explicar, mejor para ver en la práctica).
En vim envoltorio se fija mediante
:set wrap
para encenderlo, y
:set textwidth=80
para determinar dónde vim debe ajustar el texto (80 caracteres suele ser una medida agradable).
plegable por el contrario es un asunto completamente diferente. Es el uno donde vim pliega varias líneas de código (por ejemplo, una función) en una línea de código. Es útil para aumentar la legibilidad del código. Vim tiene varios métodos de plegado, se puede ver todos ellos si
:help folding
Lo que usted está buscando, creo que sería, plegado de sintaxis, pero podría estar equivocado. Recomiendo la lectura de la página de ayuda, no es larga, y muy útil.
He rodado una veces plug-in para C y C ++ . Va más allá de lo que se hace con la sintaxis de plegado (puede ser que se podría mejorar, no sé), y deja menos ruidoso y no cosas realmente útiles se desarrollaron, en comparación con la sangría y plegado basada marcador.
La advertencia:. Con el fin de tener tiempos de reacción decente, tuve que hacer algunas simplificaciones, y, a veces el resultado es bastante desordenado-up (que tiene que escribir zx
para solucionarlo)
Aquí hay un pequeño screencast para ver cómo el plugin se pliega a ++ código fuente correctamente equilibrada C, que no está siendo modificada actualmente: (
En vi (en contraposición a vim) la respuesta fue:
:set wm=1
Esto establece margen derecho de un carácter antes del final de la línea. Esta no es la mejor especificación del mundo, con ventanas de tamaño variable (que tenía sentido con pantallas verdes cuando era difícil cambiar el tamaño).
Eso significa que también es una forma alternativa de hacerlo en vim:
:set textwidth=30
El es probable que desee el ajuste
:set foldmethod=syntax
Pero no poner esto en forma manual! Eso es dejar de lado uno de VIMS características más importantes que está teniendo una configuración personalizada para cientos de tipos de archivos ya incorporadas. Para conseguir eso, añadir esto a su ~ / .vimrc
filetype plugin on
filetype indent on
Detección de tipo de archivo se basa principalmente en la extensión, en este caso los archivos * .c. Ver: ayuda: filetype para obtener más información. También puede personalizar esta configuración basada tipo de archivo.
En realidad, existe otra forma muy sencilla y eficaz, que es utilizar foldmethod = marker
y establecer foldmarker
ser {,}
.Entonces el resultado del plegado se vería así:
- Todas las funciones plegadas.Básicamente, se parece al esquema del IDE.(y también puedes
set foldlevel=1
o más, si no quieres doblar todo al principio)
- Así es como se ve una función normal cuando la abres con el nivel 1 a través de
zo
.
Además, para realizar el plegado por sintaxis se necesita un poco de trabajo extra, y aquí hay una buena tutorial al respecto.Pero creo que pasar por alto marker={,}
es suficiente y, lo más importante, es simple y ordenado.