명령 줄에서 CTRL+ 를 통해 역 이력을 검색 r할 때 명령을 편집하려는 경우 화살표 키를 누르거나 CTRL+ a또는 CTRL+를 입력하면 커서가 잘못된 위치로 이동하는 경우가 있습니다. e. 그것이 점프하는 특정 위치는에 설정된 내 명령 줄 프롬프트의 크기와 동일한 오프셋 인 것처럼 보입니다 PS1
.
커서의 실제 위치가 화면에 렌더링되는 위치와 다르기 때문에 문제가 발생합니다. 이후의 명령 편집 내용은 커서가 커서로 이동 한 것처럼 렌더링되지만 실제 명령은 점프없이 올바른 위치를 유지합니다.
이 문제의 원인 또는 해결 방법을 아는 사람이 있습니까?
편집 : PS1
문제 의 끝에 줄 바꿈을 추가하면 사라지는 것 같습니다. 그러나 프롬프트와 같은 줄에 명령을 입력하는 것이 좋습니다.
답변
이것은 종종 히스토리에서 한 줄보다 긴 명령으로 인해 발생합니다. 히스토리에서 더 짧은 항목을 선택하면 명령 행을 다시 렌더링 할 때 프롬프트 너비를 고려하지 않는 것이므로 해당 긴 명령 이후의 모든 항목은 문제가됩니다.
내가 찾은 쉬운 해결책은 홈 키를 누르고 “echo”를 삽입하고 Enter 키를 누르는 것입니다. 그런 다음 마지막 명령을 불러와 거기서 편집하십시오. (먼저 에코를 제거하십시오. 🙂
답변
PS1에서 \ [및 \]로 묶지 않은 비 인쇄 이스케이프 시퀀스가있을 수 있습니다.
다음과 같이 모든 것을 동봉했는지 확인하십시오.
\[\e[33m\]\w\[\e[31m\] $ \[\e[0m\]