Добавление команды-триггера к функции автозаполнения в zsh

Добавление команды-триггера к функции автозаполнения в zsh

Когда вы определяете псевдоним alias g=git, например , оболочка подхватит его и запустит соответствующую функцию автодополнения. Теперь есть программа, которая называется hub, которая по сути является надмножеством git с некоторыми дополнительными функциями, специфичными для github. Рекомендуемый способ использования hubalias git=hub. Конечно, это не вызовет функцию автодополнения для git, что имеет смысл.

Теперь, если я хочу иметь триггер автодополнения git для hub, единственный известный мне способ — это редактирование /usr/share/zsh/functions/Completion/Unix/_gitи добавление hubпервой строки в качестве триггера. Хотя это работает, это непрактично, так как этот файл будет перезаписан следующим релизом zsh. Предполагая, что hub не предоставит функцию автодополнения zsh в ближайшее время, есть ли другой способ добавить hubкоманды триггера для функции автодополнения git?

решение1

Вы можете определить дополнительную папку автозаполнения, в которой могут быть ваши пользовательские определения. Если у вас есть что-то похожее на .zshrc по умолчанию, то вам просто нужно обновить$fpathпрежде чем позвонитьавтозагрузка -Uz compinit.

Пример:

...
zstyle ':completion:*' use-compctl true
zstyle ':completion:*' verbose true
zstyle :compinstall filename "$HOME/.zshrc"

fpath=($HOME/autocomplete $fpath)

autoload -Uz compinit
compinit
# End of lines added by compinstall
...

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

Связанный контент