Я использую afuse для автоматического монтирования других хостов в мою локальную файловую систему с помощью sshfs. Вот так:
afuse -o timeout=30 -o mount_template=sshfs -C %r:/ %m -o unmount_template=fusermount -u -z %m ~/remote/
Это прекрасно работает, но я хотел бы иметь возможность автозаполнения команд/TAB, используя мой каталог ~/remote. Zsh по понятным причинам думает, что ~/remote пуст, поскольку afuse — это волшебная виртуальная файловая система FUSE. После того, как я набрал хост вручную, подкаталоги работают нормально. Например, ~/remote/host/[TAB] работает нормально.
Большинство руководств по zsh compdef сосредоточены на создании пользовательского завершения для вашей пользовательской команды. Это не совсем то, что я хочу.
Я пытался использовать compdef, чтобы переопределить завершение этого конкретного каталога в моем файле hosts (используя встроенную функцию завершения _hosts), но, насколько я понимаю, compdef работает для каждой команды. Я хочу, чтобы мой завершитель работал над всеми командами, пытающимися выполнить обычное завершение файла/каталога в этом каталоге.
Такое ощущение, что это настолько просто, что это однострочник, если бы я только знал, как это сделать. Как я могу это сделать?