彩色输出打破了 readline 的换行

2023-11-21

我正在使用 Ruby 中的 readline 对一些输出进行着色,但我没有运气让换行正常工作。例如:

"\e[01;32mThis prompt is green and bold\e[00m > "

期望的结果是:

This prompt is green and bold > aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

我实际得到的是:

aaaaaaaaaaa is green and bold > aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

如果我删除颜色代码,换行工作正常。我知道在 bash 中,如果颜色代码被错误终止,就会发生这种情况,但我已经尝试了我能想到的一切,包括一些不同的 gem,并且行为是相同的。它也会发生在具有不同 Readline 版本的多个系统上。这个特定的项目正在使用rb-readline与 C 相反readline.


好吧,sunkencity 得到了复选标记,因为我最终使用了他的大部分解决方案,但我必须对其进行如下修改:

# encoding: utf-8
class String
    def console_red;          colorize(self, "\001\e[1m\e[31m\002");  end
    def console_dark_red;     colorize(self, "\001\e[31m\002");       end
    def console_green;        colorize(self, "\001\e[1m\e[32m\002");  end
    def console_dark_green;   colorize(self, "\001\e[32m\002");       end
    def console_yellow;       colorize(self, "\001\e[1m\e[33m\002");  end
    def console_dark_yellow;  colorize(self, "\001\e[33m\002");       end
    def console_blue;         colorize(self, "\001\e[1m\e[34m\002");  end
    def console_dark_blue;    colorize(self, "\001\e[34m\002");       end
    def console_purple;       colorize(self, "\001\e[1m\e[35m\002");  end

    def console_def;          colorize(self, "\001\e[1m\002");  end
    def console_bold;         colorize(self, "\001\e[1m\002");  end
    def console_blink;        colorize(self, "\001\e[5m\002");  end

    def colorize(text, color_code)  "#{color_code}#{text}\001\e[0m\002" end
end

每个序列都需要包含在 \001..\002 中,以便 Readline 知道忽略非打印字符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

