Vim Auto Indent with newline

How do I get vim to place the cursor within the braces starting on a new line, ie with | denoting the cursor position :

class {
  |
}

right now with my settings it only does this

class {
|}

I got this in my .vimrc file set autoindent shiftwidth=2 tabstop=2 noexpandtab

Basically I just want how a normal IDE would indent it.

update:

I found how to do this with inoremap { {<CR>}<Esc>O


Put this in your .vimrc :

imap <C-Return> <CR><CR><C-o>k<Tab>

Assuming autoindent and smartindent are set correctly, typing Ctrl + Return between braces will put your cursor where you want it to be.


I found that delimitMate does exactly what you describe and more (that is, automatically inserting the ending } ). Note you have to tell delimitMate to expand carriage returns by adding let delimitMate_expand_cr=1 to your config.

From my observation, this is exactly the behaviour found in TextMate and SublimeText.


I have Ubuntu 12.04 and I found no vimrc file in home directory. Global vimrc file was in /etc/vim/vimrc .
There was almost nothing in this file. So for me it worked to add this 3 lines to the end of /etc/vim/vimrc

set autoindent
set cindent
inoremap { {<CR>}<up><end><CR>

When you will type { next time it will be changed by combination { , Enter, } , up, end, Enter. cindent and autoindent will add required amount of Tab's.
PS I'm not good in tuning up vim so some explanations may be not so accurate. It's how I think it works.

链接地址: http://www.djcxy.com/p/8720.html

上一篇: 如何从(并复制到)系统的剪贴板上粘贴vim?

下一篇: Vim自动缩进换行