LS_COLORSで「mi」設定がpostgresqlとPythonタブの完成に影響するのはなぜですか?

LS_COLORSで「mi」設定がpostgresqlとPythonタブの完成に影響するのはなぜですか?

LS_COLORSしたがって、次のカスタム設定があります。

mi=05;01;33:
or=05;01;33:

miこれは、lsリストビューの右側の列にファイルが欠落している場合、or通常のlsモードでファイルが見つからない場合、またはリストモードで左側の列にファイルがありません。上記の設定は両方のフラッシュを明るい黄色にします。フラッシュをオンにすることが欠けているリンクを思い出させる最も確実な方法であり、うまく動作すると思うので、このように設定しました。

しかし、問題は、Pythonをインタラクティブモードで実行し、import reそのようにタブの完成を要求するときですre.[tab key]。単純なリストを取得する代わりに、その中のすべての項目が提案に適用されmiます。LS_COLORSだから私は合理的な速度で読むことをほとんど不可能にする点滅するテキストでいっぱいの画面を持っています。

postgresqlインタラクティブモードコンソールでタブ補完を使用しても同じことが起こります。 Pythonと全く同じです。他のほとんどのプログラムや同様のプログラムは大丈夫で、bashの完了も大丈夫です。

これらのプログラムはそれを使用してls出力フォーマットを指定しますか?現時点では、mi問題を解決するために別のものに戻しています。それでも通過できるので、あまり問題になりませんor。しかし、これが起こる理由とそれを防ぐことができるかどうかを知りたいです。

答え1

GNUリードラインご使用の際は以下の方法でご確認いただけます。基本モジュールのリスト:

$ python3
>>> import sys
>>> sys.modules.keys()
dict_keys([...,'readline', 'atexit', 'rlcompleter'])

ReadlineはLS_COLORS.fromを使用しますman 3 readline

カラー統計(オフ)
on に設定すると、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")

関連情報