当我从另一个文件中复制代码,格式是搞砸了,就像这样:如何在vim中自动格式化/缩进C代码?
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
我怎样才能自动套用格式在vim这个代码?
当我从另一个文件中复制代码,格式是搞砸了,就像这样:如何在vim中自动格式化/缩进C代码?
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
我怎样才能自动套用格式在vim这个代码?
试试下面的快捷键:
gg=G
说明:gg
转到文件的顶部,=
是修复压痕命令和G
告诉它执行操作的文件的末尾。
这只能缩进代码。 AUTOFORMAT可以做些什么吗? – 2010-03-01 12:54:29
有什么区别? – 2010-03-01 13:35:17
我喜欢这个命令,简单而有用。谢谢 – 2010-03-01 13:54:52
已经提到用于正确缩进代码的内建命令(gg=G
)。如果你想美化的代码,你需要使用外部应用程序,如indent。由于%
表示在EX模式当前文件,你可以使用它像这样:
:!indent %
我喜欢用程序艺术风格。根据他们的website:
艺术风格是一个源代码压头,格式化,并为C,C++,C#和Java编程语言的美化。
它运行在Window,Linux和Mac上。它会执行缩进等操作,用空格替换标签,反之亦然,在你喜欢的位置放置空格(将if(x<2)
转换为(x<2)
,如果你喜欢它),将大括号放在与函数定义相同的行或移动它们到下面的行等等。所有的选项都由命令行参数控制。
为了在vim中使用它,只需将formatprg选项设置为它,然后使用gq命令。因此,举例来说,我有我的.vimrc:
autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb
所以,每当我打开一个.cpp文件,formatprg设置一个我喜欢的选项。然后,我可以键入gg以转到文件顶部,并按照我的标准格式化整个文件,然后按gqg。如果我只需要重新设置一个单一的功能,我可以到函数的顶部,然后键入克q][,它会重新只是功能。
我对款式的选择-T4pb
只是我的偏好。您可以查看their docs,然后更改选项以使其格式化代码,只要您喜欢。
这是一个演示。
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
的astyle后(gggqG):
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
希望有所帮助的astyle之前。
OP要求自动格式化,但接受了只能自动缩进的答案。
这里的区别是:
ORIGINAL
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
自动缩进
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
套用
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
啊,我明白了。现在问题仍然是如何实际autoformat :) – 2010-11-22 08:58:43
-1这是一个评论,而不是一个答案。您需要提供实际实现自动生成的内容,而不仅仅是显示它的内容。 – oligofren 2013-04-19 06:59:46
在这种特殊情况下,我看不出他如何通过发布答案来表达他的观点? – expelledboy 2013-05-14 07:59:48
也许你可以试试以下 $缩进-kr -i8的* .c
希望这对您有用!
插件vim-autoformat让你只用一个按钮就可以格式化缓冲区:https://github.com/Chiel92/vim-autoformat。它使用外部格式化程序,并回退到vim的缩进功能。
我喜欢indent
如上所述,但大多数情况下我只想格式化我正在处理的一小部分文件。由于indent
可以从标准输入代码需要,它真的很简单:
:!indent
来格式化。astyle
也需要stdin,所以你可以在那里使用相同的技巧。
我发现clang-format
效果很好。
一些示例键绑定我更喜欢使用equalprg
在vim结合。这允许您使用G=gg
或其他=
缩进选项调用clang-format
。
只要把你的.vimrc文件中:
autocmd FileType c,cpp setlocal equalprg=clang-format
我想补充一点,为了防止它在第一时间被搞砸了,你可以粘贴之前键入:set paste
。粘贴完成后,您可以输入:set nopaste
来进行js-beautify和缩进等工作。
他们是一个名为indent
的工具。您可以使用apt-get indent
进行下载,然后运行indent my_program.c
。
对于任何想要格式化而不仅仅是缩进代码的人,第二个答案(我的)解决了这个问题。如果你只是想修复缩进,接受的答案是最简单的方法。 – Derek 2015-04-02 21:07:19