タブ完了時のファイル一覧

タブ完了時のファイル一覧

tab completionPythonコードを実行しようとすると、bashシェルで奇妙な動作が発生します。

複数の文字の後にプレフィックス引数を使用すると、-タブ補完を使用してファイルを選択できますが、1文字だけを使用すると完全に失敗します。ここにいくつかの例があります。

#failed 
python prepare_yaml_files.py -i in<tab><tab>

#succeed: though `-in` is not valid 
python prepare_yaml_files.py -in in<tab><tab>

#succeed: valid argument 
python prepare_yaml_files.py --in in<tab><tab>

なぜこれが起こるのか知りたいです。.bashrcこの問題を解決するには、いくつかの基本設定を指定する必要がありますか?

ベストアンサー1

私の推測では、間違ったオートコンプリートスクリプトが発生したことです。 Debianを見た結果/usr/share/bash-completion/completions/pythonで終わるファイル名のみがオートコンプリートされている場合、または前の単語がのバリアントまたは単一文字オプションの場合にのみオートコンプリートさ.pyれます.py.pyopython

-Xここでは、インタプリタのすべての引数がコマンドを実行する前に提供され、まだスクリプト名を提供する必要があると仮定します。したがって、.py一致するファイルのみが表示されます。.py[oc]

を使用してプログラム可能なオートコンプリートを完全に無効にすることができますshopt -u progcomp。より良い修正を行うには、オートコンプリートスクリプトを編集する必要があります。

私が見ているルールは次のとおりです。完全に説明したかどうかはわかりません。

    $以前のケース
        [...]
        !(?(*/)python*([0-9.])|-?))
            [[ $cword -lt 2 || ${words[cword-2]} != -@(Q|W) ]] \
                && _filedir
            ;;;

おすすめ記事