ESC 키는 Alt + 동작으로 인해 터미널이 약간 지연됩니다


67

내 터미널 설정은 vi 바인딩이있는 그놈 터미널 + tmux + zsh입니다.

vim 또는 zsh의 커맨드 라인 vi 편집 모드와 같은 응용 프로그램에서 ESC키 를 자주 눌려 야 하지만이 키의 효과가 발생하기 전에 약간의 지연이 있습니다. 참조 느린 빔 ESC 키를 만드는 GNU 화면

몇 가지 실험을 한 후, ESC키 를 치는 즉시 다른 키 (예 :)를 누르는 b것과 같은 효과가 있음을 발견했습니다 Alt+b. 나는 이것이 왜 그런지 모른다. (아마도 레거시 이유가 없었던가 Alt? 모르겠다). 어느 쪽이든, 나는 두 개의 Alt키를 가지고 있으며 내 ESC키로이 동작을 원하지 않습니다 . 나는 그것을 시도 C+[하고 그것과 같은 문제를 시도 했다.

누가 그놈 터미널이나 tmux 또는 내 OS 자체 (Ubuntu Natty)를 담당하는지 잘 모르겠습니다. 이 문제를 해결하는 방법에 대한 아이디어는 훌륭합니다.

업데이트 : 다른 터미널 (LXTerminal)에서 tmux없이 확인했으며 지연도 있습니다.


1
내 vim이 왜 이상하게 행동했는지 알 수 없었습니다. 이 질문으로 방금 화면 내에서 사용하기 시작했습니다. 당신은 내 정신을 구했습니다.
pabo

답변:


111

실제 수정 사항은 다음과 같습니다. 다음에 추가하십시오 .tmux.conf:

set -s escape-time 0

4
훌륭합니다, 고마워요! vim에서 삽입 모드를 떠나는 지연이 있었으며 실제로 TMux 간섭을 일으킬 것이라고 생각하지 않았습니다. 이것은 속임수를
썼다

7
superuser.com/questions/252214/ 에서 언급했듯이, 나는 tmux kill-server이것을 적용하기 위해 해야 했다.
PhilT

이 페이지에 도착한 사람은 bash에서 vi 모드를 사용하는 동안 삽입 모드에서 명령 모드로 전환 할 때 지연이 발생하는 이유를 이해하려면 superuser.com/a/1161871/236677
Kvass

3
tmux-prefix(기본값 Ctrl+b) 으로 tmux에서 명령 프롬프트를 연 다음 :입력 하여 구성 파일을 다시로드 할 수 있습니다 source-file $HOME/.tmux.conf.
Folfy

7

기능 키를 눌렀는지 여부를 결정해야하는 입력 루틴으로 인해 지연이 발생합니다. 이를 위해 입력 루틴은 ESC 문자를 읽을 때마다 타이머를 시작합니다. 타이머가 다 떨어지기 전에 입력에서 읽은 문자 (10 분의 1 초라고 함)는 기능 키의 ESC 시퀀스로 해석되며이 ESC 시퀀스는 terminfo 또는 termcap 데이터베이스 (사용되는 하위 수준 루틴에 따라 다름)

그러나 ESC가 자체적으로 사용되는 응용 프로그램에는 이것이 성가신 일이지만, 이에 대한 해결 방법은 모르겠습니다.

ESC a= 의 동작으로 질문에 관해 Meta a:

모든 키보드에서 메타 키를 사용할 수있는 것은 아닙니다. 이 문제를 해결하기 위해 종종 다른 키보다 먼저 ESC 키를 누르는 것이 허용되었습니다.


설명 ktf에 감사드립니다. 지연은 터미널에서만 gvim에 존재하지 않습니다 (tmux없이 확인했지만 지연이 여전히 있습니다).
Shrikant Sharat

gvim은 X11 서버에서 어떤 키를 눌렀는지에 대한 정보를 얻기 때문에이 문제를 겪지 않습니다 (따라서 ESC 시퀀스를 구문 분석 할 필요가 없습니다).
ktf

자, 그놈 터미널을 같은 방식으로 동작시켜야합니다.
Shrikant Sharat

그놈 터미널은 문제가 아닙니다. 설명 된 문제 는 터미널 (또는 터미널 에뮬레이션)에서 실행 되는 프로그램에만 영향을 미치며 기능 키를 구문 분석해야합니다. 예를 들어 xterm 또는 KDE-Terminal을 사용 하면 동일한 동작을 경험할 수 있습니다 .
ktf

2
"메타 키를 모든 키보드에서 사용할 수있는 것은 아닙니다. 해결 방법으로 다른 키보다 먼저 ESC 키를 누르는 것이 종종 가능했습니다." 아마도 ttys는 종종 7 비트 데이터 인터페이스 만 가지고 있다고 추정합니다. 8 번째 "메타 비트"는 없었으므로 메타 용 ESC를 보내야했습니다. 오늘날 UTF-8은 널리 보급되어 있으므로 8 비트 연결을 사용하더라도 메타에는 높은 비트를 사용할 수 없습니다.
Chris 페이지

3

이렇게해도 문제가 직접 해결되지는 않지만 <Ctrl> c삽입 모드를 종료하는 데 사용할 수 있음을 확인했습니다 . 이것은 또한 tmux의 화면 스크롤을 종료하는 데 사용할 수 있습니다 (을 사용하여 호출 할 수 있음 <leader> PgUP)


3
일부 플러그인에서보고 <C-c>있는 InsertLeave자동 명령을 실행하지 않기 때문에 정기적으로 삽입 모드를 종료하는 데 사용하지 않는 것이 좋습니다 . 참조하십시오 :h i_CTRL-C.
Shrikant Sharat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.