TMUX 또는 화면을 사용하여 vim에서 모드를 전환 할 때 약간의 지연


68

내가 tmux를 사용하기 때문에 Vim에서 삽입 모드로 전환하거나 더 이상 삽입 할 수 없습니다. Esc인서트 모드에서 눌렀을 때 실제로 인서트 모드에서 나오려면 상당한 시간이 걸립니다. 를 누른 후 Esc다른 키를 누르면 스위치가 즉시 Esc실행 되고 이후 에 누른 키에 대한 명령 이 실행됩니다. 어떤 원인이 발생할 수 있습니까?

tmux 외부에서 Vim을 실행할 때 지연이 발생하지 않으므로 Vim 구성은 문제가되지 않으므로 아마도 tmux와 관련이 있습니다. 나는 그놈 터미널 btw를 사용합니다.

또한 주목할 가치가있는 것은 tmux에서 키 바인딩을 정의 할 수없는 것 같습니다 Esc. 제 계획은 다음에 바인딩 Esc하는 것이 었 습니다.

bind Escape send-keys ^[

아아, 그것은 Esctmux 에 대한 바인딩 이 작동하지 않는 것 같습니다 . 화면에서도 같은 문제가 발생합니다.

답변:


122

매뉴얼 페이지를 살펴본 후 tmux에 옵션이 있습니다. 다음 ~/.tmux.conf은 지연 문제를 해결합니다.

 set -sg escape-time 0

이를 적용하려면 tmux 서버를 다시 시작하거나 구성을 다시로드해야합니다. 이렇게하려면 source-file ~/.tmux.conftmux 프롬프트에서 발행 하십시오.


2
어디서 찾았어요? 어디에서나 탈출 시간을 찾을 수 없으며 man tmux명령이 작동하지 않습니다.
djeikyb

나는 개발 버전에서만 사용할 수 있다고 생각합니다. 당신은 여기 그것을 얻을 수 있습니다 github.com/ThomasAdam/tmux
톤 반 덴 Heuvel

4
이 설정이 작동하기 전에 tmux kill-server를 사용해야했습니다. 감사!
Sam

1
이것은 당신에게 10 개의 공짜를 줄 수 있기를 바랍니다. vim에서 1 시간의 전투 시간 초과 후 이것을 발견했습니다. 감사합니다!
malvim

1
@MichaelBrown, 나도 그래도 여전히이 문제에 부딪쳤다. 이스케이프 또는 ^ [를 눌렀는지 여부에 관계없이 동일한 키 코드가 터미널 에뮬레이터로 전송되므로 실제로 중요하지 않습니다.
톤 반 덴 휴벨

4

이 페이지를 찾았을 때 해결하려고했던 것과는 다르지만 비슷한 문제가 있었 으므로이 답변을 검색하고 동일한 방법 으로이 페이지를 찾는 다른 사람에게 도움이되는 경우 여기에 게시 할 것입니다.

문제점 : 삽입 모드에서 명령 모드로 전환 할 때 bash의 vi 모드에서 지연이 발생합니다

해결 방법 : 당신의에서 ~/.inputrc파일을 추가 할 set keyseq-timeout n경우 n일부 낮은 0보다 큰 값이다 n500ms로 기본값 지연이 발생하는 것이다. 여기에서 설명서를 참조 하십시오 .

또한 어떤 모드에 있는지 알려면 Dylan Cali의 bash 포크를 확인하십시오 .


매우 유용합니다. 0.01이제는 훨씬 더 빨라졌습니다. 감사!

/etc/inputrc모든 사용자가 사용할 수 있도록 추가 할 수도 있습니다 .

1

로 시작하는 매핑을 사용하는 것 같습니다 ESC. ESCvim 을 누르면 vim은 다음 키가 매핑의 키인지 확인해야합니다. 그렇지 않으면 즉시 계속할 수 있습니다.

vim 구성은 터미널에 따라 다를 수 있으므로 tmux 외부에서 발생하지 않는다는 사실은 그다지 의미가 없습니다. Vim은 $TERM환경 변수를 쿼리하고 그 값에 따라 다른 구성을 선택할 수 있습니다.

그놈 터미널은 변수 xterm의 값으로 AFAIK를 사용 $TERM하고 tmux는을 사용하기 screen때문에 모든 vim 구성 파일을 통해 사용되는 설정에 대해서만 $TERM변수가 같은지 확인합니다 screen. 내 추측은 시스템의 일부 vim 구성 파일 ESC이 터미널이있을 때 화살표 키 ( 문자로 시작하는)를 처리하기 위해 매핑을 설정 한다는 것입니다 screen.

$TERMvim을 시작하기 전에 tmux 에서 변수를 임시로 변경하여 테스트 할 수 있습니다 . 쉘이 bash이면 vim을 다음과 같이 호출하십시오.

TERM=xterm vim

tmux에서 문제가 지속되는지 확인하십시오. 그러나 tmux와 xterm의 터미널 기능간에 차이가있을 수 있으며 일부 문제가 발생할 수 있으므로이를 수정으로 사용하지 않아도됩니다.


여기 좋은 조언이 있습니다. bash를 사용하지만 불행히도 TERM=xterm vim문제를 해결하지 못했습니다. 좀 더 깊이 파고 들어야합니다.
Ton van den Heuvel

1

제목에 Screen이 언급되었으므로 GNU Screen에서 Esc 키의 동작을 수정하는 솔루션이 있습니다. ( 여기 에서 가져옴 )

더하다

maptimeout 5

하는 .screenrc파일을 config (설정).

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