添加新的zshell命令行自定义git完成

时间:2011-11-24 16:58:48

标签: git tab-completion zsh-completion

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

中安装的脚本获得命令行完成

/usr/local/etc/bash_completion.d /

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

我如何解决现有的git完成问题?

1 个答案:

答案 0 :(得分:3)

我会举几个例子。

  • 为别名添加完成

如果您有像这样的拉动别名:

alias gp='git push'

然后您可以通过执行来定义别名以使用与git-push相同的完成。

compdef _git gp=git-push
  • 为新命令添加完成

这是一个更难的。编写 zsh 的完成脚本并非易事,您可以查看in this project的一些指导。例如,请查看completion script

git-wtf
  • 重新使用现有的完成情况,但已修改

如果您有一个脚本可以在日志中搜索:

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

您希望使用git-log的copmletion,只需进行一些小修改:您希望先完成搜索字符串,然后使用git-log的常用选项。然后你可以使用它:

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

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

_git-search "$@"

编辑:另外,要实际使用新定义的完成文件,您必须将存储它们的目录添加到fpath