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

时间:2012-11-12 09:31:14

标签: java vim code-formatting

如果我们的代码看起来像

for(...){

}

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

for(...)
{

}

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

这是我发现的那个:

:%s/^(\s*).*\zs{\s*$/\r\1{/ 
http://stackoverflow.com/questions/4463211/is-there-a-way-to-reformat-braces-automatically-with-vim中的

但是,即使括号位于正确的位置,它也会添加一个新行......但仍然不知道如何将其映射到组合键。

1 个答案:

答案 0 :(得分:0)

(用更准确的模式编辑)

这应该可以解决问题:

nnoremap <F9> :%s/^\(\s*\).\+\zs{\ze\s*$/\r\1{<cr>

但它对我来说听起来并不“安全”。

相反,你可以这样做:

nnoremap <F9> :%s/^\(\s*\).\+\zs{\ze\s*$/\r\1{/c<cr>

将要求确认每场比赛。

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

修改

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

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

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