私はある時点で_files -W $somevar -/
完成のために使用する完成関数を書いています$somevar
。簡単のために、$HOME/.local/lib
そこに別のPythonバージョンのサブディレクトリがあり、実際に完成したい$HOME/.local/lib/
Pythonバージョンディレクトリがあるとしましょう。
_files -W $HOME/.local/lib -/
ディレクトリツリーは次のとおりです。
.local
├── lib
│ ├── python3.5
│ │ └── site-packages
│ │ ├── somepackage
│ │ ├── somepackage-1.0.1-py2.7.egg-info
│ │ ├── someotherpackage
│ │ └── someotherpackage-1.0.11-py2.7.egg-info
│ ├── python3.6
│ │ └── site-packages
│ │ ├── somepackage
│ │ │ └── __pycache__
│ │ ├── somepackage-0.1-py3.6.egg-info
│ │ ├── someotherpackage
│ │ │ └── __pycache__
│ │ ├── someotherpackage-2018.4.16.dist-info
...
mycommand <TAB>
上記の補完を使用して、提案が現在であることを示し、タブ補完を通じて末尾のスラッシュを挿入するpython3.5/
とpython3.6/
、バージョンを選択すると、補完に追加の提案が表示されますpython3.5/site-package
。これは実際に存在するディレクトリなので、正しい動作です。私のユースケースでは、ディレクトリ3に移動したくなく、$ HOME / .local / libから直接ディレクトリを完成したいと思います。組み込みの完成機能を使用して目次を完成させることなく、目次を簡単に完成させる方法はありますか?または、グローバル式を使用して$HOME/.local/lib/*(/)
不要な部分を削除する必要がありますか?
答え1
_files -W $HOME/.local/lib -/ -S "" -F "*/*"
仕事をしました。-S ""
サフィックスの追加を抑制し/
、_F "*/*"
サブディレクトリを除外しました(_path_files
そしてcompadd
)).
-F
スタイルを無視することになりますがignored-patterns
、これはこのアプローチのマイナーな欠点です。より良い方法があるかもしれません。