ZSH 完成限制文件路径 方法示例相关

问题描述

我想使用 _files 来完成来自 zsh 目录的路径,但我只想允许一些特定的路径。这是我的结构的简化:

.config
├── git
│   ├── config
│   └── ignore
├── yadm
│   ├── bootstrap
│   ├── gitconfig
│   └── unignore
└── yakuakerc

给定一个可能包含上述任何文件叶子的列表, 我希望完成逐渐允许任何这些叶子以及任何父母 (实际上,路径可能有更多层次)。

方法

我尝试了以下两种方法,但是 compadd 不考虑父目录,即使我确实将它们添加到列表中,也不会按层次建议它们。
另一方面,_files 不限制自身。我试着把文件列表放在它后面,即使有 -g,但它不知何故不在乎:

compadd $(git diff-index HEAD --name-only --relative=${XDG_CONfig_HOME/$HOME\/}/)
_files -W $XDG_CONfig_HOME

git diff-index 生成自动完成允许的文件列表。

示例

当列表为 git/config yadm/bootstrap 时, 完成应提供 git/ yadm/,然后在降序时提供相应的文件

相关

Related questions 有答案,但不使用 _files,因此基本上重新实现它,而没有潜在的边缘情况处理。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)