zsh отказывается принять новый сценарий автозаполнения

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

/usr/share/zsh/site-functions 

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

  • Почему `kill -s INT <zsh PID>` ведет себя иначе, чем `Ctrl-C`?
  • Ruby Version Prompt (Oh My ZSH) не работает вне TMUX
  • Ярлыки каталогов в буфере emacs
  • Невозможно сделать .zhistory символической ссылкой
  • Проблемы с использованием возвышенного текста для редактирования командной строки в режиме ВП
  • Источник .bashrc в zsh без печати какого-либо вывода
    1. Symlinking к исходному скрипту из приведенной выше директории.
    2. Поместив копию скрипта непосредственно в каталог выше.
    3. Установка моей оболочки входа в zsh (вместо того, чтобы просто переключиться на нее из другой оболочки)
    4. (Возможно) все перестановки compinit и rehash .
    5. Отбросьте мой оригинальный сценарий, чтобы он не мог ошибиться.
    6. Изменение содержимого другого скрипта. Изменения сработали, поэтому каталог верен, и zsh обнаруживает скрипты завершения.

    Вот приведенный ниже сценарий:

     #compdef aura _arguments -s \ '-V[Version!]' \ '-h[Helpppp]' 

    И текущее содержимое моего .zshrc. Я обычно не пользователь zsh.

     autoload -U compinit compinit zstyle ':completion:*' rehash true 

    Пожалуйста, благодарите вас за любую проницательность, которую вы можете дать. Что мне не хватает?

    EDIT: Содержание / usr / share / zsh / site-functions:

    _ack _adb _android _attach _aura _baselayout _bpython _brew _bundle _cap _choc _coffee _cower _cpanm _debuild _dhcpcd _ditz _emulator _eselect _fab _gas _gcc-config _geany _gem _genlop _gentoolkit _gentoo_packages _git-flow _github _git-pulls _git-wtf _google _gradle _heroku _jmeter _jmeter-plugins _jonas _knife _language_codes _layman _lein _lunar _lunchy _manage.py _mosh _mvn _node _optirun _pacman _pactree _pear _perf _periscope _pgsql_utils _pip _pkcon _play _port _portage _portage_utils _pygmentize _redis-cli _rvm _sbt _scala _sdd _setup.py _showoff _smartmontools _srm _ssh-copy-id _subliminal _symfony _systemd _teamocil _thor _tmuxinator _vagrant _virtualbox _vnstat _vpnc _yaourt

  • ls .. не работает должным образом с символическими ссылками
  • Что это за команда HOME?
  • Сценарий Shell / Bash: Правильно отказаться от привилегий
  • На `fork`, дочерних процессах и" подоболочках "
  • Разрешить все псевдонимы в командной строке zsh
  • Почему «набор» не работает для меня, а «объявляет»?
  • One Solution collect form web for “zsh отказывается принять новый сценарий автозаполнения”

    Вот что я думаю о том, что это может пойти не так.

    Файл, содержащий код завершения, должен находиться в каталоге, указанном в массиве fpath . ОК. Обратите внимание, что вы не должны помещать свои собственные файлы в /usr/share ; zsh не волнует, но ваш файл может быть удален или перезаписан менеджером пакетов вашей операционной системы, и вы, вероятно, забудете его создать, скопировать на другой компьютер и т. д. Вы должны поместить свои собственные файлы в /usr/local если вы хотите сделать их доступными для всех пользователей вашей системы и в вашем домашнем каталоге, если вы просто хотите их для своего пользователя. Вы можете добавить каталог в fpath в ваш .zshrc (перед вызовом compinit ), например

     fpath=(~/lib/zsh $fpath) 

    Первая строка файла должна содержать #compdef а затем пробел, за которым следует одно или несколько имен команд, разделенных пробелами. Проверьте, нет ли там каких-либо бродячих символов, в частности, файл должен иметь окончание строк Unix (LF), а не окончание строк Windows (CRLF – блуждающий CR может привести к тому, что команда не будет поднята).

    Функция compinit создает файл кеша при первом compinit , чтобы быть быстрее в следующий раз. Этот файл называется ~/.zcompdump . Он содержит связь между именами команд и функциями завершения (например, aura _aura ), а не кодом функций. Возможно, вам придется иногда его регенерировать. В частности, если вы измените строку #compdef в существующем файле, compinit не будет перечитывать файл. Пока вы не переходите -C к compinit , он будет собирать новые файлы, но вы должны получить строку #compdef прямо перед следующим запуском zsh. Если вы этого не сделали, удалите файл кеша ( rm ~/.zcompdump ) и rm ~/.zcompdump запустите zsh (или, точнее, запустите compinit ).

    Linux и Unix - лучшая ОС в мире.