Как добавить автозаполнение пути к пользовательской функции завершения в 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 "$@" 
  • Что делает `zstyle`?
  • Синтаксис расширения Zsh
  • Как установить команду редактора для использования * только * для редактирования командной строки в zsh?
  • "--noprofile" или "--norc" в zsh?
  • Как это расширение параметра zsh работает?
  • Как сделать HOME, END работать на терминале без X
  • Что делает команда магического пространства zsh?
  • zsh показывает мое имя странно
  • Как отслеживать разбор и расширение параметров?
  • Массивы и циклы в zsh
  • Как я могу использовать bindkey для запуска скрипта?
  • Linux и Unix - лучшая ОС в мире.