Pestañas y espacios de Vim

Pestañas y espacios de Vim

Quiero que mi sangría vim funcione de la siguiente manera: si tengo

▷   ▷   int function(int x,▒int y, int z) {

y presiono enter, quiero obtener lo siguiente:

▷   ▷   int function(int x,
▷   ▷   _____________int y, int z) {

Donde "▷" es una pestaña y "_" es un espacio.

En otras palabras, quiero usar tabulaciones, pero si tengo un salto de línea en un lugar que no agrega un nivel de sangría, entonces la línea sin sangría debe estar alineada con espacios en blanco.

Esto me permite usar pestañas para la sangría, pero conservar el formato en niveles sin sangría para que el formato se conserve incluso si se cambia el tamaño de la pestaña.

Hasta ahora, no he encontrado una manera de que esto sea posible con Vim. Preserveindent y copyindent no son lo que estoy buscando. Respetan expandtab y solo quiero usar expandtab para sangría y espacios para alineación.

Respuesta1

De acuerdo con laContenido Wiki, elPestañas inteligentesEl complemento hará esto. Yo mismo no lo he probado.

Respuesta2

Actualmente, esto no parece factible en vim. Puede tener tabulaciones o espacios, no ambos. No es de extrañar, ya que el tiempo de los espacios sobre las tabulaciones depende mucho del idioma. Considere: en Python, ¿cómo trataría:

x = fn(abc, 'def', {
                       ghi: jkl,
                       mno: pqr,
                   })

¿Deberías volver a las pestañas en algún momento? Eso sería ideal, pero muy sensible al contexto y realmente no funcionaría en varios idiomas. Otro ejemplo divertido, en haskell:

data Something = Something { flag1 :: Bool
                           , flag2 :: Bool }
               deriving (Eq, Ord, Show)

Suerte con eso!

Llegué a la conclusión de que, lamentablemente, serían necesarias extensiones específicas del idioma para este tipo de funcionalidad. Sin embargo, si conoce una buena manera de hacer esto, me encantaría escucharla.

información relacionada