注: これが必要になることがある理由の根本的な原因はまだわかりませんが、これで解決するはずです。
readline / libedit(?)の印刷不可能な文字の開始/停止を示す2つの文字、0x01と0x02があります。
したがって、PROMPT1の印刷不可能なシーケンスの前後にこれらを追加すると、機能するはずです。あなたの場合の結果は次のようになります:
\set PROMPT1 '%001%[%033[1;33;40m%]%002%[email protected]%/%R%001%[%033[0m%]%002%# '
更新: しかし、これはpsqlで処理する必要があるように思われますが、どこかで何らかの方法で迷子になっている必要があります。たぶんUSE_READLINE
定義されていませんか?参照:行286 src / bin / psql /prompt.c
にあります