2010-01-10 26 views
5

Me está costando trabajo descifrar esto. Estoy escribiendo lo siguiente con la ayuda del complemento AutoClose.vim:Cómo sangrar automáticamente un bloque en vim

function trim() {|} 

| es la posición de mi cursor Lo que quiero lograr es tan pronto como llegué a entrar en el código debería ser similar:

function trim() { 
    | 
} 

En su lugar, lo que sucede ahora es:

function trim() { 
|} 

Respuesta

2

Trate :set cindent. Esto no va a hacer exactamente lo que pides, ya que presionar Enter una vez sólo añade una nueva línea, ni dos, sino que debe obtener algo como:

function trim() { 
    |} 

Después de escribir la última línea de su función, utilice Ctrl + D (en modo Insert) a "dedent" (opuesto a sangrado) } de vuelta al margen izquierdo.

Es posible que deba cambiar también la opción cinkeys para asegurarse de que la autoinferencia reaccione a las claves que desea.

+1

Lo tengo configurado, pero no hace la magia. – goyo

+0

En realidad, 'cindent' podría ser la opción que está buscando. Cambiaré mi respuesta. –

1

Otra configuración de vim útil es :set smartindent que es muy similar a cindent pero más general. Investigue ambos con :help smartindent y :help cindent

1

¿Por qué no modifica Autoclose.vim para colocar su llave de cierre en la línea siguiente? Si el cursor está al final de la línea de apertura, cuando presione enter, la sangrará.

Antes:

function trim() {| 
} 

Después <Introduzca>:

function trim() { 
    | 
} 
0

establecer estos en su vimrc debería solucionar el problema:

set ai 
set smartindent 
ino {<CR> {<CR>}<ESC>O 

La última línea, de hecho, autocompletar su { y lo coloco en prope r lugar al tipear { seguido de Ingrese.

Cuestiones relacionadas