【问题标题】:Why does my IRB prompt with ANSI color codes mess up page up/down behavior with copy/paste?为什么我的带有 ANSI 颜色代码的 IRB 提示会在复制/粘贴时弄乱翻页/翻页行为?
【发布时间】:2012-01-24 18:49:00
【问题描述】:

我已添加到我的 .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"

然后提示会以漂亮的颜色显示,但如果我将一些文本复制到我的复制缓冲区并粘贴它,如果我执行 page-up/page-down 以转到当前输入文本的开头/结尾,我的光标就像跳到文本中间向上翻页,向下翻页跳到右边的空白区域,没有输入任何内容,然后我的光标位置完全搞砸了。

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

【问题讨论】:

  • 您使用的是哪种终端设置?例如终端模拟器和外壳?

标签: ruby irb


【解决方案1】:

我愿意打赌这与我在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"

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

【讨论】:

  • 只有设置颜色的控制码要被\001\002包围,而不是要彩色打印的文字。否则你在另一个方向有问题。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2017-08-28
    相关资源
    最近更新 更多