1

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

while(i < N) {<cursor>}

然后当(且仅当)我按下回车键时,我会:

while(i < N) {
    <cursor>
}

这是 Sublime Text 中的行为。

这里有一个类似的问题:在 Vim 中自动插入匹配的大括号,但用户希望在创建左大括号后立即开始新行。而且它似乎对我来说不能正常工作。

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

while(i < N) {
     <cursor>
    }

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

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

3 回答 3

0

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

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

inoremap {<CR> {<CR>}<C-o>==<C-o>O
于 2013-05-30T12:38:20.610 回答
0

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

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

所以,只要把它放在你的.vimrc,它应该工作:

set cindent
于 2013-05-30T11:42:54.303 回答
0

我编辑了自动关闭脚本。函数OpenSpecial现在包含:

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

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

于 2013-05-30T13:03:01.003 回答