当我从另一个文件复制代码时,格式是混乱的,就像这样:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
如何在vim中自动格式化这段代码?
当我从另一个文件复制代码时,格式是混乱的,就像这样:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
如何在vim中自动格式化这段代码?
当前回答
我喜欢用“艺术风格”这个程序。根据他们的网站:
art Style是C、c++、c#和Java编程语言的源代码缩进器、格式化器和美化器。
它可以在windows, Linux和Mac上运行。它会做一些事情,比如缩进,用空格替换制表符或反之亦然,在操作周围放置空格(如果你喜欢的话,将if(x<2)转换为if(x<2)),将括号放在函数定义的同一行,或将它们移动到下面的行,等等。所有选项都由命令行参数控制。
为了在vim中使用它,只需将formatprg选项设置为它,然后使用gq命令。例如,我在。vimrc中有:
autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb
这样每当我打开一个。cpp文件时,formatprg就会设置成我喜欢的选项。然后,我可以输入gg转到文件的顶部,并输入gqG根据我的标准格式化整个文件。如果我只需要重新格式化一个函数,我可以转到函数的顶部,然后输入gq][,它会重新格式化这个函数。
我对样式的选择-T4pb只是我的喜好。你可以查看他们的文档,并更改选项,让它按照你喜欢的方式格式化代码。
这是一个演示。astyle之前:
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
After style (gggqG):
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
其他回答
前面已经提到了适当缩进代码的内置命令(gg=G)。如果想美化代码,就需要使用缩进等外部应用程序。因为%表示当前文件的ex模式,你可以这样使用它:
:!indent %
我发现clang格式工作得很好。
在clang文档中有一些示例键绑定
我更喜欢在vim中使用equalprg绑定。这允许您使用G=gg或other = indent选项调用clang-format。
只需在你的。vimrc文件中放入以下内容:
autocmd FileType c,cpp setlocal equalprg=clang-format
试试下面的按键:
gg=G
解释:gg到文件的顶部,=是修复缩进的命令,G告诉它执行到文件末尾的操作。
我喜欢用“艺术风格”这个程序。根据他们的网站:
art Style是C、c++、c#和Java编程语言的源代码缩进器、格式化器和美化器。
它可以在windows, Linux和Mac上运行。它会做一些事情,比如缩进,用空格替换制表符或反之亦然,在操作周围放置空格(如果你喜欢的话,将if(x<2)转换为if(x<2)),将括号放在函数定义的同一行,或将它们移动到下面的行,等等。所有选项都由命令行参数控制。
为了在vim中使用它,只需将formatprg选项设置为它,然后使用gq命令。例如,我在。vimrc中有:
autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb
这样每当我打开一个。cpp文件时,formatprg就会设置成我喜欢的选项。然后,我可以输入gg转到文件的顶部,并输入gqG根据我的标准格式化整个文件。如果我只需要重新格式化一个函数,我可以转到函数的顶部,然后输入gq][,它会重新格式化这个函数。
我对样式的选择-T4pb只是我的喜好。你可以查看他们的文档,并更改选项,让它按照你喜欢的方式格式化代码。
这是一个演示。astyle之前:
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
After style (gggqG):
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
他们的工具叫做缩进。你可以用apt-get install indent下载它,然后运行indent my_program.c。