Encontré una oración en vimdoc:
Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.
y esta llave realmente cuelga mi vim. Estaba pensando que fue culpa de vim, ya que no había ningún problema cuando uso C-s
/ C-x C-s
en emacs nox. Sin embargo, justo ahora, cuando estaba leyendo una página de manual y presioné Ctrl-s
, también se cuelga man
(estoy configurando less
como PAGER).
Entonces, ¿alguien puede decirme qué está pasando?
Los emuladores de terminal son xterm
y lxterminal
, y tty
también tiene este problema. Y a Ctrl+ qvuelve a enderezar el proceso en todos los casos.
C-q
volver a habilitar el desplazamiento, ¿verdad?ctrl-s
el proceso se bloquea.C-s
yC-q
eran los viejos tiempos "alternar bloqueo de desplazamiento". puede deshabilitar esta funcionalidad agregandostty ixany
ystty ixoff -ixon
a su.bashrc
Respuestas:
Esta característica se llama Software Flow Control (control de flujo XON / XOFF)
Cuando un extremo del enlace de datos (en este caso, el emulador de terminal) no puede recibir más datos (porque el búfer está lleno o casi lleno o el usuario envía
C-s
) enviará un "XOFF" para indicar el final del envío. enlace de datos para pausar hasta que se reciba la señal "XON".Lo que sucede debajo del capó es que el "XOFF" le dice al controlador TTY en el kernel que ponga el proceso que está enviando datos en un estado de suspensión (como pausar una película) hasta que el controlador TTY reciba un "XON" para decirle al kernel para reanudar el proceso como si nunca se hubiera detenido en primer lugar.
C-s
habilita el bloqueo de desplazamiento del terminal. Lo que evita que su terminal se desplace (enviando una señal "XOFF" para pausar la salida del software).C-q
deshabilita el bloqueo de desplazamiento. Reanudar el desplazamiento del terminal (enviando una señal "XON" para reanudar la salida del software).Esta característica es heredada (cuando los terminales eran muy lentos y no permitían el desplazamiento) y está habilitada de manera predeterminada.
Para deshabilitar esta función, necesita lo siguiente en
~/.bash_profile
o~/.bashrc
:fuente
Al final de mi
.bashrc
script he agregado:fuente