Wie kann ich das Vervollständigungssystem von zsh optimieren, um unter bestimmten Umständen "gefälschte" Dateien zu vervollständigen?
Genauer gesagt, das AVFS- Dateisystem macht Archive als Verzeichnisse verfügbar, indem neben jedem Archiv ein „falsches Verzeichnis“ erstellt wird. Standardmäßig wird die gesamte Verzeichnishierarchie unter ihrem Bereitstellungspunkt repliziert ~/.avfs. Außerdem gibt es unter ~/.avfsfür jede Archivdatei, z. B. /tmp/foo.zipneben der Archivdatei selbst ~/.avfs/tmp/foo.zip, ein Verzeichnis, ~/.avfs/tmp/foo.zip#das den Inhalt des Archivs anzeigt. Dieses zusätzliche Verzeichnis erscheint jedoch nicht in der Liste von ~/.avfs/tmp: es existiert nur auf ausdrücklichen Wunsch. (Dies ähnelt der Funktionsweise einiger Automounters.)
mountavfs
cd ~/.avfs/tmp/foo.zip\#
Wenn ich einen Befehl wie oben eingebe, foo.zip#wird er nicht als Vervollständigung angezeigt ~/.avfs/tmp/, da es kein solches Verzeichnis gibt. Wie kann ich zsh mitteilen, dass immer, wenn es eine Datei gibt, deren vollständiger Pfad $arcmit ~/.avfs/**/*.(tgz|zip)¹ übereinstimmt , so getan werden sollte, als gäbe es ein Verzeichnis mit dem Namen ${arc}#?
(Beachten Sie, dass die Vervollständigung bei jedem Aufruf von _filesoder funktionieren soll _dirs, nicht nur für den cdBefehl. _filesWenn möglich, möchte ich nicht den Code der Funktion duplizieren müssen .)
¹ und alle anderen Erweiterungen
/path/to/fooist sichtbar als ~/.avfs/path/to/foo.
avfs. Wenn der Standardverzeichniseintrag #für alle Dateien angezeigt wird , die mit den von ihm unterstützten Zeichenfolgen übereinstimmen, oder die Dateien in einem Verzeichnis von Magic auf die erforderlichen Einträge geprüft werden #, funktioniert die Vervollständigung einfach. Ich denke, es würde einen Performance-Hit für so etwas geben, findda es jetzt komprimierte Dateien durchwühlen würde.