Ctrl- Qè davvero la risposta. Ho pensato di gettare un po 'di storia di questo che è troppo lungo per adattarsi ai margini della risposta corretta di Ak2 .
Nei secoli bui, un terminale era una grande apparecchiatura che si collegava a un dispositivo remoto (originariamente un altro terminale perché i teletipi erano molto più facili da imparare a utilizzare di una chiave telegrafica) su un lungo filo o tramite linee telefoniche con modem. Quando Unix si stava sviluppando, il codice ASCII era già ben consolidato (sebbene il codice EBCDIC concorrente di IBM fosse ancora una forza da non sottovalutare).
I primi terminali conservavano un registro stampato di ogni personaggio ricevuto. Finché i personaggi non sono arrivati più velocemente di quanto la testina di stampa potesse scriverli, almeno. Ma non appena sono stati possibili terminali basati su CRT, è emerso il problema che solo circa 25 linee si adattano al CRT e 25 linee di 80 caratteri rappresentavano abbastanza RAM che nessuno pensava seriamente di fornire più RAM per i caratteri che erano scesi dalla cima di lo schermo.
Quindi era necessaria una convenzione per segnalare che l'estremità di invio doveva fermarsi per consentire al lettore di recuperare.
Il codice ASCII a 7 bit ha 33 punti di codice dedicati ai caratteri di controllo (da 0 a 31 e 127). Alcuni di coloro che hanno avuto scopi molto ben consolidate, come ad esempio NUL
(leader nastro di carta bianca per la filettatura, lacune, e giunzioni), DEL
( "cancellato" caratteri su nastro di carta indicati dalla punzonatura tutti i sette buche), BEL
(ding!), CR
, LF
, E TAB
. Ma quattro sono stati definiti esplicitamente per controllare il dispositivo terminale stesso ( DC1
ad DC4
alias Ctrl + Q, Ctrl + R, Ctrl + S e Ctrl + T).
La mia ipotesi migliore è che alcuni ingegneri pensassero che (come dicono gli mnemonici), "S" per "Stop" e "Q" per "Continua" non erano poi così male, e assegnati DC3
a significare "per favore, smetti di inviare" e DC1
intendo "ok , continua a inviare ora ".
Anche quella convenzione era già ben stabilita quando Unix stava lasciando il nido ai Bell Labs per uscire nel mondo.
La convenzione è nota come controllo del flusso del software ed è estremamente comune nei dispositivi seriali reali. Non è facile da implementare correttamente, in quanto impedisce l'uso di uno di questi caratteri per qualsiasi altro scopo nel canale di comunicazione e il segnale di Stop deve essere gestito prima di qualsiasi carattere in attesa di ricezione per evitare di inviare più di quanto la fine di ricezione possa maniglia.
Se pratico, l'uso di segnali aggiuntivi fuori banda dal flusso di dati seriali per il controllo del flusso è ampiamente preferito. Su connessioni cablate direttamente che possono permettersi i fili di segnale aggiuntivi, troverai l'uso dell'handshake hardware, che libera quei caratteri per altri usi.
Ovviamente, la finestra del terminale di oggi non utilizza una porta seriale fisica effettiva, ha barre di scorrimento e non ha davvero bisogno dell'handshaking del software. Ma la convenzione persiste.
Ricordo l'affermazione secondo cui Richard Stallman ha ricevuto lamentele sulla sua mappatura Ctrl + S per la ricerca incrementale nelle prime versioni di emacs e che era piuttosto antipatico per qualsiasi utente che dovesse dipendere da una connessione a flusso di software a 7 bit.
vim
e ho premuto Ctrl-S per salvare le mie modifiche. Uh-ohXD