手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

vgrind(1)

名称

vgrind - 格式化易阅读的程序列表

用法概要

vgrind [-2fntwx] [-d defs-file] [-h header] [-l language] 
     [-s n] [-o pagelist] [-P printer] [-T output-device] filename...

描述

vgrind 实用程序使用 troff(1) 命令以易于阅读的风格格式化由 filename 参数指定的程序源。注释以斜体显示,关键字以粗体显示,遇到的每个函数的名称在页边空白中列出。

vgrind 以两种基本模式运行:过滤模式或常规模式。在过滤模式中,vgrind 以一种类似于 tbl(1) 命令的方式充当过滤器。标准输入直接被传递到标准输出,但用 troff 样式的宏括起来的行除外:

.vS

开始处理

.vE

结束处理

这些行按照以上所述进行格式化。可以将此过滤器的输出传递到 troff 进行输出。eqn(1)tbl(1) 无需特定的顺序。

在常规模式中,vgrind 接受输入的 filename,进行处理并将它们传递到 troff 以便输出。使用连字符 ('') 指定标准输入。否则,vgrind 将会退出,而不会尝试读取标准输入。文件名必须在所有其他选项参数后指定。

在常规模式中,如果指定了 –t–P 选项,则输出如下:

  • 在指定了 –t 选项的情况下,以 troff 格式发出到标准输出。

  • 在指定了 –P 选项的情况下,以 PostScript 格式输出到指定的打印机。

否则,输出如下:

  • 在定义了系统缺省打印机并且该命令的标准输出为 tty 的情况下,以 PostScript 格式输出到该打印机。

  • 在标准输出非 tty(即标准输出是到文件的管道或重定向)的情况下,以 PostScript 格式发出到标准输出。

在这两种模式中,vgrind 将传递以小数点开头的任意行,而不进行转换。

选项

支持以下选项:

–2

产生两列输出。指定该选项会将缺省的点尺寸更改为 8(就像提供了 –s8 选项一样)。此外,还会将输出调整为以横向模式显示。

–f

强制使用过滤模式。

–n

不将关键字设置为粗体。

–w

考虑使制表符相隔四列,而不是通常的八列。

–x

以一种易于阅读的格式输出索引文件。只要在运行 vgrind 时当前目录中存在一个称为 index 的文件,就会自动生成索引文件本身。然后,可以通过在 vgrind 中指定 –x 选项以及将 index 文件作为参数,从而关闭函数定义索引。

–d defs-file

指定备用的语言定义文件(缺省为 /usr/lib/vgrindefs)。

–h header

指定要显示在每个输出页的中间位置的页眉。使用引号指定嵌入了空格的页眉。

–l language

指定要使用的语言。当前已知的语言有:Bourne shell (–lsh)、C(–lc,缺省语言)、C++ (–lc++)、C shell (–lcsh)、emacs MLisp (–lml)、FORTRAN (–lf)、Icon (–lI)、ISP (–i)、LDL (–lLDL)、Model (–lm)、Pascal (–lp) 以及 RATFOR (–lr)。

–P printer

将输出发送到指定的 printer

–s n

指定要在输出上使用的点尺寸(与 troff .ps 点尺寸请求的参数完全相同)。

vgrind 将下列选项传递给由 TROFF 环境变量指定的格式化程序。请参见“环境变量”部分。

–t

troff 中的同一选项类似,即格式化文本输出到标准输出。

–o pagelist

只输出以逗号分隔的页号及页号范围 pagelist 中出现的页号对应的页面。例如,页号范围 N−M 表示页面 N 到页面 M;初始的 –N 表示起始页到页面 N;最后的 N− 表示从页面 N 到最后一页。

–T output-device

格式化指定的 output-device 的输出。

操作数

支持下列操作数:

filename

要由 vgrind 处理的程序源的名称。使用 '' 指定标准输入。

环境变量

在常规模式中,vgrind 会将其中间输出提供给 TROFF 环境变量的值指定的文本格式化程序,或提供给 /usr/bin/troff(如果环境中未定义该变量)。该机制允许 troff 名称出现局部变化。

文件

index

在其中创建了索引源的文件

/usr/lib/vgrindefs

语言描述

/usr/lib/vfontedpr

预处理程序

/usr/share/lib/tmac/tmac.vgrind

宏软件包

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
text/doctools

另请参见

csh(1)ctags(1)eqn(1)tbl(1)troff(1)attributes(5)vgrindefs(5)

已知问题

vgrind 假定遵循某种编程风格:

C

每行的函数名称前面只能添加空格、制表符或星号 (*)。括号中的参数还必须在同一行。

FORTRAN

函数名称需和关键字 functionsubroutine 显示在同一行。

MLisp

函数名称不应和前面的 defun 显示在同一行。

Model

函数名称需和关键字 is beginproc 显示在同一行。

Pascal

函数名称需和关键字 functionprocedure 显示在同一行。

如果不遵守以上约定,索引建立以及边际函数名称注释机制将会失败。

更普遍的情况是,任意选择程序格式化样式通常会导致未见过的结果。准备程序以进行 vgrind 输出时,请使用制表符(而非空格字符)将源代码正确对齐,因为 vgrind 使用可变宽度的字体。

此处应使用 ctags(1) 的函数识别机制。

–w 选项令人厌烦,但除此之外别无它法能达到所需效果。

tmac.vgrind 中定义的宏无法与其他宏软件包中的宏正常共存,这使得过滤模式很难有效利用。

vgrind 无法正确处理 csh(1) 脚本中的某些特殊字符。

tmac.vgrind 格式化宏不支持两列模式中使用的页面高度与宽度,这使得两列输出只对美国标准页面大小(8.5 英寸 x 11 英寸)有效,而对其他页面大小毫无用处。对于其他页面大小,需要编辑 tmac.vgrind 中给定的大小值。更好的解决方案就是,创建专门针对横向输出的 troff 输出设备规范并在其中记录大小信息。