Добавление escape-последовательностей цвета ANSI в приглашение bash приводит к неправильному положению курсора при вызове / редактировании команд

Если я установлю свою командную строку как:

export PS1='\033[0;33m[\u@\h \w]\$ \033[00m'

Цвет приглашения будет желтым, и все символы после символа «$» будут цветом терминала по умолчанию. Это то, что я ожидаю. Однако, если я вызываю командную строку и пытаюсь ее отредактировать, перемещая курсор - либо UpArrow / Ctrl-A (установить -o emacs), либо ESC K (установить -o vi), если командную строку я пытаюсь редактировать достаточно длинный, курсор не расположен в начале команды. Ввод Ctrl-A (set -o emacs) или ^ (set -o vi) не переместит курсор к тому, что я вижу как начало вызванной строки на экране. Точно так же попытка поместить курсор в конец строки (Ctrl-E или $, в зависимости от) приводит к тому, что он помещается на несколько символов после того, что кажется концом строки. Похоже, что bash сбивается с толку escape-символами, которые я добавил в приглашение. Нужно ли с этим справляться, меняя мое приглашение на монохромное, когда я хочу редактировать вызванные строки, или есть способ получить bash, чтобы правильно разрешить редактирование вызванных команд с помощью красочного приглашения?

Ответы на вопрос(1)

Ваш ответ на вопрос