Jak mogę ulepszyć system kompletacji zsh, aby w niektórych okolicznościach uzupełniać „fałszywe” pliki?
Dokładniej, system plików AVFS udostępnia archiwa jako katalogi, tworząc „fałszywy katalog” obok każdego archiwum. Domyślnie replikuje całą hierarchię katalogów pod punktem montowania ~/.avfs. Ponadto pod ~/.avfskażdym plikiem archiwum, takim jak /tmp/foo.zipsam plik archiwum ~/.avfs/tmp/foo.zip, znajduje się katalog o nazwie, ~/.avfs/tmp/foo.zip#który ujawnia zawartość archiwum. Jednak ten dodatkowy katalog nie pojawia się na liście ~/.avfs/tmp: istnieje tylko na wyraźne żądanie. (Jest to podobne do działania niektórych automounterów.)
mountavfs
cd ~/.avfs/tmp/foo.zip\#
Kiedy wpisuję polecenie takie jak powyższe, foo.zip#nie pojawia się jako uzupełnienie pod ~/.avfs/tmp/, ponieważ nie ma takiego katalogu. Jak mogę powiedzieć zsh, że ilekroć jest plik, którego pełna ścieżka jest $arczgodna ~/.avfs/**/*.(tgz|zip)¹, powinien udawać, że istnieje katalog o nazwie ${arc}#?
(Zauważ, że chcę, aby zakończenie działało z każdym wywołaniem _fileslub _dirsnie tylko dla cdpolecenia. Wolę nie kopiować kodu _filesfunkcji, jeśli to możliwe.)
¹ i wszystkie pozostałe rozszerzenia
/path/to/foojest widoczny jako ~/.avfs/path/to/foo.
avfs. Jeśli przedstawiłby domyślną #pozycję katalogu dla dowolnych plików, które pasowałyby do obsługiwanych przez nią łańcuchów, a nawet magicznie przetestował pliki w katalogu pod kątem tego, co wymagało posiadania #pozycji, wówczas zakończenie byłoby po prostu działać. Wydaje mi się, że byłby to hit wydajnościowy dla czegoś takiego, findjak gdyby teraz przeszukiwał skompresowane pliki.