在C中创建新块时缩进新行

时间:2013-05-30 11:35:50

标签: c vim

我正在使用Vim中的AutoClose插件。我想设置行为,以便在我处于状态时

while(i < N) {<cursor>}

然后当(并且仅当)按回车时,我到达:

while(i < N) {
    <cursor>
}

这是Sublime Text中的行为。

这里有一个类似的问题:Automatically insert a matching brace in Vim但是用户希望在创建左大括号后立即开始新的一行。它似乎也不适合我。

如果我使用它,或按照@WoLpH的建议set cindent,结果是(一旦我创建左括号)

while(i < N) {
     <cursor>
    }

在第二个大括号中缩进,光标缩进一个空格。我的vimrc设置是:

filetype indent on
set ts=4
set sw=4
set et

3 个答案:

答案 0 :(得分:0)

有一个内置功能,它被称为cindent

http://vim.wikia.com/wiki/Indenting_source_code#.27smartindent.27_and_.27cindent.27

所以,只需将其放入.vimrc即可,它应该有效:

set cindent

答案 1 :(得分:0)

您所使用的功能包含在DelimitMate中,这是另一个类似于AutoClose的插件。

对于它的价值,几个月前我已停止使用任何自动关闭插件,但我在~/.vimrc中使用此行保留了“括号扩展”功能:

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

答案 2 :(得分:0)

我编辑了AutoClose脚本。函数OpenSpecial现在包含:

return "\<esc>a\<CR>\<tab>;\<CR>".a:cchar."\<esc>\"_xk$\"_xa"

所以我输入{{ l得到了我想要的行为,现在已经足够了