2013-10-02 80 views
5

當我在提示中添加顏色時,在彈出歷史記錄時,出現提示後出現垃圾。psql提示中的顏色

我從postgres doc試圖擬議顏色提示命令:

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

我也嘗試了很多其他的提示例子,我發現與谷歌,但具有相同的結果。

所以設置提示我有一個黃色的提示這樣的事情後:

[email protected]=# 

我然後運行查詢:

[email protected]=# select * from country; 

然後,我透過歷史輕彈與。這將使我的選擇行的人多,而是我得到:

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

注意\set...select這是從最初的PROMT設定的遺蹟了。

我也得到類似的結果,如果我把\set PROMPT1 -command在.pslqrc

我得到兩個xterm和GNOME終端相同的結果。我有我的bash提示顏色類似的方式,但我沒有任何問題,提示。

我做錯了什麼?

回答

6

注意:我還沒有找到爲什麼有時需要這個的根本原因,但是,這應該爲你解決它。

有兩個字符表示readline/libedit(?),0x01和0x02中的非打印字符的開始/停止。

因此,如果您在PROMPT1中的非打印序列之前和之後添加它們,它應該可以工作。你的情況的結果將是:

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

更新: 這似乎本應在psql裏,雖然被處理,什麼地方必須迷路了一些如何。也許USE_READLINE沒有定義? 請參閱:Line 286 in src/bin/psql/prompt.c

+0

我已將Postgres安裝升級到版本9.3.5,並且問題似乎已得到修復;實際上,在'%001'和'%002%'中包裝顏色代碼似乎確實是@UlfR發佈的問題。但是,您的解決方案*確實可以在舊版本上運行。也許這只是我設置的一個特點。 – sevko