Фрагмент ниже заставляет Meta + r завершать удаленные имена git в командной строке git и имена хостов в других местах.
_complete-remotes () {
case $words[1] in
git) load_helper_functions _git; __git_remotes;;
*) _hosts;;
esac
}
compdef -k _complete-remotes complete-word '^[r'
load_helper_functions
. Если вы удалите его из приведенного выше кода, он будет работать только в том случае, если завершение для git
было выполнено хотя бы один раз в текущем сеансе zsh. $words[1]
— первое слово команды -с аргументами -, которая должна быть завершена. complete -k …
регистрирует функцию _complete-remotes
как виджет завершения (, что позволяет ей запускать встроенные функции завершения )и привязывает ее к Meta + r .