Pregunta

¿Hay alguna forma de que VIM continúe aplicando formato a la línea utilizada como encabezado para un pliegue?

Por ejemplo, tengo el siguiente código:

int foo(int a, int b) {
    int c;
....
}

Cuando está plegado, veo:

+-- 4 lines: int foo(int a, int b) {----------------------------

Sin embargo, toda la línea se resalta según el " Doblado " clase. ¿Hay alguna forma de deshabilitar esto, por lo que sigo viendo el resaltado de sintaxis?

[para un ejemplo simple, esto no es tan importante, pero también uso el plegado extensivamente para ver archivos de datos grandes, y allí el formato es mucho más importante para mí]


¿Fue útil?

Solución

  

Sin embargo, toda la línea se resalta según el " Doblado " clase. ¿Hay alguna forma de desactivar esto, por lo que sigo viendo el resaltado de sintaxis? & Quot;

No, el texto del título plegado no es texto que forma parte de un archivo y no se puede editar directamente, solo se calcula y se superpone en la pantalla. El resaltado 'Doblado' se aplica a toda la línea, y todos los pliegues tienen el mismo resaltado aplicado.

Para mi uso con vim como outliner (en el proyecto VimOutliner) pirateé la fuente de vim para permitir diferentes resaltados de plegado según el nivel de plegado, por lo que se aplican múltiples resaltados de encabezado de plegado (por ejemplo, FoldLevel1, FoldLevel2, etc.) Supongo que podría piratearse aún más el uso de resaltado ya existente del texto en la línea del encabezado del pliegue, pero dada la forma en que funciona el plegado, sospecho que podría ser más difícil de lo que parece.

Lo siento, me acabo de dar cuenta de que la sugerencia para el método de sangría puede ser exactamente lo que estás buscando de todos modos, lo que conserva la sintaxis en las líneas no indentadas mientras las hace funcionar como una especie de encabezado para la sección doblada.

Otros consejos

Creo que lo que está buscando es cambiar el método de plegado a sangría en lugar de manual, que es el valor predeterminado. Escriba esto en modo comando.

:set foldmethod=indent

Ahora, si ingresa a su función foo y escribe zm (aumente el nivel de plegado en uno), se verá así:

int foo(int a, int b) {
+--  2 lines: int c;------------------------------------------------------------
}

La línea foo todavía tendrá resaltado de sintaxis. Para desplegar, por supuesto, escriba zr. Para mayor comodidad, pongo las siguientes líneas en mi .vimrc para plegar o desplegar todo rápidamente:

" Folding and unfolding
map ,f :set foldmethod=indent<cr>zM<cr>
map ,F :set foldmethod=manual<cr>zR<cr>

También hay un buen tutorial aquí , y por supuesto leyendo la ayuda de vim en foldmethod puede llevarlo a otros métodos que le gusten más que el sangrado, pero la apariencia de su código de ejemplo probablemente querrá sangrar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top