彩色输出打破了 readline 的换行 的相关文章

  • 如何运行使用 Rails 模型的 Ruby 任务?

    我有一个带有一些基本模型的 Rails 应用程序 该网站显示从其他来源检索到的数据 因此 我需要编写一个 Ruby 脚本来在数据库中创建新实例 我知道我可以使用测试挂钩来做到这一点 但我不确定这在这里是否有意义 我不确定这个任务应该是什么样
  • 分别对用户和管理员进行身份验证

    class ApplicationController lt ActionController Base protect from forgery skip before filter authenticate user only gt w
  • Ruby 电子表格 gem,如何居中对齐数字

    我在用着http spreadsheet rubyforge org http spreadsheet rubyforge org生成电子表格 但我遇到了一些问题 我正在打开现有工作簿并向其中添加数据 我已经设法在某种程度上使数字格式正常工
  • Rails 返回 JSON 序列化属性 with_in Different_access

    我以前有 serialize params JSON 但这会返回 JSON 并将哈希键符号转换为字符串 我想使用符号引用哈希 这在使用哈希时最常见 我向它提供符号 Rails 返回字符串 为了避免这种情况 我创建了自己的 getter se
  • ActiveRecord oracle_enhanced 适配器无法加载 ruby​​-oci8 库

    rails g scaffold失败 但 oci 脚本和 irb 数据查询有效 无法弄清楚出了什么问题 rails g scaffold table field1 integer field2 string invoke active re
  • Ruby:如何计算相对于另一条路径的路径?

    假设我知道我开始的绝对路径和我试图到达的绝对路径 first first path second second path 现在我想弄清楚如何构建一条相对于第一个路径 例如 answer should be first path second
  • Ruby 代码到 JAR

    我希望能够将 ruby 程序编译为 java JAR 程序 我研究过 JRuby 看到了几个能够 eval ruby 代码的 Java 应用程序示例 但是是否有更优雅的解决方案允许简单地用 ruby 编写所有内容 然后将其直接编译为 JAR
  • 如何检查rails上传的文件类型?

    我如何查看即将到来的文件类型 例如 csv 或 xls 请给个代码 我得到文件是这样的 aut name uploaded io original filename File open Rails root join public uplo
  • 如何使用 watir 滚动网页

    我正在尝试滚动网页以查找并单击页面滚动时延迟加载的内容 我正在使用以下命令 require watir webdriver browser Watir new firefox browser send keys space 我在 Firef
  • 在新的 RHEL6 服务器上安装 ruby​​-filemagic gem 时遇到困难

    它似乎正在寻找 libmagic so 1 文件 我有那个文件 它位于 usr lib64 中 我没有以 root 用户身份运行此安装 我也在使用 rvm 和 Bundler 这是我的 bundle 命令的结果 当它到达 Gemfile 中
  • Ruby on Rails 最酷的功能是什么,为什么选择它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我问这个问题之前 我浏览了 SO 上 Ruby on Rails 的搜索结果 找不到太多 但以下 在此页面上找到 https stackove
  • 如何使用 Ruby 2.7.0 修复 Rails 的警告消息

    有没有人解决这个问题Ruby 2 7 0 I used rbenv并安装了 Ruby v2 7 0 然后使用创建了一个 Rails 项目Rails v6 0 2 1 目前 通过运行之一 rails s rails s u puma rail
  • Capybara 的 has_selector 有哪些选项?

    我在 RSpec 中遇到此错误 有没有任何文档have selector解释了选项哈希中的每个键以及它到底有什么作用 invalid keys content should be one of text visible between co
  • 从类内部调用属性访问器方法[重复]

    这个问题在这里已经有答案了 我正在尝试调用我的类属性编写器之一 但由于某种原因它永远不会被调用 下面是一些代码 可以使这一点更清楚 class Test attr reader test def test val puts Called t
  • Ruby 可选参数和多个参数

    我试图将方法的第一个参数设置为可选 后跟任意数量的参数 例如 def dothis value 0 args 我遇到的问题是 这似乎实际上不可能 当我打电话时dothis hey how are you good 我希望它将值设置为默认值
  • 什么是 - 获取的是一个目录 - 错误消息

    我收到这个奇怪的错误 Users gideon Documents ca ruby rubytactoe lib player rb 13 in gets Is a directory spec Errno EISDIR 玩家规格 rb r
  • 在 Mac OS X 10.6.8 中手动编译 Ruby 时,GEM 在哪里?

    我在 Snow Leopard 上手动构建了 Ruby 1 9 2 现在我找不到我的旧 GEM 文件了 我猜他们现在正走在不同的道路上 所以我有三个问题 什么是 旧 宝石路径 在哪里gem install sinatra把西纳特拉宝石 当我
  • 在 mac os Sierra 上,卡在“设置 CocoaPods 主存储库”上

    转移到 mac os sierra 后 我完全格式化了我的 mac 现在每次运行时我都面临安装 cocoapods 的问题sudo gem install cocoapods pre一切都安装得很好 当我尝试安装 Pod 时 终端堆栈打开S
  • 将 Rack::Deflater 插入机架中的哪个位置?

    我目前有以下内容 use Rack Rewrite use Rack Cache verbose gt true metastore gt memcached localhost 11211 rack cache meta entityst
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该

