8

我有 256 种颜色在我的终端(这里的测试脚本)中工作得很好,但是当我使用 ncurses(通过 Ruby-ncurses)时它停止工作。打印该页面上给出的转义序列可以正常工作,但是当我初始化 ncurses 'puts' 时停止工作,并且我无法使用我发现的任何各种 ncurses 颜色更改/字符串输出函数输出颜色。是什么赋予了?

4

3 回答 3

7

我不确定这是否就是全部内容,但请确保您的终端功能确实提供了 256 色描述。

TERM 环境变量值是什么?尝试将其设置为 xterm-256color 并重新运行它。然后 ncurses 应该得到正确的颜色转义序列。

您还可以使用我们在 SXEmacs 开发中使用的程序测试终端功能和终端颜色输出:

http://www.triatlantico.org/tmp/tty-colors.c

使用 gcc -o tty-colors tty-colors.c -lncurses 编译

编辑:请注意,仅仅因为在网上找到的脚本输出 256 种颜色,这并不是“全部设置”。诅咒程序依靠 terminfo 和 termcap 以及 TERM 环境变量来找出如何与终端交互。因此,为了让 curses 应用程序能够使用 256 色,应该将 TERM 变量设置为支持 256 色的现有终端名称。上面的 C 程序将向您展示ncurses 对您的终端的看法,而不仅仅是像大多数脚本一样输出 xterm 序列 [甚至来自 X.org 的那个]

于 2008-10-05T04:42:22.843 回答
5

njsf:你部分地在这里,经过更多的修补后,我最终让它工作了。谢谢你的帮助。故事:XTerm(以及 rxvt 和 Eterm)通过转义序列(我所看到的)支持 256 种颜色,但 'tput colours' 会说 '8' 并且 ncurses 无法获取它们,因为 ncurses 玩得很好并尝试通过 terminfo 访问。

为了任何有类似疼痛的人的利益:

我发现我需要安装 ncurses-term (Ubuntu) 包来获取 /lib/terminfo/x/xterm-256color 和其他 256 色 terminfo 文件。然后我将我的 TERM 设置为 xterm-256color 并将行“*customization:-color”添加到我的 ~/.Xdefaults 中,运行“xrdb -merge ~/.Xdefaults”来加载它,从那时起我就有了正确的 256 色支持新的 xterms。

于 2008-10-05T22:18:14.617 回答
2

环境

ENV['TERM'] += '-256color' if ENV['TERM'] == 'xterm' # 激活 256 种颜色

适用于 ubuntu 10.04 +

于 2011-09-14T19:55:40.367 回答