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



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

中的脚本获得命令行补全
/usr/local/etc/bash_completion.d/

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

我如何将这个附加到现有的git完成?

我给你举几个例子。

  • 为别名添加补全

如果你有一个像这样的别名:

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

最新更新