Natknąłem się na zdanie w vimdoc:
Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.
i ten klucz rzeczywiście zawiesza mój vim. Myślałem, że to wina vima, ponieważ nie miałem problemu z użyciem C-s
/ C-x C-s
in emacs nox. Jednak właśnie teraz, kiedy czytałem stronę podręcznika i naciskałem Ctrl-s
, ona również się zawiesza man
(ustawiam się less
jako PAGER).
Czy ktoś może mi powiedzieć, co się dzieje?
Te emulatory terminali są xterm
i lxterminal
, i tty
ma również ten problem. A Ctrl+ ponownie qustawia proces we wszystkich przypadkach.
C-q
ponownie włączyć przewijanie, prawda?ctrl-s
proces się zawiesił.C-s
aC-q
dawniej „przełączanie blokady przewijania”. możesz wyłączyć tę funkcję, dodającstty ixany
istty ixoff -ixon
do swojego.bashrc
Odpowiedzi:
Ta funkcja nosi nazwę Software Flow Control (kontrola przepływu XON / XOFF)
Gdy jeden koniec łącza danych (w tym przypadku emulator terminala) nie może odebrać więcej danych (ponieważ bufor jest pełny lub prawie pełny lub użytkownik wysyła
C-s
), wyśle „XOFF”, aby poinformować koniec wysyłania łącze danych, aby wstrzymać do momentu otrzymania sygnału „XON”.To, co dzieje się pod maską, polega na tym, że „XOFF” mówi sterownikowi TTY w jądrze, aby wprowadził proces, który wysyła dane do stanu uśpienia (jak wstrzymywanie filmu), dopóki sterownik TTY nie zostanie wysłany „XON”, aby poinformować jądro, aby wznowić proces tak, jakby nigdy nie został zatrzymany.
C-s
włącza blokadę przewijania terminala. Zapobiega to przewijaniu się terminala (wysyłając sygnał „XOFF”, aby wstrzymać wyjście oprogramowania).C-q
wyłącza blokadę przewijania. Wznawianie przewijania terminala (wysyłając sygnał „XON” w celu wznowienia działania oprogramowania).Ta funkcja jest starsza (wcześniej, gdy terminale działały bardzo wolno i nie pozwalały na przewijanie) i jest domyślnie włączona.
Aby wyłączyć tę funkcję, niezbędne są w jeden
~/.bash_profile
lub~/.bashrc
:źródło
Na końcu mojego
.bashrc
skryptu dodałem:źródło