为啥 tput 中同时存在 setf/setb 和 setaf/setab?
Posted
技术标签:
【中文标题】为啥 tput 中同时存在 setf/setb 和 setaf/setab?【英文标题】:Why is there both setf/setb and setaf/setab in tput?为什么 tput 中同时存在 setf/setb 和 setaf/setab? 【发布时间】:2013-09-24 11:13:37 【问题描述】:我正在尝试使用 tput 以独立于设备的方式在我的终端中设置前景色和背景色。
如果 termcap/terminfo/tput 的全部目的是独立于设备,为什么会有明确使用 ANSI 控件的版本(setaf/setab)和不使用(不应该)的版本?
This discussion 引用 terminfo(5),后者又引用了明确表示将分别使用 ANSI 而不是 ANSI 实现的标准。
为什么不只是 setf/setb 并且它们总是设置前景色和背景色。我不在乎它是如何完成的,这就是我使用 tput 的原因!
【问题讨论】:
这个问题的 unix.SE 版本有更好的答案,What is the difference between tput's 'setf' and 'setaf'?。简而言之,setf
是旧的,setaf
(A 代表 ANSI)是新的。只有setaf
支持256色模式。
【参考方案1】:
为什么不只是 setf/setb 而他们总是设置前景色和背景色 实际上是两个问题!
第一部分,为什么有 ANSI 和非 ANSI 终端命令需要很长时间来解释,而且它是不必要的,因为历史在 Wikipedia 上有很好的解释。
第二部分也许可以随意改写为“有什么区别?”或“我该怎么办?”。
区别: 与非 ANSI 终端相比,ANSI 类型终端使用另一种颜色编号和颜色之间的映射。例如,一个上的黄色代码将是另一个上的青色。只有两个不同的映射表。这些东西在 Wikipedia 上都有很好的描述。
你能做些什么: 发现您拥有哪种类型的终端,并使用相应的命令。 或修改您的 termcap。 不幸的是,这些解决方案都不是完全通用的。
【讨论】:
以上是关于为啥 tput 中同时存在 setf/setb 和 setaf/setab?的主要内容,如果未能解决你的问题,请参考以下文章
SHELL脚本中 tput 的使用技巧 (tput 控制光标位置)
tput:Sublime Text3中没有指定$ TERM和no -T的值