5

Поскольку мы обновляли Bash до 4.3.27 всякий раз, когда я набираю длинную команду, если она достигает конца окна терминала, вместо продолжения в новой строке, она перезаписывает ту же строку, используя «>» в начале, чтобы отметить, что линия была завернута (я могу идти вперед и назад по линии. Я имею в виду, это не просто перезаписывает текущую строку)

Что-то вроде:

Допустим, мой терминал имеет ширину 30 символов

Перед обновлением user@HOSTNAME ~$ echo "hello w orld!"

После обновления <ME ~$ echo "hello world!"

Ничего не изменилось в моем окружении с момента обновления bash. $BASHOPTS показывает те же значения, что и раньше, кроме "complete_fullquote"

Как я могу восстановить "многострочное поведение"?

С уважением

2 ответа2

5

Измените свою переменную TERM. Например, если я сделаю

~$ export TERM=xterm

Тогда поведение хорошо переносится, как до вашего обновления

С

~$ export TERM=linux

Поведение после обновления

Этот пост на Askubuntu может помочь вам, если у вас есть цветной PS1.

3

Короткий ответ:

echo "set horizontal-scroll-mode off" >> ~/.inputrc

Немного дольше отвечу:

В интерактивной оболочке bash пользовательский ввод обрабатывается библиотекой READLINE (ищите ее на справочной странице bash, чтобы получить больше информации). В документации по bash поведение по умолчанию заключается в переносе на новую строку, когда ввод длиннее ширины экрана. Вы можете переопределить это значение по умолчанию, установив переменную horizontal-scroll-mode .

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

  • файл, на который указывает $ INPUTRC, чтобы увидеть, установлен ли режим горизонтальной прокрутки. Стоит отметить, что переменная readline устанавливается, если она читает пустой, ноль, on (без учета регистра) или 1.
  • параметры конфигурации, которые вы использовали, если вы скомпилировали свою версию bash

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .