2012-03-08 39 views
6

Al editar JavaScript, por lo general tienen que hacer esto:Vim y la sangría con soportes/apoyos

function myFunc() { 
    // func body here 
} 

He intentado un par de plugins del soporte de cierre como AutoClose y vrackets, pero cuando yo vaya a codificar como anteriormente, todos ellos hacen esto:

function myFunc() {<CR> 
|} 

Cómo puedo hacer que Vim insertar una antes del paréntesis cuando voy a la nueva línea, y sangrar el cursor correctamente, así:

function myFunc() {<CR> 
    |<CR> 
} 

¿Hay como un complemento o algo que hace esto?

+0

El complemento [delimitMate] (https://github.com/Raimondi/delimitMate) proporciona una opción para este IIRC. –

+0

@Randy: Mi configuración vim debe estar maldita o algo así. delimitMate no hará expansión CR ... – hayavuk

+1

Aunque este hilo es bastante antiguo, me gustaría añadir que delimitMate tiene una opción para hacer esto: simplemente agrega 'let g: delimitMate_expand_cr ​​= 1' a tu .vimrc. Ver ': help delimitMate' para más opciones. – jasperge

Respuesta

2

tengo esta línea en mi ~/.vimrc:

inoremap <C-Return> <CR><CR><C-o>k<Tab> 
+0

Por una razón u otra, no hace nada por mí ... Podría ser un conflicto con un complemento. – hayavuk

+0

Difícil de decir. ¿A qué te refieres con "no hace nada por mí"? ¿Hace algo? ¿Qué? – romainl

+0

Quiero decir que no hace ninguna diferencia si lo tengo en vimrc o no ... Lo cual es extraño. Supongo que algún complemento anula la asignación. – hayavuk

1

Tal vez fuera de la base, pero ¿ha intentado utilizar el comando abreviado?

:ab {} {<cr>}<esc>ko 

Por supuesto, he smartindent encendido y que tendría que escribir {} a que se complete, pero funciona para mí.

+0

Tan cerca, pero no funciona cuando cierro automáticamente el soporte ... Puedo crear una abreviatura diferente, como 'fnc' y hacer que se expanda a lo que tienes allí, como una solución provisional. Si a nadie se le ocurre una solución mejor, iré con eso. – hayavuk

0

¿Ha intentado mapear toda la función, como

inoremap ,4 function() {}<left><enter><esc>O

6

utilizo este mapeo en combinación con AutoClose:

inoremap {<CR> {<CR>}<C-o>O 

No se necesita ninguna combinación de teclas especial.

+0

Sí, descubrí que puedes mapear la combinación de teclas unos meses después de publicar la pregunta. – hayavuk

+0

Esto finalmente lo hizo por mí, y también lo uso con vim-autoclose. – dmonopoly

Cuestiones relacionadas