Pourquoi le terminal n'affiche-t-il pas de nouvelles lignes?

16

Par exemple, lorsque je tape la commande suivante,

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

même enveloppé dans une autre coquille,

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

et retourné de Vim, maintenant il n'affichera plus le retour chariot.

Comment puis-je faire pour qu'il affiche à nouveau les nouvelles lignes? (Sans sortie.)

Xiè Jìléi
la source
remarque obligatoire pour passer à emacs :)
Dang Khoa

Réponses:

35

essayez l'un ou les deux:

  • tapez ctrl+c, puis tapezreset, puis appuyez sur enter.
  • tapez ctrl+c, puis tapez stty sane, puis appuyez sur enter.

l' ctrl+cest d'effacer tous les autres caractères que vous pourriez avoir tapé dans la ligne de commande.

resetou stty sanecorrige généralement un terminal foiré. Lisez la page de manuel de resetetstty pour plus d'informations.

Notez que si le terminal est suffisamment gâché, il se peut que même pas ctrl+couenter fonctionne comme prévu. Il existe encore d'autres méthodes pour saisir des caractères, mais elles impliquent une ancienne magie noire. Dans ce cas, il est généralement plus facile de simplement fermer le terminal et d'en démarrer un autre.

Ma compréhension du fonctionnement interne d'un terminal n'est pas assez profonde pour expliquer pourquoi ou comment il fait cela.

lesmana
la source
4

Ce n'est pas l'usage prévu pour vi recevoir des données de stdin.

Quoi qu'il en soit, vous pouvez à nouveau obtenir des nouvelles lignes avec

stty sane

sans réinitialiser le terminal.

enzotib
la source