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

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

/usr/share/zsh/site-functions 

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

  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

  • Изменить местоположение замещения процесса zsh '= ()'
  • Что такое sourcing мой сценарий оболочки?
  • zsh HISTFILE - все еще читается из ~ / .zsh_history
  • ~ поведение оператора glob с пустым шаблоном
  • Что означает: $ {param: = значение} означает?
  • Проблема с передачей параметров, содержащих пробелы и символы wild card
  • mv * (исключение ошибки «can not move»)
  • Как я могу перестроить stty lnext на ^ q?
  • 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 ).

    Interesting Posts

    Как уменьшить размер группы томов в LVM?

    арифметическая синтаксическая ошибка в сравнении строк

    efibootmgr: что, если я удалю все записи без руководства?

    Можно ли использовать драйвер nvidia только в играх и нуво в любое другое время?

    Как я могу запланировать, скомпилировать и обновить Thunar с недавно выпущенным патчем … путь Arch?

    Получить PID tcpdump в сценарии bash

    Когда вы будете использовать pivot_root через switch_root?

    Печать содержимого между скобками в разных строках

    USB-клавиатура автоматически отключается (без отсоединения)

    Переместить позицию окна приложения из командной строки в OSX

    Как настроить сеть для Ekiga на Arch Linux?

    Как установить поле linux для получения сообщений электронной почты с использованием моего адреса электронной почты

    firewalld был отключен, но он все еще показывает правила iptables

    Могу ли я заставить `cut` изменять файл на месте?

    Почему расширение переменной bash сохраняет кавычки?

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