bash 또는 zsh에서 긴 명령을 입력할 때(내가 본 적이 있는 유일한 두 개의 쉘입니다) 커서가 입력하는 문자열의 중간 어딘가로 이동하는 경우가 많습니다. 이것이 왜 그런지 설명할 수 있는 사람이 있습니까? 그리고 이것에 대해 뭔가 조치를 취할 수 있다면?
나는 쉘의 기록을 탐색할 때(화살표 키를 사용하여) 이런 일이 자주 발생한다는 것을 알았습니다. 긴 항목을 발견하면 길고 새로운 항목이 이전 항목과 뒤섞여 텍스트가 깨져 렌더링됩니다.
방금 알아차린 짧은 문자열의 예가 있습니다.
기록에는 다음이 포함됩니다.
mkdir sune1
mkdir sune2
로 이동한 mkdir sune1
다음 으로 이동하면 mkdir sune2
명령줄이 다음과 같을 것으로 예상합니다 mkdir sune2
(지금 탐색한 항목이므로). 그러나 대신 을 얻습니다 mkdir1sune2
.
나는 수년 동안 이것을 자주 알아차렸지만 결코 그것이 나를 너무 괴롭히도록 두지 않았습니다. 그러나 이제는 변화가 필요한 때라고 생각합니다! 그럼, 어떤 아이디어라도 있나요?
답변1
프롬프트 문자열이 인쇄할 수 없는 문자를 잘못 이스케이프했을 수 있습니다. 프롬프트에 색상 변경과 같은 것이 있는 경우 터미널 이스케이프 시퀀스를 배치하여 bash가 화면에서 공간을 차지하지 않는다는 것을 알 수 있도록 해야 합니다 \[
. \]
그렇지 않으면 실제 명령이 화면의 위치를 잘못 계산하여 업데이트합니다. 잘못된 장소에. 보다TLDP의 이 섹션. zsh에서는 이스케이프 시퀀스를 삽입 %{
하고 %}
둘러쌉니다.