Estoy tratando de hacer una sangría automática de vim con pestañas y alinearlas con espacios en blanco, pero en realidad, sangrar vim con pestañas y llenar la alineación con pestañas + espacios en blanco.
Vim lo hace:
(cada bloque es una pestaña)
{
>--long a = 1,
>-->--..b = 2,
>-->--..c = 3;
}
Puede hacerlo:
{
>--long a = 1,
>--.....b = 2,
>--.....c = 3;
}
Entonces, creo que hay muchas preguntas sobre el tema de las pestañas y los espacios, pero ninguna de ellas proporciona alguna solución de Just Works:
- /programming/8493705/vim-use-tabs-for-indentation-spaces-for-alignment-with-c-source-files
- /programming/29208431/vim-indent-with-tabs-align-with-spaces
- /programming/6504507/vim-indenting-and-alignment-combining-spaces-and-tabs
En realidad estoy usando:
set ai
set cindent
set cinoptions=(0,:0,u0,U0,g0)
Probé el inteligente Tab plugin, que parece funcionar bien, pero cuando intento gg=G
consigo algunos errores extraños:
Error detected while processing function CtabRedoIndent..<SNR>12_CheckAlign:
line 11:
E108: No such variable: "b:ctab_lastalign"
Press ENTER or type command to continue
Error detected while processing function CtabRedoIndent:
line 10:
E170: Missing :endwhile
Esta discusión parece ser bastante antigua, así que ahora, 2015, ¿hay una solución oficial para lidiar con eso?
tab-characters
whitespace
tjbrn
fuente
fuente
Respuestas:
Hacer esto realmente automáticamente es difícil. Vim no sabe qué es "sangría" y qué es "alineación"; y algunas personas pueden estar en desacuerdo sobre lo que constituye exactamente la sangría y la alineación.
Dicho esto, el complemento Smart Tabs está diseñado para hacer lo que quieras; Descubrí que funciona razonablemente bien para archivos C, pero tiene varias advertencias; que rompe los archivos de Python, por ejemplo, y hace algo inesperado (para mí, de todos modos) cosas para archivos de C a veces.
Mirando la fuente, realmente no puedo entender cómo funciona en 5 minutos, y combinado con el hecho de que rompe algunas cosas, debería decirle que proceda con cuidado ...
fuente
El complemento Smart Tabs que mencionó es tan bueno como parece. Inicialmente me encontré con el mismo error que tuviste y me di por vencido, pero finalmente pasé unos minutos para solucionarlo. Intente aplicar el siguiente parche:
Más tarde descubrí que alguien sugirió una solución similar en la sección wiki Smart Tabs . Por desgracia, no ha habido un nuevo lanzamiento.
fuente
La sangría en vim se realiza simplemente usando el siguiente script
Script para realizar sangría de un solo archivo
fuente