터미널의 물리적 버퍼가 oh-my-zsh 구성에 표시된 것과 일치하지 않습니다.

터미널의 물리적 버퍼가 oh-my-zsh 구성에 표시된 것과 일치하지 않습니다.

oh-my-zsh 구성에서 커서가 텍스트와 동기화되지 않는 특이한 문제가 발생했습니다. (저는 주로 직장에서 screen이것을 사용합니다 konsole.

예를 들어, 새 터미널 라인에서는 프롬프트에 아무것도 입력되지 않고 몇 초 후에 아무 이유 없이 커서가 앞으로 이동합니다. 마치 유령이 그러는 것처럼 큐의 시작 위치가 앞으로 이동하는 것과 같습니다.

또 다른 기능은 첫 번째 커서 위치로 백스페이스할 수 없고 해당 위치의 문자로 백스페이스할 수 없다는 것입니다.

제가 보기에는 커서의 시각적 위치와 표시된 텍스트가 편집 중인 텍스트의 물리적 버퍼 내의 실제 위치와 일치하지 않는 것 같습니다.

예를 들어. help터미널에 입력한 다음 위쪽 화살표 키를 사용하여 이전 명령을 가져왔다고 가정해 보겠습니다 help. 어떤 일이 일어나고 있는 것 같고 결과적으로 백스페이스를 하면 여전히 표시되는 위치 help로만 백스페이스할 수 있습니다 . 실제로 물리적으로 버퍼의 전체 단어 가 지워집니다. 그래서 다시 입력하려고 하면 화면이 나오겠지만 엔터를 누르면 명령이 실행됩니다. 하지 않을 것이다 .ehhelphelphhelphelphhelp

루트 계정에서만 발생하지만 루트 및 최종 사용자에 대해 동일한 설정을 사용하고 있다고 확신합니다.

최종 결과는 abcde화면에서 백스페이스를 사용 하는 것 보다 백스페이스를 누르고 머무를 c가능성이 더 높다는 것입니다 .bacdeabde

어떤 아이디어가 있나요?

고쳐 쓰다:

리뷰와 관련된 추가정보입니다.

내 팁은 %{%f%b%k%}$(build_prompt)일반 계정과 님의 계정 root이 동일하다는 것입니다. 하지만 문제는 root계정 에서만 발생합니다 .

답변1

나는 oh-my-zsh에서 이 문제에 직면했고 docker다음 줄로 해결했습니다 Dockerfile.

RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \
    locale-gen
ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8 

호스트 컴퓨터에서 직접 실행하는 경우 해당 단계의 단계를 수행 RUN하고 export환경 변수 내보내기를 사용해 보세요.

변경 사항을 영구적으로 적용하려면 ~/.zshrc.

이것이 작동하는지 테스트하려면 다음을 수행하십시오.

print -l -- '+--+' '|\u26A1|' '+--+'

다음을 표시해야 합니다.

여기에 이미지 설명을 입력하세요.

관련 정보