Почему моя подсказка IRB с цветовыми кодами ANSI портит поведение страницы вверх / вниз при копировании / вставке? - PullRequest
8 голосов
/ 24 января 2012

Я добавил в свой .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, чтобы перейти к началу / концу текущего введенного текста, мой курсор будет выглядеть как для перехода на страницу вверх переходит на середину текста, а на страницу вниз - на область пробелов, где ничего не было напечатано, и моя позиция курсора полностью облажается.

Есть ли способ, как я могу это исправить? Я бы очень хотел раскрашенную подсказку.

Ответы [ 2 ]

3 голосов
/ 23 марта 2012

Я бы поспорил, что это похоже на вопрос, который я задал в Цветное изображение прерывает линейное обтекание с помощью readline

Попробуйте это:

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

В основномваше приглашение не игнорирует непечатные символы, что вызывает странные вещи.

0 голосов
/ 13 ноября 2014

Да, только код цвета должен быть в \ 001 и \ 002, как это

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