Search code examples
javascriptvimindentation

Automatic new line and indentation in vim when inside braces?


For example, if I'm coding jQuery in vim, and I have this in insert mode ("|" is the current cursor position):

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

...and I hit enter, I would like to get this:

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

...while currently, I'm getting this:

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

The same thing happens with function definitions in PHP. Is there a way to automatically insert the extra new line and indent the cursor position when hitting enter inside braces like that?

(Apologies if this has been asked before - it seems like a common request but I searched for awhile and couldn't find it.)


Solution

  • I ended up just hardcoding this into .vimrc, as follows

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

    It would seem like the <BS><Tab> parts aren't necessary, but for some reason it wasn't indenting correctly like the O command usually does, so I had to add it.