我正在尝试使用 tput 以独立于设备的方式在我的终端中设置前景色和背景色。
如果termcap/terminfo/tput的全部目的是变得独立于设备,为什么有两个版本明确使用ANSI控件(setaf/setab)和不(不应该)的版本?
本讨论引用了terminfo(5),而terminfo(5)又引用了明确表示分别使用ANSI而不是ANSI实现的标准。
为什么没有 setf/setb 并且他们总是设置前景色和背景颜色。我不在乎它是如何完成的,这就是我使用 tput 的原因!
为什么没有 setf/setb 并且他们总是设置前景色和背景色其实是两个问题!
第一部分,为什么有ANSI和非ANSI终端命令需要很长时间才能完成,这是不必要的,因为历史在维基百科上得到了很好的解释。
第二部分也许可以自由地改写为"有什么区别?"或"我能做些什么?"。
差异:与非 ANSI 终端相比,ANSI 类型终端在颜色编号和颜色之间使用另一种映射。例如,一个上的黄色代码在另一个上是青色的。只有两个不同的映射表。这些事情在维基百科上描述得很好。
你可以做些什么:发现您拥有的终端类型,并使用相应的命令。或者修改您的术语上限。不幸的是,这些解决方案都不是完全通用的。