tab completion
Pythonコードを実行しようとすると、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
。.pyo
python
-X
ここでは、インタプリタのすべての引数がコマンドを実行する前に提供され、まだスクリプト名を提供する必要があると仮定します。したがって、.py
一致するファイルのみが表示されます。.py[oc]
を使用してプログラム可能なオートコンプリートを完全に無効にすることができますshopt -u progcomp
。より良い修正を行うには、オートコンプリートスクリプトを編集する必要があります。
私が見ているルールは次のとおりです。完全に説明したかどうかはわかりません。
$以前のケース [...] !(?(*/)python*([0-9.])|-?)) [[ $cword -lt 2 || ${words[cword-2]} != -@(Q|W) ]] \ && _filedir ;;;