Bazı durumlarda “sahte” dosyaları tamamlamak için zsh'nin tamamlama sistemini nasıl ayarlayabilirim?
Daha doğrusu, AVFS dosya sistemi her arşivin yanında bir "sahte dizin" oluşturarak arşivleri dizin olarak gösterir. Varsayılan olarak, tüm dizin hiyerarşisini bağlama noktasının altında çoğaltır ~/.avfs
. Ayrıca, ~/.avfs
arşiv dosyası gibi her arşiv dosyası /tmp/foo.zip
için arşivin içeriğini gösteren ~/.avfs/tmp/foo.zip
bir dizin vardır ~/.avfs/tmp/foo.zip#
. Ancak bu fazladan dizin aşağıdaki listede görünmemektedir ~/.avfs/tmp
: yalnızca açıkça talep edildiğinde bulunur. (Bu, bazı otomatik sayaçların nasıl çalıştığına benzer.)
mountavfs
cd ~/.avfs/tmp/foo.zip\#
Yukarıdaki gibi bir komut yazdığımda , böyle bir dizin olmadığı için foo.zip#
altında tamamlama olarak görünmüyor ~/.avfs/tmp/
. Zsh'ye, tam yolu ¹ ile $arc
eşleşen bir dosya ~/.avfs/**/*.(tgz|zip)
olduğunda, adı verilen bir dizin olduğunu varsayması gerektiğini nasıl söyleyebilirim ${arc}#
?
(Tamamlamanın , yalnızca komut için değil, her çağrıyla _files
veya istemesiyle çalışmasını istediğimi unutmayın . Mümkünse , işlev kodunu çoğaltmamam gerektiğini tercih ederim .)_dirs
cd
_files
¹ ve tüm uzantıları
/path/to/foo
görünür ~/.avfs/path/to/foo
.
avfs
. #
Desteklediği dizelerle eşleşen herhangi bir dosya için varsayılan dizin girişini sunmuşsa veya sihir bile bir #
giriş olması gereken dosyaları bir dizindeki dosyaları sınamışsa, tamamlanma işe yarayacaktır. Sanırım find
şimdi sıkıştırılmış dosyalar arasında dolanacak gibi bir şey için bir performans vurgusu olacaktı.