Làm cách nào tôi có thể điều chỉnh hệ thống hoàn thành của zsh để hoàn thành các tập tin giả mạo trong một số trường hợp?
Chính xác hơn, hệ thống tập tin AVFS trưng bày các tài liệu lưu trữ dưới dạng các thư mục bằng cách tạo một thư mục giả mạo của hồi giáo bên cạnh mỗi kho lưu trữ. Theo mặc định, nó sao chép toàn bộ hệ thống phân cấp thư mục dưới điểm gắn kết của nó ~/.avfs
. Hơn nữa, bên dưới ~/.avfs
, đối với mọi tệp lưu trữ, chẳng hạn như /tmp/foo.zip
, ngoài tệp lưu trữ ~/.avfs/tmp/foo.zip
, có một thư mục được gọi là ~/.avfs/tmp/foo.zip#
hiển thị nội dung của tệp lưu trữ. Tuy nhiên thư mục bổ sung này không xuất hiện trong danh sách ~/.avfs/tmp
: nó chỉ tồn tại khi được yêu cầu rõ ràng. (Điều này tương tự như cách một số máy tự động hoạt động.)
mountavfs
cd ~/.avfs/tmp/foo.zip\#
Khi tôi gõ một lệnh như lệnh trên, foo.zip#
sẽ không xuất hiện dưới dạng hoàn thành ~/.avfs/tmp/
, vì không có thư mục như vậy. Làm thế nào tôi có thể nói với zsh rằng bất cứ khi nào có một tệp có đường dẫn đầy đủ $arc
khớp với ~/.avfs/**/*.(tgz|zip)
, thì nên giả vờ rằng có một thư mục được gọi ${arc}#
?
(Lưu ý rằng tôi muốn hoàn thành hoạt động với mọi cuộc gọi đến _files
hoặc _dirs
, không chỉ cho cd
lệnh. Tôi không muốn phải sao chép mã của _files
hàm, nếu có thể.)
¹ và tất cả các phần còn lại của các phần mở rộng
/path/to/foo
hiển thị như ~/.avfs/path/to/foo
.
avfs
. Nếu nó trình bày #
mục nhập thư mục mặc định cho bất kỳ tệp nào khớp với chuỗi mà nó hỗ trợ hoặc thậm chí ma thuật đã kiểm tra các tệp trong thư mục để biết mục nào cần có #
, thì việc hoàn thành sẽ chỉ hoạt động. Tôi đoán sẽ có một cú đánh hiệu suất cho một cái gì đó giống find
như bây giờ sẽ đi qua các tệp nén.