indent 项目主页 http://www.gnu.org/software/indent/
indent 用户手册 http://www.gnu.org/software/indent/manual/indent.html
将以下选项保存到用户根目录的 [~/.indent.pro] 中,双斜线代表注释,根据自己需求调整代码
//-as //与空格对齐
-nbacc //条件编译周围不加空白行
//-bacc //条件编译周围 加空白行
//-nbadp //过程声明后 不加空白行
-badp //过程声明后 加空白行
-nbap //在函数结束后不加空白行
//-bap //函数结束后 加空白行
//-nbad //在声明区段后不加空白行
-bad //在声明区段后 加空白行
//-nbbb //在注释区段后不加空白行
-bbb //注释块前 加空白行
//-nsob //不用删除多余空白行
-sob // 删除多余空白行
//-nbbo //关闭较长的行,在逻辑运算符前换行
-bbo // 较长的行,在逻辑运算符前换行
-nhnl //关闭较长的行,根据符号优先级换行 same -bbo
//-hnl // 较长的行,根据符号优先级换行 same -bbo
//-nsai //'if'和'(' 无空格
-sai //'if'和'(' 有空格 default
//-nsaf //for 和'(' 无空格
-saf //for 和'(' 有空格 default
//-nsaw //while和'{' 无空格
-saw //while和'{' 有空格 default
//-nss //若for或while区段仅有一行时,在分号前不加空格
-ss //若for或while区段近有一行时,在分号前 加空格
//-npcs //在调用的函数名称和'('之间添有空格
-pcs //在调用的函数名称和'('之间添无空格
//-br //'if'和'{'同行
-bl //'if'和'{'换行
//-ce //'else'和'}'同行
-nce //'else'和'}'换行
//-ncdw //'do-while'中'}'和'while'换行
-cdw //'do-while'中'}'和'while'同行
-nprs //在'(后'和')前'不插入空格
//-prs //在'(后'和')前' 插入空格
//-brf //定义函数名和'{'同行
-blf //函数定义中的大括号'{' 强制换行
//-brs //定义结构体中的'{'和结构体名同行
-bls //定义结构,'struct'和'{' 分行
//-nbc //变量声明中,逗号分割变量不分行
-bc //在声明中每个逗号后强制换行
-nbfda //关闭函数参数一个一行
//-bfda //函数声明的参数中每个逗号后强制换行
-nbfde //关闭函数声明的结束括号')'之前强制换行
//-bfde //函数声明的结束括号')'之前强制换行
-bli0 //'{'不继续缩进
//-nbs //关闭sizeof 和参数之间有空格
-bs //sizeof 和参数之间有空格
//-c++ //C PLUS PLUS
-c40 //语句注释开始于列40
-cbi0 //switch '{}' 缩进
-cd40 //变量声明后注释开始于行40
//-ndj //不要左对齐声明
//-dj //和cd一起使用抑制注释与声明对齐 会导致di 出现问题
//-ncdb //不将单行注释变为块注释
-cdb //将多行注释符号放到单独的行
-ci4 //叙述过长而换行时,指定换行后缩排的格数
-cli0 //switch 中的 case语句缩进0个空格
//-ncs //在转换操作符和要转换的对象之间不放置空格
-cs //在类型转换后面加空格
-cp40 //#esle,#endif后面的注释开始与行40
-d0 //单行注释不从1列开始的,不向左缩进
-di20 //指定的列中排列
//-neei //关闭额外表达式缩进
-eei // 额外表达式缩进
-nfc1 //不要格式化放在每行最前端的注释
//-fc1 //针对每行最前端的注释,设置其格式
//-nfca //关闭全部格式化注释
-fca //设置所有注释的格式
-fnc //修复注释嵌套
//-gnu //指定使用GNU的格式,此为indent的预设值
//-ngts //no-gettext-strings
//-gts //gettext_strings
//-h //帮助
-i4 //设置缩排的格数
-il0 //从左边到标签的缩进距离
//-nip //参数不要排列
//-ip5 //旧风格的函数定义中的参数说明缩进5个空格
//-kr //使用kernighan 和 Ritchie 编码风格
-l80 //非注释行最长80
-lc80 //将注释的最大行长度设置为 80
//-linux //
//-nlps //删除预编指令'#'和命令之间的空格
-lps //不修改预编译指令'#'和命令之间的空格
//-nlp //续行过长而换行,且叙述中包含了括号时,不用将括号中的每行起始栏位垂直对其排列
-lp //续行从上一行的出现的括号开始
//-npmt //不保留出文件的访问和修改时间
//-pmt //保留输出文件的访问和修改时间
//-npro //忽略.indent.pro 配置
-npsl //函数返回类型和程序名同行
//-psl //程序类型置在程序名称的前一行
-ntac //不使用tab对齐注释
-nut //不使用tab
//-ut //使用tab键
//-nv //执行时不显示详细信息
//-o //输出文件
//-pal //指针符号'*'紧接类型,如设置 di '*'居中
-par //指针符号'*'紧接变量
//-pi4 //当语句换行时,为每个打开的括号指定额外的缩进,'('
//-ppi3 //预处理命令'#'和命令名称直接缩进3个空格 指定此选项将覆盖 -lps -nlps
//-sar //初始值设定项周围空格
//-sbi0 //缩进struct,union或enum 0个空格
//-nsc //注释左侧不添加'*'
-sc //在每行注释左侧加上'*'
//-slc //单行条件
//-st //将结果显示在标准输出设备
//-T //数据类型名称缩排
-ts4 //设置tab的长度
//-v //执行时显示详细信息
上述配置已知问题 int a=1,b=2,c=3;格式化并不友好