Добавление новых пользовательских командных строк в zshell

Я установил Git через Homebrew. Я получаю завершение командной строки через скрипт, установленный в

/usr/local/etc/bash_completion.d/

Однако я хочу, чтобы мои собственные скрипты git-* также были завершены.

Как бы я прикрепил это к существующим дополнениям git?

1 ответ

Я приведу пару примеров.

  • Добавление завершения для псевдонима

Если у вас есть псевдоним для pull, как этот:

alias gp='git push'

Затем вы можете определить псевдоним для использования того же завершения, что и git-push при выполнении.

compdef _git gp=git-push
  • Добавление завершения для новой команды

Это сложнее. Написание скриптов завершения для zsh не является тривиальным, вы можете взглянуть на скрипты в этом проекте для некоторых рекомендаций. Например, взгляните на скрипт завершения для git-wtf

  • Повторно использовать существующее завершение, но измененное

Если у вас есть скрипт для поиска в журнале, например:

query="$1"
shift
git log -S"$query" "$@"

Вы хотите использовать собрание git-logс небольшой модификацией: сначала вы хотите завершить поиск строки, а затем использовать обычные параметры для git-log, Тогда вы можете использовать это:

_git-search () {
if (( CURRENT == 2 )); then
    _message "search string"
    return
fi

CURRENT=$(( $CURRENT - 1 ))
_git-log
}

_git-search "$@"

РЕДАКТИРОВАТЬ: Кроме того, чтобы фактически использовать ваши недавно определенные файлы завершения, вы должны добавить каталог, где они хранятся в fpath

Другие вопросы по тегам