Poznámka: Ještě jsem nenašel hlavní příčinu, proč je to někdy nutné, ale tohle by to mělo vyřešit za vás.
V readline/libedit (?), 0x01 a 0x02, jsou dva znaky označující začátek/zastavení netisknutelných znaků.
Takže pokud je přidáte před a za netisknutelné sekvence ve vašem PROMPT1, mělo by to fungovat. Výsledek ve vašem případě by byl:
\set PROMPT1 '%001%[%033[1;33;40m%]%002%[email protected]%/%R%001%[%033[0m%]%002%# '
Aktualizace: Zdá se, že by se to mělo řešit v psql, někde se musí nějak ztratit. Možná USE_READLINE
není definováno? Viz:Řádek 286 v src/bin/psql/prompt.c