psql提示中的颜色

Ulf*_*lfR 8 postgresql command-prompt

当我在提示中添加颜色时浏览历史记录时,我在提示后收到垃圾.

我尝试了postgres doc中提出的颜色提示命令:

\set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%]%# '
Run Code Online (Sandbox Code Playgroud)

我也尝试了很多其他的提示示例,我发现谷歌,但结果相同.

所以在设置提示后我有一个黄色提示符如下:

ulf@mydb=#
Run Code Online (Sandbox Code Playgroud)

然后我运行查询:

ulf@mydb=# select * from country;
Run Code Online (Sandbox Code Playgroud)

然后我浏览历史.这会给我带来更多的选择线,但我得到:

ulf@mydb=# \set PROMPT1 'select * from country;
Run Code Online (Sandbox Code Playgroud)

注意\set...之前的select是最初的promt-setting中的残余.

如果我将\set PROMPT1-command 放入,我也会得到类似的结果.pslqrc

我在xterm和gnome-terminal中得到了相同的结果.我的bash-prompt以类似的方式着色,但我对该提示没有任何问题.

我做错了什么?

plu*_*dra 8

注意:我还没有找到有时为什么这是必要的根本原因,但是,这应该为你解决.

有两个字符表示readline/libedit(?),0x01和0x02中不可打印字符的开始/停止.

因此,如果您在PROMPT1中的非可打印序列之前和之后添加这些,它应该可以工作.您的案例结果将是:

\set PROMPT1 '%001%[%033[1;33;40m%]%002%n@%/%R%001%[%033[0m%]%002%# '
Run Code Online (Sandbox Code Playgroud)

更新: 这似乎应该在psql中处理,但在某些地方他们必须迷失方向.也许USE_READLINE没有定义?请参阅:src/bin/psql/prompt.c中的第286行