我正在尝试使用tput以独立于设备的方式在终端中设置前景色和背景色。
如果termcap / terminfo / tput的整个目的是与设备无关,为什么两个版本都明确使用ANSI控件(setaf / setab)和那些不应该(不应该)的版本?
This discussion引用terminfo(5),它反过来引用明确表示那些将分别用ANSI而不是ANSI实现的标准。
为什么不存在setf / setb,它们总是设置前景色和背景色。我不在乎它是怎么做的,这就是我使用tput的原因!
答案 0 :(得分:1)
为什么没有setf / setb,他们总是设置前景色和背景色 实际上是两个问题!
第一部分,为什么有ANSI和非ANSI终端命令需要太长时间才能实现,并且由于维基百科上的历史记录得到了很好的解释,因此它是不必要的。
第二部分或许可以自由地改写为"差异是什么?"或者"我能做些什么呢?"。
<强>差:强> ANSI类型终端使用颜色编号和颜色之间的另一个映射,而不是非ANSI终端。例如,一个黄色的代码在另一个上是青色的。只有两个不同的映射表。这些内容在维基百科上有很好的描述。
你能做些什么: 了解您拥有的终端类型,并使用相应的命令。 或者修改你的termcap。 不幸的是,这些解决方案都不是完全通用的。