ruby – 为什么我的IRB提示使用ANSI颜色代码会破坏页面向上/向下的复制/粘贴行为?

我加入了我的.irbrc:
IRB.conf[:PROMPT].reverse_merge!(:RAILS_ENV => {:PROMPT_I=>"#{current_app} #{rails_env} #{prompt} ",:PROMPT_N=>"#{current_app} #{rails_env} #{prompt} ",:PROMPT_S=>nil,:PROMPT_C=>"?> ",:RETURN=>"=> %s\n"}) 
IRB.conf[:PROMPT_MODE] = :RAILS_ENV

如果我这样做:

current_app = "\e[31mfoo_bar_app\e[0m"
rails_env = "\e[32m#{RAILS_ENV}\e[0m"

然后提示显示漂亮的颜色,但如果我将一些文本复制到我的copybuffer并粘贴它,如果我进行页面向上/向下翻页以转到当前输入的文本的开头/结尾,我的光标就像跳转到在页面向上的文本中间,对于向下翻页,它向右跳到一个没有输入任何内容的空白区域,然后我的光标位置完全搞砸了.

有没有办法可以纠正这个?我真的很喜欢彩色提示.

解决方法

我愿意打赌这与我在 Colorized output breaks linewrapping with readline中提出的问题类似

试试这个:

current_app = "\001\e[31mfoo_bar_app\e[0m\002"
rails_env = "\001\e[32m#{RAILS_ENV}\e[0m\002"

基本上,您的提示不会忽略非打印字符,这会导致奇怪的事情发生.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...