Obs! Jag har ännu inte hittat grundorsaken till varför detta är nödvändigt ibland, men detta borde lösa det åt dig.
Det finns två tecken för att indikera start/stopp av icke-utskrivbara tecken i readline/libedit (?), 0x01 och 0x02.
Så om du lägger till dessa före och efter de icke-utskrivbara sekvenserna i din PROMPT1, borde det fungera. Resultatet i ditt fall skulle bli:
\set PROMPT1 '%001%[%033[1;33;40m%]%002%[email protected]%/%R%001%[%033[0m%]%002%# '
Uppdatering: Det verkar dock som att detta borde hanteras i psql, någonstans måste de gå vilse på något sätt. Kanske USE_READLINE
är inte definierad? Se:Linje 286 i src/bin/psql/prompt.c