Як я можу налаштувати систему завершення файлу zsh для завершення «підроблених» файлів за певних обставин?
Точніше, файлова система AVFS розкриває архіви як каталоги, створюючи "підроблений каталог" поруч із кожним архівом. За замовчуванням він копіює всю ієрархію каталогів під її точкою монтажу ~/.avfs
. Крім того, під ~/.avfs
кожним архівом, таким як /tmp/foo.zip
, крім самого архівного файлу ~/.avfs/tmp/foo.zip
, є каталог, ~/.avfs/tmp/foo.zip#
який називається, який розкриває вміст архіву. Однак цей додатковий каталог не відображається в списку ~/.avfs/tmp
: він існує лише при прямому запиті. (Це схоже на те, як працюють деякі автовиробники.)
mountavfs
cd ~/.avfs/tmp/foo.zip\#
Коли я набираю таку команду, як зазначена вище, foo.zip#
не відображається як завершення під ~/.avfs/tmp/
, оскільки немає такого каталогу. Як я можу сказати zsh, що всякий раз, коли є файл, повний шлях якого $arc
відповідає ~/.avfs/**/*.(tgz|zip)
¹, він повинен робити вигляд, що існує названий каталог ${arc}#
?
(Зверніть увагу, що я хочу, щоб завершення працювало з кожним викликом _files
або _dirs
, не тільки з cd
командою. Я вважаю за краще не дублювати код _files
функції, якщо це можливо.)
¹ та всі інші розширення
/path/to/foo
видно як ~/.avfs/path/to/foo
.
avfs
. Якщо він представив #
запис каталогу за замовчуванням для будь-яких файлів, які відповідали рядкам, які він підтримує, або навіть магія перевірила файли в каталозі на те, що потрібно, щоб мати #
запис, то завершення буде просто працювати. Я здогадуюсь, що це буде хіт продуктивності для чогось такого, як, find
як зараз, він би проходив через стислі файли.