如何在使用自动关闭对中时在Vim中设置自动插入新行和缩进

时间:2012-08-24 15:02:38

标签: vim indentation

我找到了一个名为vim-autoclose的Vim自动对插件。它像其他IDE一样工作得很好。例如,当您键入{时,它会为您提供{|}(“|”表示光标)。然后,如果按“Enter”,{|}变为:

{

      |

}

这就是我需要的,但不幸的是它会禁用我的中文输入法应用程序,所以我不得不放弃它。

我尝试过其他autoclose插件,但没有一个能以这种方式自动关闭。我找到了一种方法来使自动关闭工作像上面那样。

:autocmd FileType c,java,javascript ino <buffer> { <C-G>u{<CR>}<Esc>O<C-T>

但它有一个shiftwidth问题。例如,如果我:set shiftwidth=4 {}之间的新行将有8个空格缩进。新行中的缩进使移位宽度加倍。

我的问题是如何将新行的缩进设置为shiftwidth的相同空格缩进?

2 个答案:

答案 0 :(得分:0)

inoremap { {<CR><CR>}<C-o>k<C-o>S

似乎有效。

答案 1 :(得分:0)

在vimrc中设置set aiset smartindent

使用以下

inoremap {<CR> {<CR>}<ESC>O

应该有效。最后一个字符是capital O,而不是零。