ruby 诅咒 : how to get pure white

标签 ruby console-application curses

我很难尝试获得带有 ruby 和诅咒的纯白色(背景)和黑色(前景)文本。

用这段代码

Curses.init_pair(1,COLOR_BLACK,COLOR_WHITE) 
Curses.attron(Curses.color_pair(1))
Curses.stdscr.addstr str
Curses.attroff(Curses.color_pair(1))

我在浅灰色的背景上看到了黑色的文字(底部的三行 截图)

我做错了什么?我尝试从 iterm2 切换到 mac 终端 还是一样。

screenshot

最佳答案

大多数实现“ANSI 颜色”的终端在被告知呈现粗体 时使用更强烈的前景 颜色。但是背景没有相应的解决方法。

但是,其中大多数还实现了 SGR 39 和 SGR 49,它们将前景和背景重置为其“默认”颜色。使用它会得到你原来的终端背景(这可能是你想要的)。这是 ncurses 的一项功能,称为 use_default_colors ,我看到的是 available in ruby .

使用该功能,您的示例将

  • 调用 Curses.use_default_colors 方法,
  • 不必费心(例如)创建颜色对,因为默认颜色对 0 会使用终端的默认颜色进行绘制。
  • 其他颜色对(1 到最大对数)会像普通诅咒一样工作。

给出的示例使用颜色对 1。如果您使用的是默认颜色扩展,则可以使用 use_default_colors 方法初始化 Curses。然后,使用默认颜色对 0,您会在大多数终端上看到原始终端颜色。无论 Ruby 包名为“curses”还是“ncurses”,此方法均来自底层 ncurses 库。

颜色对 0 是特殊的(参见 manpage )。您的应用程序无法将其设置为特定颜色。作为扩展,ncurses 提供了一种以有用的方式改变它的方法。

关于 ruby 诅咒 : how to get pure white,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33323516/

相关文章:

java - 没有容器的jpa

Python 诅咒程序。 ^ 是什么字符?

ruby - 将我的 Rails 3.2.12 项目切换到 Ruby 2.0.0 测试失败

java - 运行外部应用程序直到关闭

ruby Hash 包括另一个哈希,深度检查

c# - 我怎么写 Console.Writeline ("\|\/\|/");并忽略 "Unrecognized escape sequence"错误?

调用curses包装器后Python打印困惑

c - mvaddch 不会覆盖屏幕上的字符

ruby-on-rails - 在 rails 4 中验证 attr_accessor 的标签

ruby-on-rails - 在 ruby​​ on rails 中将 collection_action 方法添加到事件管理中的顶部菜单项