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
。しかし、なぜこれが起こっているのか、そして私がそれを止めることができるかどうかを知りたいと思います。
回答
デフォルトのモジュールをリストすることで確認できるように、 GNUreadlineが使用されています。
$ python3
>>> import sys
>>> sys.modules.keys()
dict_keys([...,'readline', 'atexit', 'rlcompleter'])
Readlineは、順番に、を使用しLS_COLORS
ます。からman 3 readline
、
Colored-stats(Off)
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")