我有 256 种颜色在我的终端中运行良好(此处为测试脚本),但当我使用 ncurses(通过 Ruby-ncurses)时它停止运行。打印该页面上给出的转义序列可以正常工作,但是当我初始化 ncurses \'puts\' 时停止工作,并且我无法使用我发现的任何各种 ncurses 颜色更改/字符串输出函数输出颜色。什么给了?
我不确定这是否就是全部内容,但请确保您的终端功能确实提供了 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 的那个]
njsf:你部分地在这里,在修改了很多之后,我最终让它工作了。谢谢你的帮助。故事:XTerm(以及 rxvt 和 Eterm)通过转义序列(我所看到的)支持 256 种颜色,但 \'tput colors\' 会说 \'8\' 并且 ncurses 将无法获得它们,因为 ncurses 玩得很好,并试图通过 terminfo.
访问
为了任何有类似痛苦的人的利益:
我发现我需要安装 ncurses-term (Ubuntu) 软件包来获取 /lib/terminfo/x/xterm-256color 和其他 256 色 terminfo 文件。然后我将我的 TERM 设置为 xterm-256color 并将行 \'*customization: -color\' 添加到我的 ~/.Xdefaults 中,运行 \'xrdb -merge ~/.Xdefaults\' 来加载它,从那时起我在新的 xterms 中有适当的 256 色支持。
- 是的,来这里是为了建议正确设置您的终端。对于任何路过的读者来说,这也是一个花絮。例如,Mac OS X Terminal.app 仅支持 16 种颜色,因此您要么使用 iTerm,要么在 X11 上使用 XTerm,或者忘记它!
设置
ENV[\'TERM\'] = \'-256color\' if ENV[\'TERM\'] == \'xterm\' # 激活256色
适用于 ubuntu 10.04