2013-10-02 14 views
5

Ricevo un cestino dopo il prompt quando faccio scorrere la cronologia quando aggiungo i colori al mio prompt.Colori nel prompt di psql

Ho provato il prompt dei comandi di colore proposto dalla postgres doc:

\set PROMPT1 '%[%033[1;33;40m%]%[email protected]%/%R%[%033[0m%]%# ' 

Ho anche provato un sacco di altri esempi di prompt che ho trovato con Google, ma con lo stesso risultato.

Così, dopo aver impostato il prompt ho una cosa pronta giallo come questo:

[email protected]=# 

ho quindi eseguire la query:

[email protected]=# select * from country; 

Poi ho sfogliare la storia con . Questo mi porterebbe quelli di selezione della riga di più, ma invece io ottenere:

[email protected]=# \set PROMPT1 'select * from country; 

Annotare il \set... prima della select che è un residuo dal promt-impostazione iniziale.

Inoltre ottengo risultato simile se metto il \set PROMPT1 -command in .pslqrc

ottengo lo stesso risultato in entrambi xterm e gnome-terminal. Ho il mio bash-prompt colorato in modo simile ma non ho problemi con quel prompt.

Cosa ho fatto di sbagliato?

risposta

6

Nota: Devo ancora trovare la causa principale del motivo per cui questo è necessario a volte, tuttavia, questo dovrebbe risolvere il problema per voi.

Ci sono due caratteri per indicare l'inizio/l'arresto di caratteri non stampabili in readline/libedit (?), 0x01 e 0x02.

Quindi, se si aggiungono queste prima e dopo le sequenze non stampabili in PROMPT1, dovrebbe funzionare. Il risultato nel tuo caso sarebbe:

\set PROMPT1 '%001%[%033[1;33;40m%]%002%[email protected]%/%R%001%[%033[0m%]%002%# ' 

Aggiornamento: Sembrerebbe questo deve essere maneggiato in psql, però, da qualche parte devono perdersi in qualche modo. Forse USE_READLINE non è definito? Vedere: Line 286 in src/bin/psql/prompt.c

+0

Ho aggiornato l'installazione di Postgres alla versione 9.3.5 e il problema sembra essere stato risolto; infatti, il wrapping dei codici colore in '% 001' e'% 002% 'ora sembra il problema esatto che @UlfR ha pubblicato. La tua soluzione * ha * funziona, tuttavia, su una versione precedente. Forse è solo una peculiarità del mio setup. – sevko