2008-11-24 8 views
12

Al editar código PHP (no estoy seguro de si es específico para ese idioma) y creo una nueva línea en medio de listas separadas por comas que abarcan varias líneas, las reglas de sangrado siempre desconectando la línea me voy. Here's a video of it. Esto ocurre en matrices, listas de argumentos de funciones, etc.Reglas de sangría de vim (un) molestas

¿Hay algo que pueda hacer para evitar que esto suceda, o métodos más rápidos para corregir el error que desplazarse hacia arriba, volver a indentificarlo, bajar, volver sangrado (ya que se borra al salir de la línea), y continuar?

.vimrc

+1

La trama se espesa. Parece que esto solo se elimina si pulso Intro después del primer o segundo elemento en la lista. –

+0

oh hey! He estado buscando tu cartera. Recuerdo haberlo visto hace un tiempo, pero había perdido el enlace recientemente. mundo pequeño: D – Karan

+0

Podría ser útil si nos muestra su archivo ~/.vimrc y nos indica qué plugins de vim ha instalado. – gpojd

Respuesta

3

Trate :set indentexpr="" y ver si eso ayuda. Consulte :help filetype-indent-off para la sección que trata sobre los plugins de tipo de archivo (que es probablemente de donde proviene este indentexpr).

+0

Eso no pareció cambiar nada, lo que parece extraño ya que tengo eso explícitamente habilitado en mi .vimrc. Tengo entendido que con eso, sin embargo, perdería las otras reglas "inteligentes" de sangrado. –

+0

Intenté ': establecer indentexpr =" ', pero ahora tengo autodetección en absoluto. –

+0

No tengo ninguno, más bien. –

0

El uso de "o" en modo normal parece evitar el problema. Golpear <esc>o desde el modo de inserción no es óptimo, pero es mejor que la manera difícil (como se describe anteriormente).

0

Prueba esto:

:let g:PHP_default_indenting=1 

Ver :h php-indent.

+0

No pareció cambiar nada, –

+0

Después de ejecutar el comando, debe: setf php de nuevo para que surta efecto. O bien ponga lo anterior en su ~/.vimrc y reinicie Vim. –

+0

Ah, ya veo. Eso no resuelve este problema, pero eso es algo que siempre he querido hacer. ¡Gracias! –

3

Su sangría está controlada por el guión de sangría de PHP ("filetype sangrado en" en su .vimrc). Yo uso estas opciones para mi sangría PHP, que se pone en ~/.vim/after/ftplugin:

setlocal autoindent 
setlocal cindent 
setlocal cinwords=if,else,elseif,do,while,foreach,for,case,default,function,class,interface,abstract,private,public,protected,final 
setlocal cinkeys=0{,0},0),!^F,o,O,e 

setlocal nosmartindent " don't use smart indent option 

Para más información sobre este tema en la vim wiki page for source indenting.

0

También se puede hacer

set cindkeys=-0# 

Para el # Char. Si tiene el mismo problema que tuve con declaraciones CSS como

width: 100% 

siendo desplazado a la izquierda, así, se puede añadir

set cindkeys-=: 
0

Creo cindent tornillos de todo y smartindent suele ser lo que quiere .

Trate de poner esto en ~/.vim/filetype.vim:

au BufNewFile,BufRead *.html,*.css setlocal nocindent smartindent 
0

es probable que desee mirar a indentkeys

por ejemplo, el defecto en estos días es:

indentkeys = 0 {, 0},:, 0 #,!^F, o, O, e, *, < >> ,, fin ,:

0

Busque su archivo de sangría php.vim. p.ej./usr/share/vim/vim73/indent/php.vim

Entonces pendientes de las siguientes:

elseif lastline =~ '^\s*?>.*<?\%(php\)\=\s*$' 
    let lnum = lnum - 1 

y hacer comentarios a cabo anteponiendo entre comillas, así:

"elseif lastline =~ '^\s*?>.*<?\%(php\)\=\s*$' 
" let lnum = lnum - 1 

Eso lo arreglamos! No más de sangría en la apertura de etiquetas PHP <?

Cuestiones relacionadas