작업 공간을 전환한 후 터미널에 비정상적으로 메시지가 표시됩니다(예: 7A)

작업 공간을 전환한 후 터미널에 비정상적으로 메시지가 표시됩니다(예: 7A)

저는 Arch Linux와 Zsh를 사용하고 있습니다. 저는 보통 여러 개의 작업 공간을 열어 두고 앞뒤로 전환합니다(Ctrl+Alt+Up/Down 사용). 그러나 가끔 터미널로 돌아오면 다음과 같은 프롬프트가 표시되는 것을 발견했습니다.

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

전환할 때마다 이런 일이 발생하는 것은 아니지만 일반적입니다. 이것은 매우 성가신 일입니다.

위/아래 키인 것 같아요. 그것을 고치는 방법에 대한 아이디어가 있습니까?

미리 감사드립니다!

답변1

당신 말이 맞습니다. 이것은 Ctrl+ + 를 누르면 Meta발생합니다 Up/Down. 터미널은 기능 키와 수정자 조합을 나타내기 위해 이스케이프 시퀀스를 보냅니다.키보드 입력과 텍스트 출력은 어떻게 작동합니까?개요를 확인하고모든 키 조합을 처리할 수 있는 Linux 터미널이 있습니까?이 특정 사례에 대해 자세히 알아보세요.

Zsh는 특정 키 누르기가 합법적인지 여부를 알 수 있는 방법이 없습니다. 버그는 창 관리자(또는 ++ 키 바인딩을 처리하는 데스크탑 환경의 일부 Ctrl) 또는 터미널 에뮬레이터에 존재합니다. 터미널 에뮬레이터에서는 이러한 키 입력이 전혀 표시되지 않아야 하기 때문에 아마도 터미널 에뮬레이터에는 없을 것입니다. 이러한 키 입력은 키보드 단축키로 설정하는 프로그램에 의해 캡처되어야 합니다.MetaUp/Down

당신이 할 수 있는 최선의 방법은 zsh에 대한 해결 방법을 설정하는 것입니다. 아무 작업도 수행하지 않는 이러한 키 시퀀스에 대한 키 바인딩을 추가합니다. 이는 터미널에서 실행되는 다른 응용 프로그램이 아닌 zsh에서만 작동합니다. 전체 문자 시퀀스는 ++ 및 ++ ␛[1;7A용 입니다 . 여기서 ␛는 이스케이프 문자(바이트 값 27)입니다. +를 누른 다음 zsh에서 키를 누르면 이를 확인할 수 있습니다 (이스케이프 문자는 터미널에 표시됩니다 ). 기본적으로 zsh는 를 읽고 이 이스케이프 시퀀스가 ​​바인딩 해제되어 읽기를 중지한 다음 다음 문자를 일반 삽입으로 처리합니다(사례별로 키 시퀀스가 ​​끝나는 시점을 알 수 있는 방법이 없습니다).CtrlMetaUp␛[1;7BCtrlMetaDownCtrlV^[␛[1

bindkey -s '\e[1;7A' ''
bindkey -s '\e[1;7B' ''

관련 정보