web-dev-qa-db-fra.com

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

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 revenu de Vim, maintenant il n’affiche plus le retour chariot.

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

15
Xiè Jìléi

essayez un ou les deux:

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

le ctrl+c efface tous les autres caractères que vous avez éventuellement tapés dans la ligne de commande.

reset ou stty sane corrige généralement un terminal en panne. Lisez la page de manuel de reset et stty pour plus d’informations.

Notez que si le terminal est suffisamment endommagé, il se peut que même ctrl+c ou enter ne fonctionne pas 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 le fait.

31
lesmana

Ce n'est pas l'utilisation prévue de vi pour prendre une entrée de stdin.

Quoi qu’il en soit, vous pouvez obtenir de nouvelles lignes avec

stty sane

sans réinitialiser le terminal.

3
enzotib