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

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는 모든 경우에 프로세스를 다시 올바르게 설정합니다.



답변

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

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

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

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

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

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

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

stty -ixon


답변

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

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


답변