¿Por qué la configuración de 'mi' en LS_COLORS afecta la finalización de las pestañas postgresql y python?
Entonces tengo una LS_COLORS
configuración personalizada , y en eso tengo lo siguiente:
mi=05;01;33:
or=05;01;33:
mi
es para archivos faltantes en la columna de la derecha cuando está en la vista de lista de ls, y or
es para archivos faltantes en modo ls normal, o en la izquierda en modo de lista. Lo anterior lo configura para que ambos parpadeen en amarillo brillante. Lo configuré así porque pensé que tenerlo parpadeando sería la forma más obvia de alertarme sobre un eslabón perdido, lo cual funciona muy bien.
Pero el problema es cuando ejecuto Python en modo interactivo y solicito completar la pestaña, por ejemplo, import re
entonces re.[tab key]
. En lugar de simplemente obtener una lista normal de lo que está en mi
en LS_COLORS
obtiene aplicado a las sugerencias. Así que termino con una pantalla llena de texto parpadeante que hace que sea casi imposible de leer a un ritmo razonable.
Lo mismo sucede cuando uso la finalización de tabulación en la consola de modo interactivo de postgresql. Exactamente lo mismo que Python. Sin embargo, la mayoría de los otros programas o similares están bien, y la finalización de bash está bien.
¿Están usando estos programas ls
para formatear su salida? Actualmente, he cambiado de mi
nuevo a otra cosa para solucionar el problema, y realmente no importa porque todavía puedo ver enlaces rotos a través de or
. Pero tendría mucha curiosidad por saber por qué está sucediendo esto y si puedo detenerlo.
Respuestas
Se está utilizando la línea de lectura GNU , como se puede confirmar enumerando los módulos predeterminados :
$ python3
>>> import sys
>>> sys.modules.keys()
dict_keys([...,'readline', 'atexit', 'rlcompleter'])
Readline, a su vez, utiliza LS_COLORS
. desde man 3 readline
,
color-stats (Off)
Si se establece en On, readline muestra posibles finalizaciones usando diferentes colores para indicar su tipo de archivo. Las definiciones de color se toman del valor de la variable de entorno LS_COLORS.
Si no está convencido, vuelva a la sesión interactiva de Python y escriba
>>> 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
Después de desactivar-estadísticas de colores, las terminaciones sugeridos ( bs(
, ll(
, etc.) deben estar en color normal de la terminal. El prefijo a
aún hereda el color de LS_COLORS
y también puede deshabilitarlo con
readline.parse_and_bind("set colored-completion-prefix off")