Как добавить автозаполнение пути к пользовательской функции завершения в zsh?

Я создал свою собственную функцию завершения zsh для audtool . Вот пример: –

 #compdef audtool _audtool() { local state _arguments \ '1: :->csi'\ case $state in csi) _arguments '1::( --current-song --current-song-filename --help --playlist-addurl)' ;; esac } _audtool "$@" 

Вышеупомянутая функция работает только отлично, за исключением одного небольшого сбоя, то есть после автозаполнения, когда я пытаюсь добавить путь к файлу, путь не расширяется. Я хочу спросить, почему

 audtool --playlist-addurl /h 

расширить

 audtool --playlist-addurl /home/ 

после нажатия Tab .

Если кто-нибудь может мне помочь в этом. Спасибо!

One Solution collect form web for “Как добавить автозаполнение пути к пользовательской функции завершения в zsh?”

Я решил это. Чтобы добавить аргумент таким образом, чтобы он отображал полный путь, я должен был добавить следующие строки:

 _arguments '*:filename:_files' 

Итак, конечная функция выглядит так:

 #compdef audtool _audtool() { local curcontext="$curcontext" state line typeset -A opt_args _arguments \ '1: :->csi'\ '2: :->file' case $state in csi) _arguments '1: :( --current-song --current-song-filename --current-song-length --playlist-addurl)' ;; file) _arguments '*:filename:_files' ;; esac } _audtool "$@" 
  • При использовании zsh вызывает расширение истории
  • Сделать zsh alt-f вести себя как emacs alt-f
  • Использование расширения параметра для создания списка аргументов для `mkdir -p`
  • Обработать функцию `zsh` с использованием, которая распознает только команды
  • Есть ли postexec / predisplay hook для ZSH?
  • stty: недопустимый целочисленный аргумент: «CCPP»
  • Глобус с помощью скобок и переменных в zsh
  • Что делает% \ / do (расширение командной строки zsh)?
  • Как сделать короткие строки sh
  • Как записать cd в названный каталог, если команда не найдена?
  • Почему мой список не преобразуется в массив в сценарии запуска .zshrc?
  • Linux и Unix - лучшая ОС в мире.