0

如果我们的代码看起来像

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但问题是即使括号在正确的位置它也会添加一个新行...并且仍然不知道如何将其映射到组合键。

4

1 回答 1

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这就是为什么替换也适用于带有单个{.

于 2012-11-14T13:39:26.393 回答