добавление новых пользовательских командных строк в zshell - PullRequest
4 голосов
/ 24 ноября 2011

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

/ USR / местные / и т.д. / bash_completion.d /

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

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

1 Ответ

3 голосов
/ 21 августа 2012

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

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

Если у вас есть псевдоним для 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

...