我的终端中有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色,这不是"全部设置".Curses程序依赖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'来加载它,然后从那时起我有适当的256色支持新的xterms.