Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vimrc括号/括号java,c缩进新行_Java_Vim_Code Formatting - Fatal编程技术网

vimrc括号/括号java,c缩进新行

vimrc括号/括号java,c缩进新行,java,vim,code-formatting,Java,Vim,Code Formatting,如果我们的代码看起来像 for(...){ } 重新格式化后,我希望它看起来像 for(...) { } 以及所有函数、方法、类等。 我在stackoverflow的其他文章中发现了类似的东西,但它是一个正则表达式,每次都需要在vim控制台中键入。我正在寻找一些东西放在vimrc文件中(如果可能的话),并在每次打开它时都能工作 这就是我发现的: :%s/^(\s*).*\zs{\s*$/\r\1{/ 但问题是,它添加了一个新的行,即使括号在正确的位置。。。但仍然不知道如何将其映射到组

如果我们的代码看起来像

for(...){

}
重新格式化后,我希望它看起来像

for(...)
{

}
以及所有函数、方法、类等。 我在stackoverflow的其他文章中发现了类似的东西,但它是一个正则表达式,每次都需要在vim控制台中键入。我正在寻找一些东西放在vimrc文件中(如果可能的话),并在每次打开它时都能工作


这就是我发现的:

:%s/^(\s*).*\zs{\s*$/\r\1{/ 
但问题是,它添加了一个新的行,即使括号在正确的位置。。。但仍然不知道如何将其映射到组合键。

(使用更精确的模式编辑)

这应该可以做到:

nnoremap <F9> :%s/^\(\s*\).\+\zs{\ze\s*$/\r\1{<cr>
nnoremap:%s/^\(\s*\)。\+\zs{\ze\s*$/\r\1{
但对我来说,这听起来并不“安全”

相反,您可以:

nnoremap <F9> :%s/^\(\s*\).\+\zs{\ze\s*$/\r\1{/c<cr>
nnoremap:%s/^\(\s*\)。\+\zs{\ze\s*$/\r\1{/c
这将要求确认每场比赛

或者录制宏并使用
:global
播放

编辑

您的模式,
:%s/^(\s*).*\zs{\s*$/\r\1{/
,是错误的,因为:

  • 捕获括号未正确转义,
    (\s*)
    而不是
    \(\s*)

  • *
    将匹配任意数量的字符,包括
    0
    ,这就是为什么替换也适用于具有单个
    {
    的行


为什么不显示替换,以便我们可以帮助您将其转换为方便的映射?这就是我找到的:%s/^(\s*).*\zs{\s*$/\r\1{/in但问题是,即使括号在正确的位置,它也会添加一行新行…但仍然不知道如何将其映射到组合键。请将其放置在问题的主体中。好的,当我这样映射它时,它会尖叫它找不到模式%s/^(\s*).\zs{\ze\s*$这是因为您提供的模式错误,括号应该转义。谢谢!:)顺便说一句,我甚至不知道可以询问要更改哪些..谢谢:))如果这个答案对您有帮助,请不要忘记检查。