Ctrl-s 중단 터미널 에뮬레이터?


311

vimdoc에서 한 문장을 보았습니다.

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

그리고이 열쇠는 실제로 내 vim을 중단시킵니다. emacs nox에서 C-s/ C-x C-s를 사용할 때 아무런 문제가 없었기 때문에 이것이 vim의 잘못이라고 생각했습니다 . 그러나 지금 나는 맨 페이지를 읽고을 누를 때 Ctrl-s, 그것은 중단 man 뿐만 아니라 (내가 설정하고 less호출기로).

그래서 누군가 무슨 일이 일어나고 있는지 말해 줄 수 있습니까?

터미널 에뮬레이터는 xtermlxterminal하고, tty이 문제가 있습니다. 그리고 Ctrl+ q는 모든 경우에 프로세스를 다시 올바르게 설정합니다.


6
이것은 어리석은 질문 일지 모르지만 질문에서 시도한 것을 언급하지 않았습니다. C-q스크롤을 다시 활성화 하려고 했습니까?
h3rrmiller

3
@ h3rrmiller 네, 맞습니다. 그러나 왜 ctrl-s프로세스가 중단 되는지 알고 싶습니다 .
Hongxu Chen

이 스크롤 잠금 키를 키보드되기 전에 C-s그리고 C-q옛날 "스크롤 잠금 토글"이었다. 당신은 추가하여이 기능을 사용하지 않도록 설정할 수 있습니다 stty ixanystty ixoff -ixon귀하에.bashrc
h3rrmiller

2
이것은 오늘날 터미널 에뮬레이터의 어리석은 역사적 배경입니다. 터미널을 수정하는 방법 은 이 관련 질문 을 참조하십시오 .
Ingo Karkat

1
@IngoKarkat 나는 바보 같은 말을하지 않을 것입니다 ... 나는 아직도 그것을 사용합니다
h3rrmiller

답변:


361

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

데이터 링크의 한 쪽 끝 (이 경우 터미널 에뮬레이터)이 더 이상 데이터를 수신 할 수없는 경우 (버퍼가 가득 찼거나 거의 다 찼거나 사용자 C-s가 전송하기 때문에) "XOFF"를 보내서 전송 끝을 알려줍니다. "XON"신호가 수신 될 때까지 일시 정지 할 데이터 링크.

"XOFF"는 커널에서 TTY 드라이버에게 TTY 드라이버에게 "XON"메시지가 전송 될 때까지 데이터를 보내는 프로세스 (동영상 일시 정지 등)를 대기 상태로 전환하도록 지시하는 것입니다. 프로세스가 처음부터 중지되지 않은 것처럼 커널을 다시 시작합니다.

C-s터미널 스크롤 잠금을 활성화합니다. 터미널이 스크롤되는 것을 방지합니다 ( "XOFF"신호를 전송하여 소프트웨어 출력을 일시 중지 함).

C-q스크롤 잠금을 비활성화합니다. 터미널 스크롤링 재개 ( "XON"신호를 전송하여 소프트웨어 출력을 재개함으로써)

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

이 기능을 비활성화하려면 ~/.bash_profile또는에 다음이 필요합니다 ~/.bashrc.

stty -ixon

10
실제로 나는 그것이 60 년대가 아니라면 70 년대로 거슬러 올라간다고 생각합니다.
Keith

그러나 우분투 16.04에서는 작동하지 않는 것 같습니다.
Robert

3
"stty -ixon"<----- 지난주 인터넷에서 읽은 가장 중요한 것 중 하나입니다. 감사합니다.
브래드 P.

실제로, 이것의 역사는 80 년대보다 수십 년 전에 시작되었습니다. The TTY demystified를 참조하십시오 .
RoboAlex

25

.bashrc스크립트 의 끝에 나는 다음을 추가했다.

#so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
stty -ixon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.