Добавление новых пользовательских командных строк в 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