Por que definir 'mi' em LS_COLORS afeta o postgresql e a conclusão da guia python?
Portanto, tenho uma LS_COLORS
configuração personalizada e, nela, tenho o seguinte:
mi=05;01;33:
or=05;01;33:
mi
é para arquivos ausentes na coluna direita quando na visualização de lista do ls, e or
é para arquivos ausentes no modo ls normal, ou à esquerda no modo de lista. A configuração acima define que ambos pisquem em amarelo brilhante. Eu defini assim porque pensei que ter o flash seria a maneira mais óbvia de me alertar sobre um elo perdido, o que funciona muito bem.
Mas o problema é quando executo o python no modo interativo e peço o preenchimento da guia, por exemplo, import re
então re.[tab key]
. Em vez de ficar apenas uma lista normal, o que está em mi
em LS_COLORS
é aplicado às sugestões. Então, acabo com uma tela cheia de texto piscando, o que torna quase impossível ler a qualquer taxa razoável.
A mesma coisa acontece quando eu uso o preenchimento de tabulação no console do modo interativo do postgresql. Exatamente o mesmo que python. A maioria dos outros programas ou similares funcionam, e a conclusão do bash também.
Esses programas estão usando ls
para formatar sua saída? No momento, acabei de mudar de mi
volta para outra coisa para contornar o problema, e isso realmente não importa porque ainda posso ver links quebrados via or
. Mas estou muito curioso para saber por que isso está acontecendo e se posso impedir.
Respostas
GNU readline está sendo usado, como pode ser confirmado listando os módulos padrão :
$ python3
>>> import sys
>>> sys.modules.keys()
dict_keys([...,'readline', 'atexit', 'rlcompleter'])
Readline, por sua vez, usa LS_COLORS
. De man 3 readline
,
colored-stats (Off)
Se definido como On, readline exibe as conclusões possíveis usando cores diferentes para indicar o tipo de arquivo. As definições de cores são tiradas do valor da variável de ambiente LS_COLORS.
Se você não está convencido, volte para a sessão Python interativa e digite
>>> 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
Depois de desactivar coloridas-estatísticas, as conclusões sugeridas ( bs(
, ll(
, etc.) deve ser em cor normal do terminal. O prefixo a
ainda herda a cor de LS_COLORS
e você também pode desativá-lo com
readline.parse_and_bind("set colored-completion-prefix off")