Ctrl- De Qhecho es la respuesta. Pensé en incluir un poco de historia de esto que es demasiado larga para caber en los márgenes de la respuesta correcta de ak2 .
En la Edad Media, un terminal era un gran equipo que se conectaba a un dispositivo remoto (originalmente otro terminal porque los teletipos eran mucho más fáciles de aprender a operar que una tecla telegráfica) a través de un cable largo o mediante líneas telefónicas con módems. Cuando Unix se estaba desarrollando, el código ASCII ya estaba bien establecido (aunque el código EBCDIC de la competencia de IBM todavía era una fuerza a tener en cuenta).
Los primeros terminales mantuvieron un registro impreso de cada personaje recibido. Siempre que los caracteres lleguen no más rápido de lo que el cabezal de impresión podría escribirlos, al menos. Pero tan pronto como los terminales basados en CRT fueron posibles, surgió el problema de que solo unas 25 líneas cabían en el CRT, y 25 líneas de 80 caracteres representaban suficiente RAM que nadie pensó seriamente en proporcionar más RAM para los caracteres que se habían desplazado desde la parte superior de la pantalla.
Por lo tanto, se necesitaba cierta convención para indicar que el final del envío debería detenerse para permitir que el lector se pusiera al día.
El código ASCII de 7 bits tiene 33 puntos de código dedicados a caracteres de control (0 a 31 y 127). Algunos de los que tenían propósitos muy bien establecidos, tales como NUL
(guía de la cinta de papel en blanco para roscar, lagunas, y empalmes), DEL
( "tachado" personajes en la cinta de papel indicadas por la perforación de los siete agujeros), BEL
(ding!), CR
, LF
, Y TAB
. Sin embargo, cuatro fueron definidos explícitamente para controlar el dispositivo terminal de sí mismo ( DC1
a DC4
aka Ctrl + Q, Ctrl + R, Ctrl + S y Ctrl + T).
Mi mejor conjetura es que algún ingeniero pensó que (a medida que avanza la mnemotecnia), "S" para "Detener" y "Q" para "Continuar" no estaban tan mal, y se les asignó el DC3
significado de "por favor, dejen de enviar" y DC1
de "ok , continuar enviando ahora ".
Incluso esa convención ya estaba bien establecida cuando Unix estaba dejando el nido en los Laboratorios Bell para salir al mundo.
La convención se conoce como control de flujo de software y es extremadamente común en dispositivos seriales reales. No es fácil de implementar correctamente, ya que evita el uso de cualquiera de esos caracteres para cualquier otro propósito en el canal de comunicaciones, y la señal de Stop debe manejarse antes de los caracteres recibidos pendientes para evitar enviar más de lo que el extremo receptor puede encargarse de.
Si es práctico, se prefiere ampliamente utilizar señales adicionales fuera de banda del flujo de datos en serie para el control de flujo. En las conexiones cableadas directamente que pueden permitirse los cables de señal adicionales, encontrará un apretón de manos de hardware en uso, que libera esos caracteres para otros usos.
Por supuesto, la ventana de terminal de hoy no está utilizando un puerto serie físico real, tiene barras de desplazamiento y realmente no necesita el protocolo de comunicación. Pero la convención persiste.
Recuerdo la afirmación de que Richard Stallman recibió quejas sobre su asignación Ctrl + S a la búsqueda incremental en las primeras versiones de emacs, y que no simpatizaba con ningún usuario que tuviera que depender de una conexión controlada por flujo de software de 7 bits.
vim
y presioné Ctrl-S para guardar mis ediciones. Uh-ohXD