Dlaczego terminal nie wyświetla nowych linii?

16

Na przykład po wpisaniu następującego polecenia

echo line | (cat >/dev/null; vi)

nawet owinięty w inną skorupę,

sh -c 'echo line | (cat >/dev/null; vi)'

i wrócił z Vima, teraz nie będzie już wyświetlać powrotu karetki.

Jak mogę zrobić, aby ponownie wyświetlał nowe linie? (Bez wyjścia.)

Xiè Jìléi
źródło
obowiązkowa uwaga o zamianie na emacsa :)
Dang Khoa,

Odpowiedzi:

36

spróbuj jednego lub obu z nich:

  • wpisz ctrl+c, a następnie wpisz reset, a następnie naciśnij enter.
  • wpisz ctrl+c, a następnie wpisz stty sane, a następnie naciśnij enter.

ctrl+cjest usunąć wszelkie inne znaki mogły zostać wpisane w linii poleceń.

resetlub stty sanezwykle naprawia zepsuty terminal. Przeczytaj stronę podręcznika reseti, sttyaby uzyskać więcej informacji.

Zauważ, że jeśli terminal jest wystarczająco pomieszany, być może nawet nie zadziała ctrl+club enterbędzie działał zgodnie z oczekiwaniami. Istnieją jeszcze inne metody wprowadzania znaków, ale obejmują one starożytną mroczną magię. W takim przypadku zazwyczaj łatwiej jest po prostu zamknąć terminal i uruchomić inny.

Moje rozumienie wewnętrznego działania terminala nie jest wystarczająco głębokie, aby wyjaśnić, dlaczego i jak to robi.

lesmana
źródło
4

To nie jest zamierzone zastosowanie vido pobierania danych wejściowych ze standardowego wejścia.

W każdym razie możesz ponownie uzyskać nowe linie za pomocą

stty sane

bez resetowania terminala.

enzotib
źródło