indent 命令
用途
重新格式化一个 C 语言程序。
语法
缩进 InputFile [ OutputFile ] [ -nbad | -bad ] [ -nbap | -bap ] [ -nbbb | -bbb ] [ -nbc | -bc ] [ -br | -bl ] [ -c n ] [ - cdn ] [ -ncdb | -cdb ] [ -nce | -ce ] [ -ci n ] [ -cli n ] [ -d n ] [ -di n ] [ -ndj | -dj ] [ -nei | -ei ] [ -fa ] [ -nfa ] [ -nfc1 | -fc1 ] [ -i n ] [ -nip | -ip ] [ -l n ] [ -lc n ] [ -nlp | -lp ] [ -npro ] [ -npcs | -pcs ] [ -nps | -ps ] [ -npsl | -psl ] [ -nsc | -sc ] [ -nsob | -sob ] [ -nslb | -slb ] [ -st ] [ -troff ] [ -nv | -v ] [ - TType ]...
描述
indent 命令按照随命令输入的标志所指定的格式重新格式化一个 C 程序。
如果只指定 InputFile 参数,重新格式化的文件写回 InputFile 参数,并且该参数的一个 InputFile 的备份副本写入当前目录,文件名带 .BAK 后缀。
如果指定 OutputFile 参数,则 indent 命令将执行检查以确保它的名称与 InputFile 参数并不相同。
要为 indent 命令设置自己的缺省概要文件,在您的登录目录或当前目录中创建一个名为 .indent.pro 的文件。 在这个文件中,包含所期望数目的标志,这些标志用空格、制表符或换行符隔开。
当前目录下 .indent.pro 文件中的标志覆盖那些在您的登录目录下的标志(除了 -T Type 标志,它是累积的)。 如果 indent 命令运行并且一个概要文件存在,将读取概要文件以设置程序的缺省配置。 然而,命令行上的标志覆盖概要文件标志。
注释处理
indent 命令假定紧跟在起始注释标记(/*- 或 /**)后带 -(破折号)或 *(星号)的任何注释是用星号包围的注释。 除了缩进,每行注释保持不变。 在注释的第一行,可以调整该缩进来说明这个变化。
其他注释被视为文本。 indent 命令在一行中放入尽量多的单词(由空格、制表符或换行符隔开)。 每段由几个空行隔开。
块注释不在代码的右边且超过一行。
如果注释在已带有代码的行中,注释从由 -cn 标志设置的注释列开始。 否则,注释从 n 缩进级别开始,这些缩进级别小于代码当前的位置,其中 n 由 -dn 标志指定。 如果一行中的代码超过了注释列,注释从更靠右边的地方开始。 在极端情况下,右页边距能被自动地扩展。
预处理器行处理
通常,indent 命令单独给预处理器留几行。 它仅做的重新格式化是整理尾端的注释。 它只留下嵌入式注释。 条件编译(在 #ifdef 和 #endif 间的代码行)被识别并且 indent 命令试图为引入的语法特性做正确地补偿。
C 语法处理
内置于 indent 命令中的解析器试图处理不完整和格式错误的语法。 特别情况下,宏的使用如下:
#define forever for(;;)可得到正确处理。 为了获取最好的结果,在语法正确的源文件上用 indent 命令。
标志
注: 标志可以出现在文件名之前或之后。
| 项 | 描述 |
|---|---|
| -糟糕 | 在每个声明块后,强制加一个空行。 |
| 恩巴德 | 禁止在每个声明块后加一个空行;除非用 -bad 标志关闭该标志,否则该标志处于活动状态。 |
| 巴普 | 强制在每个过程体后加一个空行。 |
| 恩巴普 | 禁止在每个过程体后加一个空行;除非用 -bap 标志关闭该标志,否则该标志处于活动状态。 |
| -bbb | 强制在每个块注释前加一个空行。 |
| -nbbb | 禁止在每个块注释前加一个空行;除非用 -bbb 标志关闭该标志,否则该标志处于活动状态。 |
| -bc | 强制在声明中的每个逗号后换行。 |
| -nbc | 禁止在声明中的每个逗号后换行;除非用 -bc 标志关闭该标志,否则该标志处于活动状态。 |
| -布尔 | 格式化复合语句、结构初始化、枚举初始化,如下: |
| -兄弟 | 格式化复合语句、结构初始化、枚举初始化,如下:除非用 -bl 标志关闭该标志,否则该标志处于活动状态。 |
| -cN | 将代码注释的初始制表符位置设为 n 变量。 缺省值是 33。 |
| -cdN | 将声明注释的初始制表符位置设为 n 变量。 缺省情况下,该标志使用 -c 标志定义的值。 |
| -cdb | 在空行中启用放置注释定界符;除非用 -ncdb 标志关闭该标志,否则该标志处于活动状态。 -cdb 标志仅仅影响块注释,不影响到代码右边的注释。 生成的注释类似于以下内容: |
| -ncdb | 在空行中禁用放置注释定界符。 -ncdb 标志仅仅影响块注释,不影响到代码右边的注释。 生成的注释类似于以下内容: |
| -切 | 启用强制 else 语句来紧跟前面的 }(右括号);除非用 -nce 标志关闭该标志,否则该标志处于活动状态。 |
| -nce | 禁用强制 else 语句来紧跟前面的 }(右括号)。 |
| -我N | 从语句的第一行开始处缩进连续行 n 个位置。 括号中的表达式内添加了额外的缩进以表明嵌套,除非 -lp 标志有效。 在缺省情况下,该标志使用 -i 标志定义的值。 |
| -cliN | 将条件标签向包含标志的语句右侧缩进 n 个位置。 输入 -cli0.5 使条件标签缩进跳格的一半。 这个选项是唯一接受小数参数的选项。 缺省情况下,该值为 -cli0。 |
| -dN | 用 n 变量控制不在代码右边的注释的放置。 指定 -d1 标志使这种注释看起来向代码左边缩进一级。 缺省情况下,该标志使用 -d0 同时注释和代码对齐。 相对于程序代码的注释行的位置影响注释缩进。 |
| -迪N | 用 n 变量,指定来自先前声明的关键字中的标识的缩进位置数。 缺省情况下,该标志使用 -di16。 |
| -dj | 左调整声明。 |
| -ndj | 缩进声明;除非用 -dj 标志关闭该标志,否则该标志处于活动状态。 |
| -伊 | 启用特别 else-if 处理;除非用 -nei 标志关闭该标志,否则该标志处于活动状态。 -ei 标志引起跟着 else 语句的 if 语句和前面的 if 语句有相同的缩进。 |
| -内伊 | 禁用特别 else-if 处理。 |
| -法 | 将分配运算符从旧式 C 代码翻转到 ANSI 格式。 该标志保持活动状态,除非用 -nfa 标志关闭该标志。注:如果代码用于 ANSI 编译器,那么可以更改代码的含义。 例如,A=-B成A-=B. 注:在运算符间不使用空格。 如果用户的意思是减,那么翻转是必须的;另一方面,如果用户的意思是 A 等于负 B,翻转则改变含义。 |
| -恩法 | 禁止翻转运算符。 如果代码是为 ANSI 编译器写的,用该标志。 |
| -fc1 | 可以格式化在列 1 中开始的注释;除非用 -nfc1 标志关闭该标志,否则该标志处于活动状态。 |
| -nfc1 | 不能格式化在列 1 中开始的注释。 |
| -一N | 设置缩进级别大小。 缺省情况下,级别大小是位置 8。 |
| -ip | 启用缩进参数声明;除非用 -nip 标志关闭该标志,否则该标志处于活动状态。 |
| -尼普 | 禁用缩进参数声明。 |
| 项 | 描述 |
|---|---|
| -我N | 设置代码右端注释的最大列的位置。 如果注释一行放不下,那么最多打印 25 个字符。 |
| -lcN | 将块注释最大行长度设为 n 变量。 缺省情况下,该标志使用由 -l 标志指定的长度。 |
| -lp | 在连续行中对齐由括号包围的代码;除非用 -nlp 标志关闭该标志,否则该标志处于活动状态。 如果在一行中有左括号而无右括号相匹配,续行在随着左括号的位置处开始。 在 -lp 标志有效时,这些行显示如下: 插入两行或更多换行产生以下结果: |
| -自然语言处理 | 使有括号包围的代码在连续行中不对齐。 在 -nlp 标志有效时,这些行显示如下: |
| -npro | 使概要文件 ./.indent.pro 和 $HOME/.indent.pro 被忽略。 |
| -件 | 在每个过程调用名称和跟着的 ((左括号)间插入一个空格。 |
| -非玩家角色 | 禁止在每个过程调用名称和跟着的 ((左括号)间插入一个空格;除非用 -pcs 标志关闭该标志,否则该标志处于活动状态。 |
| -ps | 在 -> 运算符后面的指针的两侧插入空格。 |
| -nps | 除非使用 -ps 标志关闭,否则禁止在 -> 运算符后面的指针两侧显示空格; 处于活动状态。 |
| -psl | 左对齐已定义过程名;除非用 -npsl 标志关闭该标志,否则该标志处于活动状态。 如果有过程类型,保留在前面的行里。 |
| -恩普斯尔 | 禁用已定义过程名左对齐。 |
| -sc | 使 *(星号)放置在注释的左边;除非用 -nsc 标志关闭该标志,否则该标志处于活动状态。 |
| -nsc | 禁止将 *(星号)放置在注释的左边。 |
| -斯布 | 将任何不在代码右边的单行注释视为一个块注释。 |
| 恩斯尔布 | 禁用将任何不在代码右边的单行注释视为一个块注释 ;除非用 -slb 标志关闭该标志,否则该标志处于活动状态。 |
| -索布 | 删除可选的空行。 和以下任何标志的合作工作:-nbad、-nbap、或 -nbbb。 仅删除那些用 -bad、-bap 或 -bbb 标志插入的空白行。 |
| 恩索布 | 保留可选的空白行;除非用 -sob 标志关闭该标志,否则该标志处于活动状态。 |
| -圣 | 使 indent 命令从标准输入获得输入并输出到标准输出。 |
| -T类型 | 将 Type 变量添加到关键字类型列表。 名称可累积以便 -T 能被指定多次。 应当指定在程序中出现的由 typedef 语句定义的所有类型,以从 indent 命令产生最好的输出。 |
| 特罗夫 | 格式化 C 程序,以进行 troff 处理。 产生一个与由 vgrind 命令产生的列表相似的列表。 如果没有输出文件被指定,缺省是标准输出,而不是在适当的位置上格式化。 |
| -v | 打开详细方式,报告什么时候一行输入被分成两行或多行输出,并在完成后给出大小统计。 |
| -nv | 关闭详细方式;除非用 -v 标志关闭该标志,否则该标志处于活动状态。 |
示例
- 要格式化test.c使用 缩进 命令的缺省设置,并将输出放入newtest.c文件,输入:
indent test.c newtest.c - 要格式化test.c文件,以便在每个声明块和过程主体后强制使用空白行,使用所有其他缺省设置,并将输出存储在newtest.c文件,输入:
indent test.c newtest.c -bad -bap - 要格式化test.c并使用 缩进 命令的缺省设置来定义文件uint作为 缩进 命令可识别的类型关键字,请输入:
indent test.c newtest.c -Tuint
文件
| 项 | 描述 |
|---|---|
| ./.indent.pro | 包含概要文件。 |
| $HOME/.indent.pro | 包含概要文件。 |
| /usr/ccs/bin/indent | 包含 indent 命令。 |