如何在 Vim 中将左花括号移动到新行?

Jam*_* Ko 4 vim

我是一名 C# 开发人员,我是使用 Vim 的新手。我很好奇,你会在你的.vimrc文件中放什么,这样当你输入花括号并按 Enter 时,就像这样:

public void Foo() {<Enter>
Run Code Online (Sandbox Code Playgroud)

那个大括号被放在一个新行上,插入符号移动到大括号的内部,如下所示:

public void Foo()
{
    |
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,谢谢!

Luc*_*tte 5

您的问题非常接近带有大括号的自动关闭插件问题,其中

inoremap <expr> <cr> getline(".")[col(".")-2:col(".")-1]=="{}" ? "<cr><esc>O" : "<cr>"
Run Code Online (Sandbox Code Playgroud)

回答这个问题——这有点像我在lh-brackets 中使用的

在这里,您似乎没有使用任何括号插件。文本搜索变得'\S\s*{$',并且可以代替插入:<BS><cr>{<cr>}<esc>O,或只是{<cr>}<esc>O如果只{就行了。如果光标在 内{},您还应该集成之前的测试。这变成:

inoremap <expr> <cr> 
   \   getline(".") =~ '\S\s*{$'                 ? "<bs><cr>{<cr>}<esc>O"
   \ : getline('.') =~ '^\s*{$'                  ? "<cr>}<esc>O" 
   \ : getline(".")[col(".")-2:col(".")-1]=="{}" ? "<cr><esc>O"
   \ :                                             "<cr>"
Run Code Online (Sandbox Code Playgroud)