2010-03-25 36 views
12

He pasado de TextMate a Vim últimamente, y realmente me gusta el cambio. Sin embargo, tengo un picor con respecto a la forma en que Vim maneja la sangría dentro de las llaves usando la sintaxis de CSS. Yo uso simple_pairs.vim, que puede o no tener algo que ver con mi problema, pero no lo creo, ya que las cosas funcionan bien en PHP, JavaScript, etc. Permítanme explicar ...Molesto de sangría con CSS en Vim

Generalmente agrupo mi reglas CSS de contexto utilizando la sangría, así:

ul#nav { 
    margin: 10px; 
} 
    ul#nav li { 
    float: left; 
    margin-right: 4px; 
    } 

Eso significa que cuando introduzco mi regla ul#nav li, seguido por { (que inserta una correspondiente } automáticamente) y pulsa enter, quiero la llave de cierre a estar en el el mismo nivel de sangría que el ul#…, pero en su lugar obtengo algo como esto:

ul#nav { 
    margin: 10px; 
} 
    ul#nav li { 
} 

Así que tengo que marcar los pasos adicionales manualmente. Como dije, hacer lo mismo en PHP, JavaScript, etc. funciona bien. ¿Alguien sabe como puedo arreglar esto? No entiendo lo suficiente sobre los archivos de definición de sintaxis de Vim para poder descifrar qué hace que funcione en el archivo de sintaxis de PHP, y transferirlo al CSS ... Gracias.

+1

Sospecho que tiene algo que ver con 'simple_pairs.vim'. Probé tu ejemplo en mi computadora (sin 'simple_pairs') y funcionó como querías que funcionara. – Peter

+0

Ah, tienes razón ... Supongo que debería haber intentado eso primero. ¿Usted (o cualquier otra persona) tiene alguna idea sobre cómo resolverlo? –

+0

Debería consultar [SCSS] (http://sass-lang.com/#nesting) si está interesado en anidar selectores. – gmeben

Respuesta

11

me encontré con un muy buen guión código de llaves anidadas aquí:

https://gist.github.com/762326/bcbd35239db7f26447f1c2323037d20a5219471d

Puede guardarlo en .vim/guión/css.vim y que va a hacer un trabajo mucho mejor de sangría CSS que el predeterminado.

Además, también funciona para los archivos .less, pero puede que tenga que asociarlos en su archivo .vimrc.

El script en github es por el mismo marcador que el css.vim oficial, solo 6 años más nuevo. Tienen algunas líneas diferentes.

+0

Gracias, funciona muy bien. – romainl

0

Esto tiene que ver con cindent y smartindent. Uno de ellos causa este comportamiento.

me olvidó cuál (tal vez los dos?), Pero me los quitó de mi archivo ~/.vimrc, y mantiene sólo autoindent

2

Hice esto para los archivos CSS:

au BufEnter *.css set nocindent 
au BufLeave *.css set cindent 

Yo no t tiene smartindent configurado, pero puede agregar eso también.

Esto dice que cuando ingresa un búfer de un archivo .css, debe desactivar cindent, y debe volver a configurarlo cuando salga del búfer.

+2

¿Y si no se configuró desde el principio? Creo que es mejor usar setlocal (para afectar solo al buffer con el archivo .css) y usar BufRead, BufNewFile para configurarlo al abrir un archivo css, p. 'au BufRead, BufNewFile * .css setlocal nocindent'. – olsner

Cuestiones relacionadas