例如 - 当我做gg = G
时int main()
{
return 0;
}
它会将其更改为
int main()
{
return 0;
}
我想要的是 -
int main(){
return 0;
}
'{'应位于功能原型线上
答案 0 :(得分:2)
AFAIK:
=
重新调整缩进,它不会重新格式化代码的样式。例如,代码块样式(您的问题);或添加/删除空行;添加/删除空格,例如a=2 -> a = 2
...
您可以执行此操作来更改{
之前/之后的gg=G
:
:%s/)\n\s*{\s*$/) {/g
你也可以把它们写成一行,然后做一个映射就可以在一条线上完成。
例如,这一行:
:%s/)\n\s*{\s*$/) {/g|norm! gg=G
将转向:
int main()
{
if(foo)
{
return 1;
}
if(a>0)
return a;
for(int i=1;i<20;i++)
{
int foo=0;
foo=i;
}
return 0;
}
到
int main() {
if(foo) {
return 1;
}
if(a>0)
return a;
for(int i=1;i<20;i++) {
int foo=0;
foo=i;
}
return 0;
}
编辑
我的原始回答建议:g/)$/j
“加入”这两行,但我发现它不安全,例如:
if (a>0)
return a;
将变为
if (a>0) return a;
这是OP不期望的。
答案 1 :(得分:2)
要在不修改文件的情况下使用astyle
,您可以使用命令gq
和选项`formatprg'
formatprg
指定将用于格式化缓冲区的外部程序。运行该命令后,缓冲区将被程序的输出替换。
例如:要将其设置为使用c
文件,您可以将以下内容放入vimdc
autocmd FileType *.c set formatprg=astyle\ --style=kr
注意:\
允许您将不同的命令行选项传递给样式。
现在要在您的文件中使用它,您可以输入gggqG
将格式应用于整个文件。
答案 2 :(得分:1)
您可以使用astyle,例如
nnoremap <A-S-f> :w<CR>:!astyle % --style=java<CR>:edit<CR>
将它绑定到Alt-Shift-f(请注意,这会保存/重新加载文件,这可能并不总是您想要的,有很多方法,但我现在不想过多考虑)
当然,您必须自己想出哪些选项可以传递给您的首选格式。