Warum zeigt das Terminal keine neuen Zeilen an?

8

Wenn ich zum Beispiel folgenden Befehl eintippe,

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

sogar in eine andere Hülle eingepackt,

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

und von Vim zurückgegeben, jetzt wird keine Wagenrücklauf mehr angezeigt.

Wie kann ich tun, damit die neuen Zeilen wieder angezeigt werden? (Ohne Ausgang.)

    
Xiè Jìléi 21.08.2011, 05:32

2 Antworten

18

probiere einen oder beide aus:

  • Geben Sie ctrl+c ein und geben Sie reset ein. Drücken Sie dann enter .
  • Geben Sie ctrl+c ein und geben Sie stty sane ein. Drücken Sie dann enter .

Das ctrl+c löscht alle anderen Zeichen, die Sie in der Befehlszeile eingegeben haben könnten.

reset oder stty sane behebt normalerweise ein vermischtes Terminal. Lesen Sie die Manpage von reset und stty für weitere Informationen.

Beachten Sie, dass, wenn das Terminal genug durcheinander ist, es sein kann, dass nicht einmal ctrl+c oder enter wie erwartet funktionieren. Es gibt noch andere Methoden, um Zeichen einzugeben, aber sie beinhalten alte dunkle Magie. In diesem Fall ist es normalerweise einfacher, das Terminal zu schließen und ein anderes zu starten.

Mein Verständnis der inneren Funktionsweise eines Terminals ist nicht tief genug, um zu erklären, warum oder wie es das tut.

    
lesmana 21.08.2011, 08:13
0

Es ist nicht die beabsichtigte Verwendung von vi , um Eingaben von stdin zu übernehmen.

Wie auch immer, Sie können Zeilenumbrüche mit

erneut erhalten
stty sane

ohne das Terminal zurückzusetzen.

    
enzotib 21.08.2011 08:15

Tags und Links