检测终端 Tabstop 设置

Bro*_*ieG 3 terminal tabs

我正在编写一个小程序,需要将文本换行以在终端屏幕上生成多列输出。这相当简单,除了必须考虑硬制表符,如果不知道制表位设置是什么,我就无法做到这一点。有没有办法查询制表位设置?在 OSX 上,该tabs命令似乎设置了选项卡,但似乎没有报告它们。我可能会解析infocmpit值的输出,但这似乎只是默认的制表符宽度,它可能会或可能不会与全套制表位对齐。

是否有在类 Unix 终端上拉制表位设置的规范方法?在 Windows 上?

Tho*_*key 6

tabs程序使用终端数据库中的数据来告诉终端要使用哪些制表位。

计算机不知道制表位:使用stty您可以将终端驱动程序设置为使用硬制表位或软制表位(通常每个制表位扩展 8 列)。无论您设置硬/软选项卡,系统上的大多数应用程序都将假定为 8。

终端数据库并没有提供一种标准方法来确定什么样的制表位设置到。对于 xterm 等中广泛使用的 VT100 仿真,可以通过使用光标位置报告来确定此信息。有人可以编写一个写制表符的应用程序,使用光标报告来查看光标的结束位置,并计算制表位。(resize程序使用光标位置报告来确定屏幕大小)。

ncurses 的终端数据库提供了u6尝试描述光标位置报告的功能,但实际上仅支持 VT100 样式的报告。