2011-01-22 6 views
11

Per esempio, se sto codifica jQuery in vim, e ho questo in modalità di inserimento ("|" è la posizione del cursore):Nuova linea e rientranza automatica in vim quando si trovano tra parentesi graffe?

$('#something').click(function(){|}) 

... e mi ha colpito entrare, vorrei per ottenere questo:

$('#something').click(function(){ 
    | 
}) 

... mentre attualmente, sto ottenendo questo:

$('#something').click(function(){ 
|}) 

La stessa cosa accade con definizioni di funzioni in PHP. C'è un modo per inserire automaticamente la nuova linea in più e indentare la posizione del cursore quando si colpisce entrare all'interno di parentesi come quella?

(Mi scuso se questo è stato chiesto prima - sembra una richiesta comune, ma ho cercato per un po 'e non poteva trovarlo.)

risposta

3

Ho finito appena hardcoding questo in Vimrc, come segue

" Make it so that a curly brace automatically inserts an indented line 
inoremap {<CR> {<CR>}<Esc>O<BS><Tab> 

Sembrerebbe come i <BS><Tab> parti non sono necessari, ma per qualche motivo non è stato il rientro correttamente come il comando O solito fa, quindi ho dovuto aggiungerlo.

1

Io uso javascript.vim che (quasi) fa ciò che si vuole per il codice JavaScript .

C'è anche un php.vim, ma non l'ho provato.

+0

Hmm, sto già utilizzando javascript.vim senza successo. Hai dovuto fare qualcosa in più per far funzionare la cosa in più? –

+0

@Mike: In primo luogo, usi la stessa versione di quella menzionata e l'hai inserita nel posto giusto (la mia è in ~/.vim/indent). Secondo, hai impostato 'smartindent' e' autoindent' nel tuo .vimrc? –

+0

sì e sì. Se hai voglia di dare un'occhiata: https://github.com/mikecrittenden/vimstuff (non devi ovviamente :)) –

0

La mia versione è simile ma utilizza <C-o> anziché <Esc> poiché attiverebbe la convalida da JavaScriptLint.vim.

Inoltre, non voglio davvero ogni {} di essere su più righe in modo che sia mappato Ctrl +.

inoremap <C-Return> <CR><CR><C-o>k<Tab> 
Problemi correlati