readline - 줄 끝에 도달할 때 줄 바꿈이 아닌 캐리지 리턴만 실행하는 이유는 무엇입니까?

readline - 줄 끝에 도달할 때 줄 바꿈이 아닌 캐리지 리턴만 실행하는 이유는 무엇입니까?

나는 다음을 사용하여 Python 응용 프로그램을 개발했습니다.지침대화형 명령줄 인터페이스를 만드는 모듈입니다. 이것지침모듈 목적독서선명령줄 관리: 완료, 기록...

내 문제는 내 컴퓨터에서 응용 프로그램을 사용하려고 하는데 너무 긴 줄을 입력하면 줄의 시작 부분으로 돌아가서 새 줄을 추가하지 않는다는 것입니다. 그래서 나는 그 줄 자체에 글을 썼다. 이로 인해 탐색 및 편집 기록 명령이 정말 어려워졌습니다. 그래도 내 개발 상자에서는 잘 작동합니다.

Python을 시작하는 쉘을 bash에서 sh로 변경하려고 시도했지만 차이가 없었습니다. 사용하는 터미널을 Terminator에서 XTerm 또는 UXTerm으로 변경해 보았지만 차이가 없었습니다.

그 기원에 대해 어떻게 추측하고 이 문제를 해결하는 방법은 무엇입니까?

편집하다: 이것은 스크린샷입니다. 오류 원인을 찾았는데, 터미널 줄 길이에 비해 색상 문자가 잘 처리되지 않아서 발생하는 것으로 추측됩니다.

스크린샷

스크린샷의 첫 번째 부분(녹색 선 위)에서는 색상이 있는 팁(분홍색 /을 볼 수 있음)을 사용하고 줄 끝에 도달하면 팁을 덮어쓰기 시작합니다. 계속해서 쓰면 원래 첫 줄을 완전히 덮어 전체 줄을 쓴 다음 새 줄을 입력하기 시작할 수 있습니다.

두 번째 부분(녹색 선 아래)에서는 줄 끝까지 썼는데 적절한 순간에 줄 바꿈이 나타납니다.

이 행동의 이유는 무엇입니까? (앞서 말했듯이 모든 구성에서 이런 현상이 발생하는 것은 아닙니다.) 어떻게 해결합니까?

답변1

이것은 나의 색상 사용에서 비롯됩니다. 다음 문자열을 사용하여 텍스트에 색상을 지정합니다.

class colors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'

\001및 문자를 추가했는데 \002이제 작동합니다!

class colors:
    HEADER = '\001\033[95m\002'
    OKBLUE = '\001\033[94m\002'
    OKGREEN = '\001\033[92m\002'
    WARNING = '\001\033[93m\002'
    FAIL = '\001\033[91m\002'
    ENDC = '\001\033[0m\002'

관련 솔루션 게시물:https://stackoverflow.com/questions/8806643/colorized-output-breaks-linewrapping-with-readline/8916332#8916332

관련 정보