我想重新格式化一些代码,看起来像这样:有没有办法用Vim自动重新设置大括号?
if (cond) {
foo;
}
到
if (cond)
{
foo;
}
由于这是C代码,我一直在寻找cindent
/cinoptions
与=
使用,但它似乎它不涉及多行规则。
我一直在寻找formatoptions
使用gq
,它似乎也不可能。
那么有可能使用默认的Vim选项,或者我应该使用特定的插件还是函数?
我想重新格式化一些代码,看起来像这样:有没有办法用Vim自动重新设置大括号?
if (cond) {
foo;
}
到
if (cond)
{
foo;
}
由于这是C代码,我一直在寻找cindent
/cinoptions
与=
使用,但它似乎它不涉及多行规则。
我一直在寻找formatoptions
使用gq
,它似乎也不可能。
那么有可能使用默认的Vim选项,或者我应该使用特定的插件还是函数?
:%s/^\(\s*\).*\zs{\s*$/\r\1{/
击穿:
^\(\s*\)
=捕捉空白在该行的开头
.*
=一切
\zs
=这个
{
=左大后开始更换大括号
\s*$
=尾随线年底
\r\1{
=换行,抓获空白,撑
我不知道这是否能够彻底解决您的问题,但如果这是一个一次性的操作,你可能会想尝试的正则表达式:
:%s/^\(\s*\)\(.*)\)\s*{\s*$/\1\2^M\1{/
注意^M
是为控制字符通常通过按CTRL-V然后ENTER生成(取决于您的终端)。
编辑:正如Jay和Zyx在评论中指出的,\r
是将换行符插入替换字符串的更好方法。我没有意识到这一点,非常感谢提示。
我不知道你是否可以在vim中完成它,但是你可以尝试使用BSD indent
命令和-bl
选项。当光标在第一个{
上时,您可以输入!%indent -bl
输入。
+1简单和高可用性 – sehe 2011-04-25 21:01:04
之前空格如果安装Artistic Style,你可以这样做:
:set formatprg=astyle\ -b
然后使用gq
重新格式化的块码。强调如果您想要启用此功能后,每次你编辑C文件, 你可以添加以下到您的.vimrc
文件文本
。
autocmd BufNewFile,BufRead *.c set formatprg=astyle\ -b
这一个运作良好! – user1027562 2012-10-10 10:14:12