2012-01-24 12 views
8

tôi thêm vào .irbrc tôi:Tại sao lời nhắc IRB của tôi với mã màu ANSI lộn xộn trang lên/xuống hành vi với sao chép/dán?

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 

Nếu tôi làm điều gì đó như:

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

sau đó dấu nhắc xuất hiện đẹp colorized, nhưng nếu tôi sao chép một số văn bản vào copybuffer tôi và dán nó, nếu tôi làm trang-up/page-down để đi đến đầu/cuối của văn bản hiện tại được nhập, con trỏ của tôi giống như nhảy đến giữa văn bản để lật trang và cho trang xuống, nó nhảy sang bên phải vào một vùng trống mà không có gì được đánh máy, thì vị trí con trỏ của tôi hoàn toàn bị vặn lên.

Có cách nào tôi có thể sửa lỗi này không? Tôi thực sự muốn một dấu nhắc được tô màu.

+1

mà thiết bị đầu cuối-thiết lập bạn đang sử dụng? ví dụ. thiết bị đầu cuối giả lập và vỏ? – robustus

Trả lời

3

Tôi muốn được sẵn sàng đặt cược này cũng tương tự như câu hỏi tôi hỏi trong Colorized output breaks linewrapping with readline

Hãy thử điều này:

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

Về cơ bản, nhắc nhở của bạn không được bỏ qua các ký tự không in gây ra những điều kỳ lạ xảy ra.

+0

Chỉ các mã điều khiển đặt màu phải được bao quanh bởi '\ 001' và' \ 002', không phải văn bản sẽ được in màu. Nếu không, bạn có một vấn đề theo một hướng khác. – qqx

0

Vâng, chỉ mã màu cần phải được trong \ 001 và \ 002 như thế này

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