LINUX.ORG.RU

Двухстрочное приглашение в bash и хоткеи при редактировании...

 ,


0

1

На одной из машин стало слишком тесно в однострочном промпте и перешёл на двухстрочный. И постоянно раздражает такой баг. Часто при редактировании сдвиг влево во второй строке останавливается у какого-то (принцип не уловил) из символов в первой. Например, если есть двоеточие — то у него. Есть квадратные скобки — у закрывающейся. Это если, например, нажать home. Если просто отматывать стрелкой влево, то с ней нормально доходит до начала строки. А вот если нажать home, то потом и стрелка влево тоже не пашет. Нифига непонятно, в общем :)

Пример приглашения: https://gist.github.com/Balancer/a9cf9393a17f557a5aeb

Есть мысли, куда копать? Альтернативные шеллы не предлагать :)

★★★★★

Альтернативные шеллы не предлагать

фу таким быть

zolden ★★★★★
()

У тебя ведь там в приглашении unicode символы, так ведь? («┌─», «└─>») — Вот от них (multibyte) скорей всего и глюки.

beastie ★★★★★
()
Ответ на: комментарий от beastie

Вот от них (multibyte) скорей всего и глюки.

Поменял на обычные — не помогло :-/ Но, вообще, направление правильное. Попробовал убрать все украшательства — стало работать как нужно. Начал считать с поочерёдной уборкой, вышло, что до какой-то совокупной длины символов искейп-последовательности (около 4-х смен цвета) всё работает от, потом — по ~5 символов кривого смещения с каждой искейп-последовательности.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

При чём зависимость допустимого размера искейп-последовательности какая-то непонятная. То 4 смены цвета позволяет, то только две :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Что-то у меня там, на заднем фоне, всплывает ... для баша были пару специальных обёрток для escape последовательностей, что бы он считал их длину правильно: \[ и \].

http://stackoverflow.com/questions/17432993/adding-ansi-color-escape-sequence...

Т.е. для смены цвета надо использовать не \033[0;33m, а \[\033[0;33m\]. Иначе он ошибается в длине.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от beastie

для баша были пару специальных обёрток для escape последовательностей, что бы он считал их длину правильно: \[ и \].

Ага, только что догуглил до этого. Чтобы bash не учитывал длину искейп-последовательностей, их надо в эту пару заключать. Теперь — работает. Спасибо за наводку :)

KRoN73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.