2015-08-12 3 views
0

Я могу печатать цветовые коды 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, имеют те же проблемы)

+4

'\ [' и '\]' интерпретируются (и полезны) только внутри значения переменных 'PS?' В 'bash'. В других контекстах вы несете ответственность за идентификацию и учет невидимых символов, напечатанных на терминале. – chepner

+0

@chepner - Это именно то, для чего я его использую, инструмент, такой как hg-prompt для быстрой настройки подсказки bash. – GoogieK

+1

Тогда вы просто хотите передать эти символы буквально. Отображение их не делает ничего особенного; это 'bash' при вычислении длины значения' PS1', который не содержит ничего между ними в своем счете. – chepner

ответ

2

Не используйте [] вокруг цветовых кодов. просто создайте переменные, например, ниже.

red = '\033[31m' 
print red 
0

Основываясь на комментарий по @chepner - Моя проблема привели к изменению переменной PS1 в терминале, чтобы получить цветную подсказку.

Непосредственно печать \[ и \] из питона показал эти символы на экране, но при передаче PS1, персонажи были невидимы и цветной текст отображается правильно и правильно наматываются на экране.

Смежные вопросы