zshで固定深さを持つフルディレクトリ名

zshで固定深さを持つフルディレクトリ名

私はある時点で_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、これはこのアプローチのマイナーな欠点です。より良い方法があるかもしれません。

関連情報