2012-01-24 10 views
8

ho aggiunto alla mia .irbrc:Perché il prompt IRB con i codici colore ANSI altera il comportamento della pagina su/giù con copia/incolla?

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 

Se faccio qualcosa di simile:

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

poi il prompt si presenta splendidamente colorata, ma se mi copia del testo nella mia copybuffer e incollarlo, se faccio page-up/page-down per andare all'inizio/fine del testo corrente inserito, il mio cursore come salta al centro del testo per la pagina in alto, e per page-down salta verso destra in un'area di spazi vuoti dove nulla è stato digitato, quindi la mia posizione del cursore è completamente rovinata.

C'è un modo per correggerlo? Mi piacerebbe molto un prompt colorized.

+1

quale terminale-setup stai usando? per esempio. emulatore di terminale e shell? – robustus

risposta

3

Sarei pronto a scommettere questo è simile alla domanda che ho fatto a Colorized output breaks linewrapping with readline

Prova questo:

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

In sostanza, il prompt non sta ignorando i caratteri non stampabili che fa sì che le cose strane accadere.

+0

Solo i codici di controllo che impostano il colore devono essere circondati da '\ 001' e' \ 002', non il testo che deve essere stampato a colori. Altrimenti hai un problema nella direzione opposta. – qqx

0

Sì, solo il codice di colore devono essere in \ 001 e \ 002 come questo

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