추가 읽기

추가 읽기

OhMyZSH!며칠 동안 이 문제에 대한 해결책을 찾고 있었는데 해결책을 찾을 수 없습니다. 물론 나는 이것이 정확히 어떻게 zle작동하는지, bindkey터미널 에뮬레이터가 "제어 시퀀스"를 보내는 방식과 "터미널 유형"이 무엇을 의미하는지( xterm, 등) 를 이해하지 못합니다 . xterm-256-color"응용 프로그램 모드"와 동일

설정

최신 버전의 OhMyZSH가 설치된 2대의 컴퓨터가 있습니다 c3b072. 다음을 제출하세요.

  • 머신 A: SLES 11 SP4, 실행 중zsh 4.3.6 (x86_64-suse-linux-gnu)
  • 머신 B: Ubuntu 16.04, 실행 중zsh 5.1.1 (x86_64-ubuntu-linux-gnu)

xtermWindows에서 실행되는 Putty, 터미널 유형 및 UTF-8 변환 모드를 사용하여 두 컴퓨터 중 하나에 연결합니다 .

zshrc파일은 거의 모두 일반 OhMyZSH템플릿이므로 프롬프트를 dieter시스템 A에 있도록 변경하고 powerlevel-9k[https://github.com/bhilburn/powerlevel9k]B 머신에서

머신 A(일명 "나쁜" 머신)에서 관찰한 내용

명령줄을 편집할 때 Left커서 Right키를 누르면 (단일 문자 대신) 전체 단어가 이동됩니다.

HomeEnd키를 사용하면 예상대로 커서를 줄의 시작과 끝으로 가져옵니다.

설명된 동작은 emacs모드( bindkey -e)에 적용됩니다.

vim모드( bindkey -v) 에 들어갈 때 LeftRight화살표는 1문자 이동하지만 HomeEnd키는 커서를 줄의 시작과 끝으로 이동하지 않습니다. 대신 커서 아래에 있는 문자의 대소문자를 전환합니다.

머신 B(일명 "좋은" 머신)에서 관찰한 내용

Left키를 누르면 Right커서가 한 문자 이동됩니다. Home 및 End 키는 커서를 각각 줄의 시작과 끝으로 이동합니다. Ctrl+ ACtrl+ E조합은 각각 커서를 시작과 끝으로 이동합니다.

이것은 모든 쉘이 갖기를 원하는 동작입니다.

내가 지금까지 찾은 것

나는 이것이 bindkey문제라고 생각한다. 그러나 나는 그것에 대해 거의 아무것도 모르고 zsh이 내장 기능에 대한 문서를 찾는 데 어려움을 겪고 있습니다 .

파일은 유사하지만 두 컴퓨터에서 실행하면 zsh -v로그인할 때 매우 다른 결과가 생성됩니다..zshrc

누군가 이 두 컴퓨터가 다르게 작동하는 원인과 일관성이 복원되고 모든 쉘이 컴퓨터 B(일명 "좋은" 컴퓨터)에 있는 것처럼 작동하도록 구성을 변경할 수 있는 방법을 설명해 줄 수 있습니까?

제가 모르는 추가 정보가 필요하면 알려주실 거라고 확신합니다.

매우 감사합니다

답변1

터미널 유형을 다음과 같이 구성해야 합니다.putty,putty-256color, 또는putty-scoPuTTY를 사용할 때. terminfo 데이터베이스에 항목이 있는 유일한 터미널 유형입니다.PuTTY를 올바르게 설명하세요..

이는 널리 퍼진잘못된터미널 에뮬레이터는 모두 XTerm과 호환되며 terminfo 데이터베이스의 및 항목이 xterm이를 올바르게 설명한다고 가정합니다.xterm-256color

이 잘못된 생각Thomas Dickey의 XTerm FAQ에서 언급됨xtermxterm-256color항목이 다른 터미널 에뮬레이터는 물론 XTerm의 모든 버전을 설명하지도 않는다는 점은 주목할 가치가 있습니다 .

오늘날에도 M. Dickey의 하이퍼링크 페이지와 같은 PuTTY docosputty이 항목이 terminfo에 추가된 지 16년이 지났습니다., 이는 불행하게도 이 터미널 유형의 오용을 조장 xterm하지만 이는 오용이며 정확히 발생하는 애플리케이션 오작동입니다.

terminfo 데이터베이스 항목을 비교하고 및 xterm-256colorputty-256color에 어떤 일이 발생했는지 확인하세요.⇱ Home⇲ End

% infocmp xterm-256color putty-256color|grep -F kend
    켄드: '\EOF', '\E[4~'.
% infocmp xterm-256color putty-256color|grep -F khome
    khome: '\EOH', '\E[1~'.
%

보시다시피, XTerm을 처리하라는 지시를 받은 응용 프로그램은 (터미널로부터) ␛OH키 누르기의 제어 순서와 ⇱ Home키 누르기의 제어 순서를 수신할 것으로 예상합니다. 그러나 PuTTY는 실제로 제어 시퀀스와 .␛OF⇲ End␛[1~␛[4~

귀하의 애플리케이션 Z 셸에는 XTerm 키보드 제어 시퀀스가 ​​필요하지만(터미널에 유형이 있다고 잘못 지정했기 때문에 xterm) PuTTY 제어 시퀀스를 인식하지 못하고 실제로 이를 vi-mode 명령으로 나누어 삽입 모드( )를 종료하고 교체합니다. 현재 문자( ~) 의

추가 읽기

답변2

JdeBP가 친절하게 지적했듯이 TERM설정이 잘못되었습니다.

마침내 다음 단계를 수행하여 모든 것을 일관되게 유지할 수 있었습니다.

  1. Putty에서 터미널 유형을 다음으로 설정합니다.putty
  2. Putty에서 커서 및 키보드에 대한 응용 프로그램 모드 비활성화
  3. .tmux.conf내 파일 에 다음 줄을 추가하세요
    • set -g default-terminal "$TERM"screen기본적으로 tmux가 사용되지 않도록 방지
    • set -g terminal-overrides "putty*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:smkx@:rmkx@"Left및 키를 사용하면 Right한 단어가 아닌 한 문자를 이동할 수 있습니다.

관련 정보