Ich bin auf einen Satz in vimdoc gestoßen:
Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.
und dieser Schlüssel hängt in der Tat mein vim. Ich dachte, dass es die Schuld von vim war, da es kein Problem gab, wenn ich C-s
/ C-x C-s
in emacs nox verwende. Aber gerade, als ich eine Manpage las und auf drückte Ctrl-s
, hängt sie man
auch (ich setze less
als PAGER).
Kann mir jemand sagen, was passiert?
Die Terminalemulatoren sind xterm
und lxterminal
und haben tty
auch dieses Problem. Und ein Ctrl+ qbringt den Prozess in allen Fällen wieder in Ordnung.
C-q
, das Scrollen wieder zu aktivieren, oder?ctrl-s
der Prozess hängen bleibt.C-s
undC-q
die alten tage waren "scroll lock toggle". Sie können diese Funktionalität deaktivieren, indem Siestty ixany
stty ixoff -ixon
.bashrc
Antworten:
Diese Funktion wird als Software-Flusskontrolle (XON / XOFF-Flusskontrolle) bezeichnet.
Wenn ein Ende der Datenverbindung (in diesem Fall der Terminalemulator) keine Daten mehr empfangen kann (weil der Puffer voll oder fast voll ist oder der Benutzer sendet
C-s
), sendet er ein "XOFF", um das Ende des Sendens mitzuteilen Datenverbindung pausieren, bis das "XON" -Signal empfangen wird.Was unter der Haube passiert, ist, dass das "XOFF" dem TTY-Treiber im Kernel anweist, den Prozess, der Daten sendet, in einen Ruhezustand zu versetzen (wie das Anhalten eines Films), bis dem TTY-Treiber ein "XON" gesendet wird, um dies mitzuteilen Kernel, um den Prozess fortzusetzen, als wäre er nie gestoppt worden.
C-s
Aktiviert die Terminal-Bildlaufsperre. Dies verhindert, dass Ihr Terminal rollt (durch Senden eines "XOFF" -Signals, um die Ausgabe der Software anzuhalten).C-q
Deaktiviert die Bildlaufsperre. Terminal-Bildlauf fortsetzen (durch Senden eines "XON" -Signals, um die Ausgabe der Software fortzusetzen).Diese Funktion ist Legacy (damals, als Terminals sehr langsam waren und kein Scrollen zuließen) und standardmäßig aktiviert.
Um diese Funktion zu deaktivieren, benötigen Sie Folgendes in
~/.bash_profile
oder~/.bashrc
:quelle
Am Ende meines
.bashrc
Skripts habe ich hinzugefügt:quelle