Ctrl-s가 터미널 에뮬레이터를 중단합니까?

Ctrl-s가 터미널 에뮬레이터를 중단합니까?

vimdoc에서 다음 문장을 봤습니다.

Note: CTRL-S does not work on all terminals and might block
                further input, use CTRL-Q to get going again.

CTRL-S를 사용하면 vim이 중단됩니다. 나는 / in emacs nox 를 사용하는 데 아무런 문제가 없었기 때문에 그것이 vims의 잘못이라고 생각했습니다 C-s. C-x C-s그러나 지금 맨페이지를 읽고 키를 누르면 작동이 Ctrl-s중단됩니다(출력 호출기).manless

그럼, 누군가 무슨 일이 일어나고 있는지 말해 줄 수 있나요?

제가 테스트한 터미널 에뮬레이터 xtermlxterminal. tty이 문제도 있습니다. 모든 경우에 A Ctrl+는 단말기 정지를 취소합니다.q

답변1

이 기능을 소프트웨어 흐름 제어(XON/XOFF 흐름 제어)라고 합니다.

데이터 링크의 한쪽 끝(이 경우 터미널 에뮬레이터)이 더 많은 데이터를 수신할 수 없는 경우(버퍼가 꽉 찼거나 거의 꽉 찼거나 사용자가 전송했기 때문에 C-s) "XOFF"를 보내 데이터 링크가 끝났음을 전송 측에 알립니다. 일시정지, "XON" 신호가 수신될 때까지.

뒤에서 일어나는 일은 "XOFF"가 커널의 TTY 드라이버에게 TTY 드라이버가 "XON"을 보내 프로세스를 재개하라고 알릴 때까지 데이터를 보내는 프로세스를 절전 모드(예: 영화 일시 중지)에 두라고 지시하는 것입니다. 결코 같은 것을 멈추지 않았습니다.

C-s터미널 스크롤 잠금을 활성화합니다. 이렇게 하면 터미널이 스크롤되는 것을 방지할 수 있습니다(소프트웨어 출력을 일시 중지하기 위해 "XOFF" 신호를 보냄).

C-q스크롤 잠금을 비활성화합니다. 터미널 스크롤을 복원합니다("XON" 신호를 보내 소프트웨어의 출력을 복원합니다).

이 기능은 이전 기능(터미널이 매우 느리고 스크롤을 허용하지 않았을 때)이며 기본적으로 활성화되어 있습니다.

~/.bash_profile이 기능을 비활성화하려면 또는에서 다음을 수행해야 합니다 ~/.bashrc.

stty -ixon

답변2

내 스크립트 끝에 다음을 .bashrc추가했습니다.

#so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
stty -ixon

편집: 시간이 지남에 따라 구성에서 이 줄을 제거했습니다. 결국 Ctrl-S를 사용하여 터미널 출력을 고정하고 Ctrl-Q를 사용하여 복원하는 것이 편리하다는 것을 알았기 때문입니다. 매일 유용하지는 않더라도 그래도 가지고 있으면 좋습니다.

관련 정보