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

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

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

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

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

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

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

15
задан 20 August 2011 в 20:36

2 ответа

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

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

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

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

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

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

33
ответ дан 23 November 2019 в 02:41

Это не надлежащее использование для vi взять вход от stdin.

Так или иначе можно получить новые строки снова с

stty sane

не сбрасывая терминал.

4
ответ дан 23 November 2019 в 02:41

Другие вопросы по тегам:

Похожие вопросы: