2

Я пишу программу, которая печатает цветные линии, и чем больше я делаю с ней, тем больше у меня возникают проблемы с переносом строк.

Это своего рода терминал, написанный на php, вот подсказка:

$return = readline("\033[44m\033[1;37m{$this->text}>>\033[0m ");

Если я прокручиваю историю, мой текст сбивается на 10 символов, а если я набираю 21 символ и удаляю один, он очищает всю строку и начинает удалять символы из строки выше. Это на консоли шириной 47 столбцов

Если я попытаюсь добавить побеги

$return = readline("\[\033[44m\033[1;37m\]{$this->text}>>\[\033[0m\] ");

затем он печатает скобки ... даже если я добавлю двойную обратную косую черту.

\[\][timer]>>\[\] 

Я нахожу то же самое для echo -e , я действительно не уверен, что происходит.

И наконец, если я изменю PS1, он работает просто отлично.

[mike@crest ~]$ export PS1="\[\033[44m\033[1;37m\][timer]>>\[\033[0m\] "
[timer]>>

Что мне здесь не хватает?

1 ответ1

0

Согласно http://mywiki.wooledge.org/BashFAQ/053, опция checkwinsize может потребоваться при просмотре истории команд:

shopt -s checkwinsize

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