在某些情况下,如何调整 zsh 的完成系统以完成“假”文件?
更准确地说,AVFS文件系统通过在每个存档旁边创建一个“假目录”来将存档公开为目录。默认情况下,它复制其挂载点下的整个目录层次结构~/.avfs
。此外,在 下~/.avfs
,对于每个存档文件(例如 )/tmp/foo.zip
,除了存档文件本身之外~/.avfs/tmp/foo.zip
,还有一个称为~/.avfs/tmp/foo.zip#
公开存档内容的目录。然而,这个额外的目录没有出现在 : 的列表中~/.avfs/tmp
,它只在明确请求时才存在。(这类似于某些自动挂载器的操作方式。)
mountavfs
cd ~/.avfs/tmp/foo.zip\#
Run Code Online (Sandbox Code Playgroud)
当我键入类似上面的命令时,foo.zip#
在 下不会显示为完成~/.avfs/tmp/
,因为没有这样的目录。我怎么能告诉 zsh 每当有一个文件的完整路径$arc
匹配~/.avfs/**/*.(tgz|zip)
¹ 时,它应该假装有一个名为 的目录${arc}#
?
(请注意,我希望完成每次调用_files
or 时都可以使用_dirs
,而不仅仅是cd
命令。_files
如果可能,我宁愿不必复制函数的代码。)
¹和所有其余的扩展