Команда переносится на одну строку после 80 символов

8

У меня раздражающая проблема с Minicom, подключенным к последовательной консоли к компьютеру Yocto Linux.

Команда, которую я ввожу, переносится на одной строке после 80-го символа. С этим становится очень неудобно работать. Все, что я ввел в начале строки, перезаписывается последними символами этой строки.

Соединение SSH к той же машине работает просто отлично. После 80-ых символов ssh переходит на следующую строку.

Это настройка stty:

stty -a
speed 115200 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff
-iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

Опция -w миникома не имеет никакого эффекта. Все то же поведение

minicom -w

resizeКоманда не доступна на этой машине. К какой упаковке это относится? Может быть, я могу установить его.

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

Оливер Г.
источник
Что такое TERMпеременная окружения при подключении через minicom?
thrig
echo $ TERM xterm
Оливер Дж.
показать выход stty -aказненного изнутриminicom
Аркадиуш Драбчик
Работает ли minicomс -wпомощью?
Аркадиуш Драбчик
Если я использую puttyвместо программы minicomпоследовательного терминала и включаю настройку терминала «неявный LF в каждом CR», поведение исчезнет.
Оливер Дж.

Ответы:

4

Когда вы подключены через последовательную линию, система не может согласовать размер окна с терминалом (NAWS - согласование размера окна - RFC 1073 ). В этом случае вы можете получить системное значение по умолчанию для размера или даже просто нули. Любой из них может привести к путанице в редакторе строк оболочки, который должен знать фактическую ширину терминала, чтобы работать с его функцией обхода.

bash запутывается, думая, что он обернут из-за функции автопереноса терминала и перемещается в начало текущей (неправильной) строки как часть редактирования / отображения строки.

В качестве обходного пути, большинство терминалов (включая minicom - см. Источник ), которые вы использовали бы с последовательным интерфейсом, могут реагировать на escape-последовательность отчета о положении курсора, используемую resizeдля определения размера окна - и в качестве побочного эффекта задают представление системы о насколько велико ваше окно терминала.

Томас Дики
источник
1
Мне все еще было бы любопытно, почему это происходит в той же строке, а не в следующей строке.
dirkt
3

Это сработало для меня. Целевая оболочка должна быть настроена для проверки размера окна и правильного размера консоли вашей консоли. После подключения через серийный номер с помощью замазки или миникома:

shopt -s checkwinsize
resize
Марк Индерхис
источник
Кажется, это сработало для меня, но не ясно, как это было сделано или как применять его в качестве общего правила.
TheMeaningfulEngineer
Добавьте это к вашему .bashrc на цели: "shopt -s checkwinsize" и "eval` resize`"
Марк Inderhees