如何在VIM中重新格式化C源代码'{'展示位置?

时间:2015-03-04 15:09:38

标签: vim

我想更改以下代码:

if (test)
{
       statements;
}
else
{
       statements;
}

以下内容:

if (test) {
       statements;
} else {
       statements;
}

使用' ='没有做这个功能(据我所知)。 是否有任何聪明的VIM命令可以做到这一点?

1 个答案:

答案 0 :(得分:0)

你可以玩正则表达式。在这里,它将是:

:%s/\_s*{/ {/g
:%s/}\zs\_s*\ze\(else\|while\)/ /g

秘密位于/\_s,类似/\s(与空格匹配),但也匹配换行符。

如果您还想转换{ return foo; }之类的内容,您还必须插入换行符,然后重新启动所有内容。

:%s/\_s*{\_s*/ {\r/g
gg=G

您还可以查看集成了AStyle或clang-format等工具的vim插件,这些插件可以提供更好的结果。

PS:lh-cpp和mu-template片段有一个选项(通过:AddStyle),让最终用户指定是否插入换行符。有时,更好的方法是生成符合项目风格的代码。