4

我通过Homebrew安装了 git 。我通过安装在

/usr/local/etc/bash_completion.d/

但是,我也希望完成我的自定义 git-* 脚本。

我将如何将其添加到现有的 git 完成中?

4

1 回答 1

3

我给你举几个例子。

  • 为别名添加完成

如果您有这样的 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

于 2012-08-21T08:31:23.963 回答