Почему терминал не отображает новые строки?

16

Например, когда я набираю следующую команду,

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

даже завернутый в другую оболочку,

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

и вернулся из Vim, теперь больше не будет отображаться возврат каретки.

Как я могу сделать так, чтобы он снова отображал новые строки? (Без выхода.)

Xiè Jìléi
источник
обязательное замечание о переходе на emacs :)
Dang Khoa

Ответы:

36

попробуйте один или оба из них:

  • введите ctrl+c, затем введите reset, затем нажмите enter.
  • введите ctrl+c, затем введите stty sane, затем нажмите enter.

ctrl+cчтобы очистить любые другие символы , которые Вы могли бы типизированных в командной строке.

resetили stty saneобычно исправляет испорченный терминал. Прочитайте справочную страницу resetи sttyдля получения дополнительной информации.

Обратите внимание, что, если терминал испорчен достаточно, то это может быть даже не так ctrl+cили enterбудет работать, как ожидалось. Есть и другие способы ввода символов, но они включают древнюю темную магию. В этом случае обычно проще просто закрыть терминал и запустить другой.

Мое понимание внутренней работы терминала недостаточно глубоко, чтобы объяснить, почему или как он это делает.

lesmana
источник
4

Он не предназначен для viполучения ввода от стандартного ввода.

Во всяком случае, вы можете получить переводы строки снова с

stty sane

без сброса терминала.

enzotib
источник