2012-01-24 5 views
8

he añadido a mi .irbrc:¿Por qué mi indicador IRB con los códigos de color ANSI desordena el comportamiento de subir/bajar página con copiar/pegar?

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 

Si hago algo como:

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

continuación, el indicador muestra maravillosamente coloreada, pero si copio un texto en mi CopyBuffer y pegarlo, si hago page-up/page-down para ir al principio/final del texto actual ingresado, mi cursor salta al medio del texto para página arriba, y para página abajo salta a la derecha en un área de espacios en blanco donde no se había tecleado nada, entonces la posición de mi cursor está totalmente arruinada.

¿Hay alguna manera de corregir esto? Realmente me gustaría un mensaje colorized.

+1

qué terminal-configuración se utiliza? p.ej. emulador de terminal y shell? – robustus

Respuesta

3

que estaría dispuesto a apostar que esto es similar a la pregunta que hice en Colorized output breaks linewrapping with readline

Prueba esto:

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

Básicamente, el indicador no es ignorar los caracteres no imprimibles que hace que las cosas extrañas suceder

+0

Solo los códigos de control que configuran el color deben estar rodeados por '\ 001' y' \ 002', no por el texto que se va a imprimir en color. De lo contrario, tienes un problema en la otra dirección. – qqx

0

Sí, sólo el código de color deben estar en \ 001 y \ 002 como esto

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