zsh의 탭 완성으로 인해 문자가 중복됩니다.

zsh의 탭 완성으로 인해 문자가 중복됩니다.

상대적으로 새로운 아치 설치에서 ohmyzsh를 사용하여 zsh에서 탭 완성을 사용할 때 처음 두 문자는 스스로 복제되어 삭제할 수 없게 됩니다.

예를 들어 를 입력한 yay -S terminato다음 탭을 누르면 종결자가 자동 ​​완성됩니다. 그렇죠? 잘 작동하고 평소처럼 결과를 탭할 수 있지만 줄의 시작 부분은 다음 yay -S term...과 같습니다.yayay -S term...

오류를 수정하기 위해 백스페이스를 눌렀을 때 를 지나서 삭제할 수 없다는 것을 알았고 맨 처음에는 제거할 수 없는 가 yay남아 있었습니다 .ya

이는 한 줄에만 적용되며 실제로는 아무 영향도 미치지 않습니다. 속하지 않는 두 문자가 있어도 명령은 계속 제대로 실행됩니다.

다른 에뮬레이터를 사용해 보았지만 기본 tty에서도 문제가 지속됩니다.

Enter 키를 누르거나 ctrl c를 눌러 다음 줄로 이동하면 새 줄이 재설정되지만 이전 줄은 매달린 문자와 함께 남아 있습니다.

분명히 말하면 이것은 단지 예뿐 아니라 탭 완성 기능이 있는 모든 명령에서 발생합니다.

답변1

이는 일종의 오류가 인쇄되었지만 오류 메시지에 인쇄된 문자로 인해 약간 잘못된 위치에 있더라도 명령줄이 오류 위에 다시 그려졌음을 의미합니다.

첫 번째 항목을 삭제할 수 없는 이유 ya는 이미 인쇄된 이전 명령줄의 일부이기 때문입니다. 이는 실제로 새 명령줄의 일부가 아니므로 편집할 수 없습니다. 즉, 터미널에 지워지지 않은 문자가 인쇄되어 있으며 쉘은 이에 대해 아무것도 모릅니다.

이 오류를 해결하려면 다음을 수행하십시오.

set -vx

그런 다음 동일한 완료를 다시 시도하고 출력 어딘가에서 오류 메시지를 찾을 수 있는지 확인하십시오.

답변2

나는 같은 문제가 있었다. 실제로 위에서 언급한 대로 로케일 설정과 연결되었습니다.

로케일을 재생성하여 해결했습니다.

sudo echo en_US.UTF-8 UTF-8 > /etc/locale.gen
sudo locale-gen

다시 시작한 후 정상적으로 작동하기 시작했습니다.

답변3

비슷하게 나타나는 비슷한 문제가있었습니다. 나는 문제를 LC_ALL. 수출 LC_ALL(및 친구) 을 중단하고 C수출했는데 LANG=en_US.UTF-8문제가 사라졌습니다.

나는 문제를 Zsh, tmux,특정 oh-my-zsh 테마 하나. ( robbeyrussell제 생각에는 oh-my-zsh의 첫 번째 제작자였으므로 이동 경로는 이제 "공식" GitHub 조직으로 연결됩니다)

또한보십시오:

관련 정보