我正在使用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
答案 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得到了我想要的行为,现在已经足够了