Je suis tombé sur une phrase dans vimdoc:
Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.
et cette clef accroche en effet mon vim. Je pensais que c'était la faute de vim, puisqu'il n'y avait aucun problème lorsque j'utilise C-s
/ C-x C-s
dans emacs nox. Cependant, tout à l'heure, lorsque je lisais une page de manuel et appuyais sur la touche Ctrl-s
, elle se bloque man
également (je suis less
en mode PAGER).
Alors quelqu'un peut-il me dire ce qui se passe?
Les émulateurs de terminal sont xterm
et lxterminal
, et a tty
également ce problème. Et a Ctrl+ qremet le processus en place dans tous les cas.
C-q
de réactiver le défilement, non?ctrl-s
le processus est suspendu.C-s
etC-q
étaient à l'époque "commutateur de verrouillage du défilement". vous pouvez désactiver cette fonctionnalité en ajoutantstty ixany
etstty ixoff -ixon
à votre.bashrc
Réponses:
Cette fonctionnalité s'appelle le contrôle de flux logiciel (contrôle de flux XON / XOFF)
Quand une extrémité de la liaison de données (dans ce cas l'émulateur de terminal) ne peut plus recevoir de données (parce que le tampon est plein ou presque plein ou que l'utilisateur envoie
C-s
), il enverra un "XOFF" pour indiquer à l'expéditeur le message liaison de données pour faire une pause jusqu'à ce que le signal "XON" soit reçu.Ce qui se passe sous le capot, c’est que le "XOFF" demande au pilote TTY du noyau de mettre le processus qui envoie les données dans un état de veille (comme une pause dans un film) jusqu'à ce que le pilote TTY reçoive un "XON" le noyau pour reprendre le processus comme s’il n’avait jamais été arrêté.
C-s
active le verrouillage du défilement du terminal. Ce qui empêche votre terminal de défiler (En envoyant un signal "XOFF" pour mettre en pause la sortie du logiciel).C-q
désactive le verrou de défilement. Reprise du terminal en défilement (En envoyant un signal "XON" pour reprendre la sortie du logiciel).Cette fonctionnalité est héritée (à l'époque où les terminaux étaient très lents et n'autorisait pas le défilement) et est activée par défaut.
Pour désactiver cette fonctionnalité, vous devez disposer des éléments suivants dans
~/.bash_profile
ou~/.bashrc
:la source
A la fin de mon
.bashrc
script, j'ai ajouté:la source