Почему установка mi в LS_COLORS влияет на завершение вкладок postgresql и python?
Итак, у меня есть индивидуальная LS_COLORS
настройка, и в ней есть следующее:
mi=05;01;33:
or=05;01;33:
mi
предназначен для отсутствующих файлов в правом столбце при просмотре списка ls и or
для отсутствующих файлов в обычном режиме ls или слева в режиме списка. В приведенном выше примере оба индикатора мигают ярко-желтым цветом. Я установил это так, потому что думал, что мигание будет самым очевидным способом предупредить себя о недостающем звене, что отлично работает.
Но проблема в том, что когда я запускаю питон в интерактивном режиме и запрашиваю завершение табуляции, например, import re
тогда re.[tab key]
. Вместо того , чтобы просто получить нормальный список , что находится в mi
в LS_COLORS
будет применяться к предложениям. Таким образом, я получаю экран, полный мигающего текста, из-за чего границу невозможно читать с любой разумной скоростью.
То же самое происходит, когда я использую автодополнение в консоли интерактивного режима postgresql. Точно так же, как питон. Однако большинство других программ или подобных им подходят, и завершение bash вполне нормально.
Используются ли эти программы ls
для форматирования своего вывода? В настоящее время я просто mi
вернулся к чему-то другому, чтобы обойти проблему, и это не имеет особого значения, потому что я все еще вижу неработающие ссылки через or
. Но мне было бы очень любопытно узнать, почему это происходит, и могу ли я это остановить.
Ответы
Используется строка чтения GNU , что можно подтвердить перечислением модулей по умолчанию :
$ python3
>>> import sys
>>> sys.modules.keys()
dict_keys([...,'readline', 'atexit', 'rlcompleter'])
Readline, в свою очередь, использует LS_COLORS
. От man 3 readline
,
цветная статистика (Выкл.)
Если установлено значение Вкл., строка чтения отображает возможные завершения, используя разные цвета для обозначения их типа файла. Определения цвета берутся из значения переменной среды LS_COLORS.
Если вы не уверены, вернитесь к интерактивному сеансу Python и введите
>>> a<TAB><TAB>
abs( all( and any( as ascii( assert async await
>>> import readline
>>> readline.parse_and_bind("set colored-stats off")
>>> a<TAB><TAB>
abs( all( and any( as ascii( assert async await
После отключения цветной статистики предлагаемые завершения ( bs(
, ll(
и т. Д.) Должны иметь обычный цвет терминала. Префикс по- a
прежнему наследует цвет, LS_COLORS
и вы также можете отключить его с помощью
readline.parse_and_bind("set colored-completion-prefix off")