检测终端 Tabstop 设置

检测终端 Tabstop 设置

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

有没有一种规范的方法可以在类 Unix 终端上获取制表位设置?在 Windows 上?

答案1

tabs程序使用来自终端数据库的数据来告诉终端使用什么制表位。

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

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

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

相关内容