随机推荐

  • iText - 如何将页面添加到使用 PdfCopy 创建的文档中

    我正在使用 iText 特别是 iTextSharp 4 1 6 我想通过组合现有 PDF 中的页面并插入从图像创建的新页面来创建 PDF 我分别使用 PdfCopy 和 PdfWriter 使这两个部分分开工作 从图像创建页面的代码如下所
  • 在 Excel 中使用 VBA 自定义功能区

    我已经了解到 在 Excel 中创建自定义选项卡是不可能的this 帖子 与 MS Project 不同 具体来说 我可以将宏的路径更改为当前位置吗 编辑 看来这page可能会找到答案 但我仍然不知道如何 对情况的一些更详细的描述 用户将下
  • OpenMP 并行部分中的指针是私有的吗?

    我已将 OpenMP 添加到现有代码库中 以便并行化 for 循环 在范围内创建了几个变量parallel for区域 包括一个指针 pragma omp parallel for for int i 0 i lt n i Model lm
  • 如何将 Qualtrics 数据(csv 格式)导入到 R 中

    我正在尝试将从 Qualtrics 下载的数据导入到 R 中 它是一个 csv 文件 但是 我遇到了两个问题 R 无法自行计算出每一列的格式 可能是因为第 2 行和第 3 行 上面突出显示的 都是无用的文本 R 认为所有列都是charact
  • 显示手机上存储的图像

    我已经成功地在我的应用程序中拍照并将其存储在手机上 但如何显示它 我尝试了这种静态方法 但它不起作用 是的 图像就在那里
  • JQuery/Javascript 以及 && 运算符的使用

    我试图让一个简单的条件语句起作用 但遇到了问题 失败的代码 document ready function var wwidth window width if wwidth lt 321 alert I am 320 pixels wid
  • FCM/GCM 在 iOS 上按“标签”对通知进行分组

    因此 当向 Android 设备发送通知时 您可以指定标签属性 notification title title body message sound sound tag STRING TO GROUP NOTIFICATIONS BY 这
  • 如何使用 C#(.NET 3.5) 获取我的机器的处理器名称?

    我需要找到我的机器上处理器的名称和速度 我正在构建一个开源帮助台套件 发现这真的很有趣 感谢各位的帮助 正如其他人指出的 使用 WMI 通过添加对 System Management dll 的引用 然后调用以下代码来执行此操作 Manag
  • Node.js 实时游戏

    是否可以使用 Node js 创建一个需要抽搐反应的实时游戏 延迟有多高 它实际上能低到多低 可以像使用任何其他语言 框架一样在 Node js 中制作实时游戏 这里的问题是您将使用什么样的服务器和客户端 使用http服务器此类游戏的功能将
  • 'heapdump.xxx.phd'。不是 HPROF 堆转储 (java.io.IOException) 不是 HPROF 堆转储

    Eclipse Memory Analyzer 文档说它可以打开 IBM 便携式堆转储文件 phd http help eclipse org luna index jsp topic org eclipse mat ui help wel
  • SQLAlchemy 多对多孤儿删除

    我正在尝试使用 SQLAlchemy 实现基本的用户组模型 其中用户可以拥有多个组 组可以拥有多个用户 当一个组变空时 我希望删除该组 以及与该组关联的其他内容 幸运的是 SQLAlchemy 的级联可以很好地处理这些更简单的情况 问题是c
  • 使用谷歌地图 API v3 折线捕捉到道路

    在谷歌地图 API v2 中这很容易 var map new GMap2 document getElementById map map setCenter new GLatLng 53 7877 2 9832 13 map addCont
  • 使用流从现有列表创建不可变列表

    有一个列表Person对象 List
  • Ruby - LoadError enc/trans/single_byte

    我在 Ruby on Rails 应用程序中使用 ActiveRecord Store 模块时遇到了一个奇怪的问题 据我了解 该模块在底层使用 序列化 方法 因此它只是使用 ruby 内置的 psych gem 将数据序列化为 yaml 格
  • Android中如何检测触摸事件

    是否可以检测活动中的所有触摸事件并捕获它 然后将事件传递给另一个视图 例如 按钮 1 和按钮 2 当按下按钮 1 时 我想捕获该触摸 单击事件并自动将该触摸事件传递给按钮 2 基本上只需一次触摸 按下即可生成单击 并将相同的单击传递给自动第
  • 软件包“Tk”的版本冲突:有 8.5.2,需要 8.5.15

    我正在尝试编译一个程序 python2 7 但无论我做什么 我都会收到此错误 C Python27 tcl tk8 5 tk tcl version conflict for package Tk have 8 5 2 need exact
  • 如何从 @Html.EditForModel() 中排除字段,但使用 Html.DisplayForModel() 显示该字段

    我正在阅读 ASP NET MVC 及其所有有趣的用途 我刚刚发现数据模板 为了急于测试这个东西 我将一个更简单的模型转换为使用 Html DisplayForModel and Html EditForModel 它就像一个幸运符 它是
  • 以秒为单位的反应日期选择器时间选择

    我还需要从反应日期选择器中选择秒 我浏览过文档发现了这个 在此解决方案中 我可以从中选择小时 分钟 上午 下午 但没有秒选项 有什么方法可以自定义也从中选择秒 需要帮助 如下例 查找输入时间 我尝试过更改日期格式 dateFormat MM
  • 如何在 Swift 的 Xcode 6 的 Storyboard 中成功添加图像?

    我对 Xcode 非常陌生 2 天 到目前为止我发现它相当令人沮丧 我只是想通过 Storyboard 将图像添加到我的应用程序的 ViewController 但它不会出现在模拟器上 有人可以帮助我吗 如果您正在尝试 XCode 的示例项
  • 彩色输出打破了 readline 的换行

    我正在使用 Ruby 中的 readline 对一些输出进行着色 但我没有运气让换行正常工作 例如 e 01 32mThis prompt is green and bold e 00m gt 期望的结果是 This prompt is g