Automatically insert a matching brace in Vim

Bob picture Bob · Dec 23, 2010 · Viewed 66.3k times · Source

I spend way too much time fumbling around because Vim doesn't handle closing braces like most IDEs do. Here's what I want to happen:

Type this:

if( whatever )
{ <CR>

and get this:

if( whatever )
{
  |  
}

where <CR> mean hit the ENTER key and | is the position of the cursor. This is what Eclipse does. It's what Visual Studio does. And it's what I want Vim to do.

I've seen a few plugins, tried a few, and none of them seem to give me this behavior. Surely I can't be the first programmer to want this.

Answer

Michael Foukarakis picture Michael Foukarakis · Dec 23, 2010

In VimL, you can map the { to do exactly as you wish:

inoremap { {<CR>}<Esc>ko

depending on your autoindent setup, you may want to add a <BS> after <CR>.

For a more complete solution, I'd suggest you take a look at Luc Hermitte's vim plugins. They've never failed me so far.