tmux : 때때로 CTRL + B <화살표 키>는 문자 창을 인쇄합니다 (창을 전환하는 대신 [A, [B, [C 또는 [D))


3

ctrl + b를 사용하여 tmux에서 창을 전환하려고하면 tmux가 스위치 창 대신 해당 문자 코드 [A, [B, [C 또는 [D)를 산발적으로 인쇄합니다.

나는 정확히 같은 방식으로 반복적으로 수행 할 수 있습니다 .75 %는 올바르게 전환되는 시간이고 다른 25 %는 대신 문자 코드를 인쇄하는 시간입니다.

ctrl+b <up arrow>    prints [A
ctrl+b <down arrow>  prints [B
ctrl+b <right arrow> prints [C
ctrl+b <left arrow>  prints [D

Linux Mint에 연결된 cygwin을 사용하고 있습니다. Tmux는 Linux mint에서 실행 중이며 사용중인 쉘은 bash입니다.

편집 : 이 질문을보다 쉽게 ​​검색 할 수 있도록 다음 키워드를 추가하겠습니다.

터미널 출력 문자 코드 개방 브래킷 A, 개방 브래킷 B, 개방 브래킷 C, 개방 브래킷 D.

어떤 아이디어?


Cygwin에서 어떤 터미널 에뮬레이터를 사용하고 있습니까? 박하?
jjlin

터미널 에뮬레이터는 터미널 유형이 xterm-256color로 설정되어 민트입니다.
Matthew

답변:


2

것 같은데 TMUX 의는 escape-time당신이 당신의 Cygwin에서 시스템과 리눅스 시스템 사이에있는 연결의 품질에 대한 낮은 비트를 설정한다.

많은 터미널 [ B이 아래쪽 화살표 키에 대해 3 바이트 시퀀스 ESC 를 생성합니다 . 이 escape-time설정은 tmux 에게 ESC 수신 후 전체 시퀀스를 기다려야하는 시간을 알려줍니다 . 완전한 시퀀스를 수신하지 않고 시간이 소진되면 tmux 는 개별 바이트를 개별 키 스트로크로 취급합니다 (Cb ESC를 바인딩되지 않은 tmux 키로 처리 [B하고 활성 창의 tty로 전달 ).

따라서 escape-time매우 낮은 값으로 설정 했거나 ( 로컬 연결을 통해 tmux 에 액세스 할 때 제대로 작동 할 수 있음 ) 두 시스템 간의 연결이 때때로 escape-time값 보다 약간 더 오래 지연 될 수 있습니다. 명령을 사용하여 현재 값을 쿼리 할 수 ​​있습니다 tmux show-options -s | grep escape-time.

기본값은 500 밀리 초입니다. 이것은 대부분의 상황에서 정상적으로 작동하지만 한계 연결에는 너무 짧을 수 있습니다. 다음의 가치를 높이려고 시도 할 수 있습니다 escape-time.

set-option -s escape-time 1000

이것을 ~/.tmux.conf파일에 넣고 tmux, tmux 세션 내의 쉘에서 명령 으로 실행 하거나, tmux 프롬프트 에서 직접 입력 할 수 있습니다 (Cb로 열림 :). 참고 : 파일 ~/.tmux.conf을 다시 가져 오거나 tmux 서버를 source다시 시작해야 변경 사항 이 적용 됩니다.


멋진 설명을 위해 +1, 불행히도 문제를 해결하지 못했습니다. 탈출 시간을 늘리면 문제가 악화되는 것으로 보입니다. (tmux 명령 줄을 탐색 할 때 화살표 키가 이상하게 작동한다는 점에 유의해야합니다 (ctrl + b :). 왼쪽을 누르면 커서가 부분적으로 완료됩니다. tmux 명령은 커서를 이동하는 대신 문자를 지우는 경우가 있으므로 'vi'키 바인딩이 있고 이스케이프를 누른 것처럼 다시 입력하려면 'i'를 눌러야합니다. 연결 문제가 느릴 수 있습니다. 그러나 더 높은 탈출 시간은 그것을 악화시킨다
Matthew

글쎄, 당신의 그 행동 TMUX의 ESC를이 (가) 삽입 모드에서 이동합니다 : 명령 줄은 확실히 지연 이스케이프 시퀀스 문제 같은 소리 [(그것이에 바인드되어 있지 않은 무시 vi-edit테이블), 그리고이 D는 IS delete-end-of-line명령. 나는 escape-time중단 된 이스케이프 시퀀스 문제를 악화시키기 위해 높은 것을 기대하지 않았을 것이다 . 그러나 vi 스타일 바인딩이 불편할 수 있습니다 escape-time. ESC 키를 누른 후 (예 : 삽입 모드 종료) 그리고 일반 모드 명령을 입력하기 전에 (예 : b단어를 뒤로 이동 ) 항상 경과 해야합니다. .
Chris Johnsen

왜 이것이 bash 또는 gnu 스크린 세션에서만 tmux에서만 발생합니까?
Matthew

또한 tmux에 의해 해석 될 때만 발생합니다 (ctrl + b 이후 또는 tmux : command line에있는 동안). 터미널에서 터미널의 화살표 키를 문제없이 반복적으로 누를 수 있습니다 (tmux 세션의 bash 프롬프트).
Matthew

1
터미널이 3 바이트 시퀀스 ESC를 보내려고 [ D하지만 첫 번째 바이트 이후에 일시 정지 한다고 가정하십시오 . 접두사 뒤에이 문제가 발생하면 선행 ESC는 바인딩 가능한 키 조합 (접두사 ESC)으로 "먹습니다". 에서 VI 스타일의 명령 행 편집 모드가 "먹는"하는 등의 VI 에게 정상으로의 복귀 모드 키를 누릅니다. 당신은 (예를 들어,이 청각 장애에 입력하면 배쉬 에서 TMUX )는 ESC가 그냥 "별도의"키로 기본 TTY에 전송, 그것을 "먹지"않습니다; 청취 프로세스 ( bash )가 이스케이프 대 시퀀스 시작에 대해 까다 롭지 않은 경우 간단히 대기 [D하고 왼쪽 화살표로 처리합니다.
Chris Johnsen

1

이 문제도 있습니다. 화살표 키 (그리고 아마도 cygwin)에만 적용됩니다. 당분간 화살표 키를 바인딩 해제하고 선택 창 명령을 다른 곳으로 옮기기로 결정했으며 새로운 키 바인딩이 완벽하게 작동합니다. 그러나 매우 만족스러운 해결책은 아닙니다. 누군가 무슨 일이 일어나고 있는지 알고 싶습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.