使用AStyle格式化代码

AStyle是一个开源的代码缩进、格式化和美化工具,可以处理C, C++, C++/CLI, Objective‑C, C# and Java语言。本文简介AStyle使用方法,以及如何在Vim里调用Astyle。

安装

SourceForge AStyle 项目下载需要的版本,并解压,到build目录选择自己使用的编译器(有clang,gcc,intel等编译器支持,这里选择gcc)。然后make && make install就可以了。

使用

AStyle是一个命令行工具,从命令行读取输入。使用方法如下所示:

# 命令格式
astyle  [OPTIONS]  SourceFile1  SourceFile2  SourceFile3  [ . . . ]

# 格式化单个文件
astyle  --style=allman  /home/user/project/foo.cpp

# 递归处理文件
astyle  --style=allman --recursive  /home/user/project/*.cpp  /home/user/project/*.h

# 通过stdin/stdout处理单个文件,并导出到不同的文件
astyle --style=allman < OriginalSourceFile > BeautifiedSourceFile

# 通过stdin处理单个文件,只查看不更新
astyle --style=allman < OriginalSourceFile | less
选项和选项文件

选项可以通过命令行参数指定,也可以通过选项文件指定,命令行参数具有更高的优先级。推荐通过选项文件自定义代码风格。

# 可以通过--options=file,指定选项文件;选项文件示例如下

# this line is a comment
--style=allman      # this is a line-end comment
# long options can be written without the preceding '--'
indent-switches     # cannot do this on the command line  
# short options must have the preceding '-'
-t -p
# short options can be concatenated together
-M60Ucv

选项包括花括号、tab、缩进、padding以及其他格式。如果想了解具体选项可以参考说明文档

P.s. 个人比较喜欢--style=kr

在Vim里使用AStyle

可以在Vim里调用AStyle来格式化当前代码。

# 格式化当前文件
:%!astyle --style=kr

# 格式化指定区域
:1,40!astyle --style=kr

也可以通过定义快捷键来格式化当前代码(当然也可以使用Vim的各种扩展功能)。

# 使用F2一键格式化当前文件
# 在.vimrc里添加如下快捷键
map <F2> :%!astyle --style=kr<CR>  
Tips

还可以在代码提交时(比如使用代码库hook功能)自动进行代码格式化。

flacro

Read more posts by this author.