是否可以使用 terminfo 同时更改前景色和背景色?
Is it possible to change the foreground and background colour at the same time with terminfo?
我正在编写一个需要输出样式文本的控制台程序。现在我正在为前景色和背景色、粗体和下划线使用固定的 ANSI 转义码。例如,我可以写 3[35m
将前景颜色更改为紫色。
自己写代码的好处是我可以把它们链接起来。我可以用一个命令更改背景颜色 和 前景色,这样可以节省宝贵的字节数:
3[48;5;200;38;5;100m
我想切换到使用 terminfo 库以使我的程序在其他类型的终端上运行。但是,我找不到一次更新多种颜色的方法 - 我想设置粗体和下划线 和 只有一种 3
和一种 [=13] 的颜色=].
标准中列出了以下命令,但其中 none 不仅看起来符合我的要求,我实际上找不到第一组和第二组视频属性的实际含义:
- set_a_attributes:定义第二组视频属性#1-#6
- set_a_background: 使用 ANSI 转义将背景颜色设置为 #1
- set_a_foreground: 使用 ANSI 转义将前景色设置为 #1
- set_attributes:定义第一组视频属性#1-#9
有没有办法只使用 terminfo
命令来获得我想要的东西?提前致谢。
否 - terminfo 不会这样做:
- 它列出了可能在许多不同终端上提供的功能
- 标准功能已定义……不久前。当然,termcap 也是如此。
- 颜色和其他属性(现在最常见的终端)是您可能认为可以任意组合的东西,但那是相当新的东西——没有保证
- 所以能力都是小块的(更新前景色,更新背景色)。
- 唯一的例外是
sgr
,一次最多可以设置9个视频属性。 None 其中有颜色。
如果您碰巧在使用 ncurses,您可以可以定义自己的功能,使用 tic -x
, and use your own interpretation for those (see for example ncurses user-definable capabilities in the terminal database). As long as their syntax matches the other terminfo strings, you could then use tparm
来填充数字(比 [=13= 好一点) ]).
我正在编写一个需要输出样式文本的控制台程序。现在我正在为前景色和背景色、粗体和下划线使用固定的 ANSI 转义码。例如,我可以写 3[35m
将前景颜色更改为紫色。
自己写代码的好处是我可以把它们链接起来。我可以用一个命令更改背景颜色 和 前景色,这样可以节省宝贵的字节数:
3[48;5;200;38;5;100m
我想切换到使用 terminfo 库以使我的程序在其他类型的终端上运行。但是,我找不到一次更新多种颜色的方法 - 我想设置粗体和下划线 和 只有一种 3
和一种 [=13] 的颜色=].
标准中列出了以下命令,但其中 none 不仅看起来符合我的要求,我实际上找不到第一组和第二组视频属性的实际含义:
- set_a_attributes:定义第二组视频属性#1-#6
- set_a_background: 使用 ANSI 转义将背景颜色设置为 #1
- set_a_foreground: 使用 ANSI 转义将前景色设置为 #1
- set_attributes:定义第一组视频属性#1-#9
有没有办法只使用 terminfo
命令来获得我想要的东西?提前致谢。
否 - terminfo 不会这样做:
- 它列出了可能在许多不同终端上提供的功能
- 标准功能已定义……不久前。当然,termcap 也是如此。
- 颜色和其他属性(现在最常见的终端)是您可能认为可以任意组合的东西,但那是相当新的东西——没有保证
- 所以能力都是小块的(更新前景色,更新背景色)。
- 唯一的例外是
sgr
,一次最多可以设置9个视频属性。 None 其中有颜色。
如果您碰巧在使用 ncurses,您可以可以定义自己的功能,使用 tic -x
, and use your own interpretation for those (see for example ncurses user-definable capabilities in the terminal database). As long as their syntax matches the other terminfo strings, you could then use tparm
来填充数字(比 [=13= 好一点) ]).