Я могу печатать цветовые коды ANSI от python до терминала, используя код print "\033[31m red text \033[0m"
, который печатает красный текст в красном цвете.Как распечатать [и ] на терминал из python?
Однако при обёртывании текста терминал по-прежнему считает невидимые управляющие символы, поэтому текст обертывается неправильно, действуя так, как будто линия длиннее, чем на самом деле. Reverse-i-search также действует странно, отображая текст, который не совпадает с тем, что находится под курсором.
Следующая ссылка (и другие) https://wiki.archlinux.org/index.php/Color_Bash_Prompt#Regular_user_2, кажется, указывает, что мне нужно обернуть цвета коды в \[
и \]
, так что терминал может поместить курсор на экране устройства. Однако, когда I print "\[\033[31m\]"
в python, скобки появляются на экране.
Как я могу отправить управляющие символы \[
и \]
на терминал из python?
(Я обнаружил, что цветные библиотеки, такие как colored
, имеют те же проблемы)
'\ [' и '\]' интерпретируются (и полезны) только внутри значения переменных 'PS?' В 'bash'. В других контекстах вы несете ответственность за идентификацию и учет невидимых символов, напечатанных на терминале. – chepner
@chepner - Это именно то, для чего я его использую, инструмент, такой как hg-prompt для быстрой настройки подсказки bash. – GoogieK
Тогда вы просто хотите передать эти символы буквально. Отображение их не делает ничего особенного; это 'bash' при вычислении длины значения' PS1', который не содержит ничего между ними в своем счете. – chepner