Lưu ý: Tôi vẫn chưa tìm ra nguyên nhân gốc rễ tại sao đôi khi điều này lại cần thiết, tuy nhiên, điều này sẽ giúp bạn khắc phục.
Có hai ký tự để chỉ ra điểm bắt đầu / dừng của các ký tự không in được trong readline / libedit (?), 0x01 và 0x02.
Vì vậy, nếu bạn thêm những thứ này trước và sau các chuỗi không in được trong PROMPT1 của bạn, nó sẽ hoạt động. Kết quả trong trường hợp của bạn sẽ là:
\set PROMPT1 '%001%[%033[1;33;40m%]%002%[email protected]%/%R%001%[%033[0m%]%002%# '
Cập nhật: Có vẻ như điều này sẽ được xử lý trong psql, mặc dù ở đâu đó họ phải bị mất một số cách làm thế nào. Có thể USE_READLINE
không được xác định? Hãy xem: Dòng 286 trong src / bin / psql / prompt.c