在 Keil 里一行一行手动整理缩进,虽然说明你注重代码格式,但代码量一大效率实在太低。这里推荐 AStyle 这个工具,下面结合官方资料把它的用法和配置方式梳理清楚。
1 AStyle 介绍
AStyle 全称 Artistic Style,是一个免费、快速且小巧的自动格式化程序,适用于 C、C++、C++/CLI、Objective‑C、C# 和 Java 源代码。
缩进源代码时,我们经常会同时使用空格和 Tab 来形成想要的缩进。而且有些编辑器在按下 Tab 键时,默认插入的是空格而不是制表符。其他编辑器(比如 Emacs)还能通过自动调整行前空格来“美化”代码,甚至会把原来只用 Tab 缩进的代码插入空格。
不同编辑器对每个 Tab 字符显示的空格数量也可能不一致,除非用户手动设置成自己习惯的值。程序员从一个编辑器换到另一个编辑器时,最常遇到的一个问题就是:本来缩进很整齐的代码,突然乱成一团。即使你自己坚持只用空格或只用 Tab,阅读别人源码时仍然可能遇到这类麻烦。
为了解决这个问题,Artistic Style 被开发出来。它是一个用 C++ 编写的过滤器,可以自动重新缩进并格式化 C / C++ / Objective-C / C++/CLI / C# / Java 源文件。它既可以从命令行调用,也可以作为库集成到其他程序中。
官网地址:http://astyle.sourceforge.net/

下载地址:https://sourceforge.net/projects/astyle/
2 AStyle 初体验
直接看效果会更直观。下面是一段没有经过 AStyle 格式化的代码:

再用 AStyle 插件格式化一下:

很明显,第一种代码风格如果频繁出现在你参考的源码里,基本很难有继续看下去的心情,甚至想直接丢进回收站。第二种看起来就舒服多了。
也就是说,以后再看别人的代码,第一件事可以先交给 AStyle 把代码风格整理成自己习惯的格式,这对学习和工作效率都有帮助。一个好程序,不仅要有好的算法,同时也要有良好的书写风格。
3 AStyle 插件在 Keil 工程中的适配
我这里使用的 Keil 软件版本是:V5.29.0.0。
3.1 Keil5 配置用户自定义插件
打开 Keil 的 Tools 菜单,选择 Customize Tools Menu...,进入自定义工具菜单。

3.2 添加用户自定义命令并配置参数
在 Customize Tools Menu 窗口中,就能添加自己的格式化命令。Menu Content 中显示的是自定义用户命令,名称可以自己写。下面是我配置的两个用户命令。

用户命令:格式化工程
参数配置:
-n "$E*.c" "$E*.h" --style=ansi -p -s4 -S -f -xW -w -xw -R
用户命令:格式化当前文件
参数配置:
-n !E --style=ansi -p -s4 -S -f -xW -w -xw
这里说明一下参数含义:!E 表示当前获得焦点且正在编辑的文件;$E*.c 和 $E*.h 表示当前获得焦点且正在编辑文件所在目录下所有 .c 和 .h 文件。这些参数可以参考 Keil µVision 的帮助文档。上面使用的是 AStyle 默认格式来格式化文件,如果想自定义格式,可以参考 官网的开发文档 进行配置。
3.3 选择命令对 .c 或 .h 开始格式化处理
再次打开 Tools 菜单,就能看到刚才配置好的用户命令。点击对应的命令,即可完成代码格式化。

如果还想调整缩进风格、换行规则等细节,建议继续查阅 AStyle 官方开发文档学习。