例如 - 当我这样做GG = G上有没有办法改变的方式VIM自动格式C,C++代码
int main()
{
return 0;
}
将其更改为
int main()
{
return 0;
}
什么我要的是 -
int main(){
return 0;
}
的“{”应该是在功能可按原型线
例如 - 当我这样做GG = G上有没有办法改变的方式VIM自动格式C,C++代码
int main()
{
return 0;
}
将其更改为
int main()
{
return 0;
}
什么我要的是 -
int main(){
return 0;
}
的“{”应该是在功能可按原型线
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预期。
你可以使用astyle,喜欢的东西
nnoremap <A-S-f> :w<CR>:!astyle % --style=java<CR>:edit<CR>
结合它为Alt-Shift-F键(注意,这可以节省/重新加载它不一定是你想要的,大约有办法的文件但我现在不想太过分了)。
当然,你必须弄清楚你自己选择什么样的选项来传递给你喜欢的格式。
去使用astyle
而不修改文件,你可以使用命令gq
和期权`formatprg'
formatprg
指定将用于格式化缓冲的外部程序。命令运行后,缓冲区将被程序的输出替换。
对于exmample:要设置此与c
文件工作,你可以把下面的你vimdc
autocmd FileType *.c set formatprg=astyle\ --style=kr
注:\
可以让你通过不同的命令行选项的风格。
现在要在文件中使用它,您可以键入gggqG
将格式应用于整个文件。
这是整齐。你也可以使用这个插件,它会自动为你提供几种语言,包括C和C++。 https://github.com/Chiel92/vim-autoformat – 2013-04-29 08:04:30