Perché il terminale non visualizza nuove linee?


16

Ad esempio, quando digito il comando seguente,

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

anche avvolto in un altro guscio,

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

e restituito da Vim, ora non visualizzerà più il ritorno a capo.

Come posso fare per visualizzare nuovamente le nuove righe? (Senza uscita.)


osservazione obbligatoria da switch-to-emacs :)
Dang Khoa,

Risposte:


35

prova uno o entrambi:

  • genere ctrl+c , quindi digitare reset, quindi premere enter.
  • digitare ctrl+c, quindi digitare stty sane, quindi premereenter.

il ctrl+c è quello di eliminare tutti gli altri personaggi si potrebbe avere digitato nella riga di comando.

reseto di stty sanesolito corregge un terminale incasinato. Leggi la pagina man direset e sttyper maggiori informazioni.

Si noti che se il terminale è incasinato abbastanza, potrebbe non essere nemmeno così ctrl+c o enterfunzionerà come previsto. Ci sono ancora altri metodi per inserire personaggi, ma implicano un'antica magia oscura. In tal caso, di solito è più semplice chiudere il terminale e avviarne un altro.

La mia comprensione del funzionamento interno di un terminale non è abbastanza profonda da spiegare perché o come lo fa.


4

Non è l'uso previsto per viricevere input dallo stdin.

Ad ogni modo, puoi ottenere di nuovo newline con

stty sane

senza ripristinare il terminale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.