CTRL+를 통해 명령줄에서 역사 역검색을 r수행할 때 명령을 편집하려는 경우 화살표 키를 누르거나 CTRL+ a또는 CTRL+를 입력하면 커서가 잘못된 위치로 이동하는 경우가 여러 번 발생했습니다. e. 점프하는 특정 위치는 에 설정된 명령줄 프롬프트 크기와 동일한 오프셋인 것 같습니다 PS1
.
커서의 실제 위치가 화면에 렌더링된 위치와 다르기 때문에 이로 인해 어려움이 발생합니다. 나중에 명령을 편집하면 커서가 점프한 위치에 있는 것처럼 렌더링되지만 실제 명령은 점프하지 않고도 올바른 위치를 유지합니다.
이 문제의 원인이나 해결 방법을 아는 사람이 있습니까?
편집: 끝에 줄 바꿈을 추가하면 PS1
문제가 사라지는 것 같습니다. 그러나 나는 프롬프트와 같은 줄에 명령을 입력하는 것을 선호합니다.
답변1
이는 기록에 있는 명령이 1줄보다 길 때 발생하는 경우가 많습니다. 기록에서 더 짧은 항목을 선택하면 명령줄을 다시 렌더링할 때 프롬프트의 너비를 고려하지 않는 것 같으므로 긴 명령 이후의 모든 항목이 엉망이 됩니다.
내가 찾은 쉬운 해결책은 홈 키를 누르고 "echo"를 입력한 후 Enter 키를 누르는 것입니다. 그런 다음 마지막 명령을 호출하고 거기에서 편집하십시오. (먼저 에코를 제거합니다. :)
이 문제의 가장 일반적인 원인을 해결하는 방법을 식별하는 아래 alexander-somov의 답변도 참조하세요.
답변2
PS1에 \[ 및 \]로 묶이지 않은 인쇄되지 않는 이스케이프 시퀀스가 있을 수 있습니다.
다음과 같이 모두 포함했는지 확인하십시오.
\[\e[33m\]\w\[\e[31m\] $ \[\e[0m\]