Ruby 为什么我的带有ANSI颜色代码的IRB提示会将页面的上下行为与复制/粘贴弄乱?

Ruby 为什么我的带有ANSI颜色代码的IRB提示会将页面的上下行为与复制/粘贴弄乱?,ruby,irb,Ruby,Irb,我在我的.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"})

我在我的.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并粘贴它,如果我执行page up/page down以转到当前输入文本的开头/结尾,我的光标会跳到文本的中间进行page up,在“向下翻页”中,它会跳出到右边的空白区域,那里没有输入任何内容,然后我的光标位置就完全乱了


有什么方法可以纠正这个问题吗?我真的想要一个彩色的提示。

我敢打赌这与我在中问的问题类似

试试这个:

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

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

是的,只有颜色代码需要像这样出现在\001和\002中

\001\e[37m\002[%~] #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} - r#{release}\001\e[0m\002production

您使用的是哪种终端设置?e、 g.终端仿真器和外壳?只有设置颜色的控制代码应该用
\001
\002
包围,而不是要用颜色打印的文本。否则,你会遇到另一个方向的问题。