2013-04-27 80 views

回答

2

AFAIK:

=重新调整缩进,它不会重新格式化您的代码的风格。例如代码块样式(你的问题);或添加/删除空行;添加/删除例如a=2 -> a = 2 ...

你可以做到这一点之前更改{ /后您gg=G

:%s/)\n\s*{\s*$/) {/g 

你也可以把它们写为一行,并在一个很短的映射来做到这一点。

e.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; 
} 

编辑

我原来的一个nswer建议:g/)$/j“加入”两条线,但我发现它是不是安全的,例如:

if (a>0) 
    return a; 

会变成

if (a>0) return a; 

未通过OP预期。

1

你可以使用astyle,喜欢的东西

nnoremap <A-S-f> :w<CR>:!astyle % --style=java<CR>:edit<CR> 

结合它为Alt-Shift-F键(注意,这可以节省/重新加载它不一定是你想要的,大约有办法的文件但我现在不想太过分了)。

当然,你必须弄清楚你自己选择什么样的选项来传递给你喜欢的格式。

2

要随着Cubic's Answer

去使用astyle而不修改文件,你可以使用命令gq和期权`formatprg'

formatprg指定将用于格式化缓冲的外部程序。命令运行后,缓冲区将被程序的输出替换。

对于exmample:要设置此与c文件工作,你可以把下面的你vimdc

autocmd FileType *.c set formatprg=astyle\ --style=kr 

注:可以让你通过不同的命令行选项的风格。

现在要在文件中使用它,您可以键入gggqG将格式应用于整个文件。

+1

这是整齐。你也可以使用这个插件,它会自动为你提供几种语言,包括C和C++。 https://github.com/Chiel92/vim-autoformat – 2013-04-29 08:04:30

相关问题