2010-08-09 9 views
17

Actualmente estoy peleando con Vim, no puedo hacer que las opciones de sangría hagan lo que quiero.Cómo deshabilitar la sangría de vim de la caja del interruptor?

Aquí están mis configuraciones, las puse en la parte inferior de .vimrc para asegurarme de que tengan prioridad. Como se puede ver que voy un poco loco, así que traté de apagar casi todo:

set cindent 
set cinkeys=o,O 
set cinoptions= 
set cinwords= 
set indentexpr= 

En la mayoría de los casos parece que funciona bien, lo hace un guión después de abrir un bloque y todo está bien. Pero hay un caso que me está volviendo loco, cuando hay un { después de una declaración case, la siguiente línea es demasiado lejos sangría:

switch() { 
    case CASE: { 
        // <-- next line gets indented to here, why?? 
     // <-- should be indented to here 

¿Cómo puedo hacer que deje de hacer esto? TIA

+0

En caso de que tenga curiosidad, el extraño comportamiento tiene la intención de permitirle escribir una declaración en la misma línea que el caso, con declaraciones adicionales alineadas con la primera, por ejemplo, 'case CASE: x = 1; '¶' y y; 2; 'donde xey están en la misma columna. – Will

Respuesta

18
:set cinoptions=l1 

(esa es la carta ell seguido de un número uno)

Mira: ayudar a cinoptions valores para la cadena por defecto y las descripciones de las diferentes opciones.

+0

Eso hizo el truco, gracias! – andy

1

Cuando tecleo manualmente los comandos set, no recibo ninguna indentación. ¿Ha mirado la salida de :set all para confirmar que su configuración no está siendo anulada?

Nota: Esto probablemente debería estar en un comentario, pero esa opción actualmente no está permitida.

+0

Tenía la sensación de que algo sospechoso estaba sucediendo, pero no veo nada sorprendente cuando miro ': configurar todo". ¿Tal vez usa su propio predeterminado secreto cuando dejo esas opciones en blanco? No sé ... – andy

+0

Curiosamente, cuando lo probé por primera vez, estaba usando GVim 7.2.269 en Windows. Cuando intenté nuevamente usar 7.2.330 en Linux, mis resultados coincidieron con tu OP. – rlduffy

1

Si guión es N espacios (reemplazar N con valor real), pruebe lo siguiente

set cinoptions=p0,t0,:N,=0 
set cinwords=if,else,switch,case,for,while,do 
set cindent 

: N - label> lugar 'caso' 0 personajes del guión

= 0 del interruptor -> guiones las declaraciones dentro de la etiqueta del caso

Cuestiones relacionadas