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

5
我发现了一个名为 vim-autoclose 的 Vim 自动配对插件。它的使用效果与其他集成开发环境一样好。例如,当你输入 { 时,它会给你返回 {|}(其中 "|" 代表光标)。然后,如果你按下 "Enter" 键,{|} 将变为:
{

      |

}

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

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

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

但是它在shiftwidth方面有一个问题。例如,如果我:set shiftwidth=4,则{}之间的新行将具有8个空格的缩进。新行中的缩进使shiftwidth加倍。

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


vim-autoclose 的 Bug 报告:https://github.com/Townk/vim-autoclose/issues/38 - Ciro Santilli OurBigBook.com
2个回答

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

看起来可以工作。


不是的,它不能插入新行并自动缩进。 - Wang Ruiqi
我已经编辑了我的答案。我应该使用 S 而不是 <Tab> - romainl
你试过delimitmate吗? - romainl

0

在vimrc中设置set aiset smartindent之后

使用以下内容

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

应该可以工作。最后一个字符是大写字母O,不是零。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接