Terminal został zawieszony podczas edycji czegoś w vi

14

Wprowadzałem pewne zmiany do pliku zdalnego w vi za pomocą terminala, gdy przypadkowo nacisnąłem Ctrl+ Szamiast :wq.

Teraz wszystko zostało powieszone. Próbowałem Escape,:q!i wszystkie rodzaje komend vi, ale nic nie odpowiada. Ekran terminala zablokował się. Nie mogę teraz zamknąć sesji terminalu, ponieważ doprowadzi to do utraty wszystkich zmian. Proszę zasugerować, co należy zrobić

vipin8169
źródło

Odpowiedzi:

25

Ctrl+ Qcofnie Ctrl+ S. Są to starożytne kody sterujące, które zatrzymują i wznawiają wyjście na terminal. Nadal mogą być przydatne, na przykład, gdy przeglądasz tailfplik dziennika i przewija się coś interesującego, ale ta era nieograniczonych buforów przewijania naprawdę ich przestarzała.

zwets
źródło
7

Chciałbym uzupełnić zaakceptowaną odpowiedź zwets .

Możesz zobaczyć znaczenie specjalnych naciśnięć klawiszy, wydając polecenia stty -ai man stty.

stty -adrukuje wszystkie bieżące ustawienia terminala. Wynik w moim terminalu:

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 sttydrukuje instrukcję stty. Część, która jest tutaj istotna:

Znaki specjalne:

   start CHAR
          CHAR will restart the output after stopping it

   stop CHAR
          CHAR will stop the output
Rachunek
źródło