Le terminal a été pendu lors de l'édition de quelque chose dans vi

13

J'apportais des modifications à un fichier distant dans vi en utilisant le terminal lorsque j'ai accidentellement appuyé sur Ctrl+ Sau lieu de :wq.

Maintenant, tout a été pendu. J'ai essayé Escape,:q!et toutes sortes de virgules vi mais rien ne répond. L'écran du terminal est bloqué. Je ne peux pas fermer la session Terminal pour l'instant car cela entraînera la perte de tous les changements. Veuillez suggérer ce qui devrait être fait

vipin8169
la source

Réponses:

24

Ctrl+ Qannulera Ctrl+ S. Ce sont d'anciens codes de contrôle pour arrêter et reprendre la sortie vers un terminal. Ils peuvent toujours être utiles, par exemple lorsque vous tailfutilisez un fichier journal et quelque chose d'intéressant défile, mais cette ère de tampons de défilement illimités les a vraiment obsolètes.

zwets
la source
7

Je voudrais compléter la réponse acceptée de zwets .

Vous pouvez voir la signification des touches spéciales en émettant les commandes stty -aet man stty.

stty -aimprime tous les paramètres actuels du terminal. Le résultat dans mon terminal:

speed 38400 baud; rows 33; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk > -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

man sttyimprime le manuel de stty. La partie qui est pertinente ici:

Caractères spéciaux:

   start CHAR
          CHAR will restart the output after stopping it

   stop CHAR
          CHAR will stop the output
Facture
la source