git - 添加新的 zshell 命令行自定义 git 补全

标签 git tab-completion zsh-completion

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

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

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

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

最佳答案

我会给你几个例子。

  • 为别名添加补全

如果你有像这样的 pull 别名:

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 的组合, 稍作修改:您想先完成搜索字符串,然后使用 git-log 的常用选项.然后你可以使用这个:

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

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

_git-search "$@"

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

关于git - 添加新的 zshell 命令行自定义 git 补全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260398/

相关文章:

bash - 如何定义自己的终端选项卡补全

python __getattr__ 自动完成

autocomplete - 如何在 zsh 中动态选择完成功能?

macos - 哦,我的 OSX 上的 ZSH Docker 自动完成功能不起作用

Git merge 冲突以始终获取最新文件

c# - 在 Azure DevOps Repos 上拆分大型软件项目

python - IPython 自定义制表符完成用户魔法功能

zsh-completion - 如何让 zsh 继承完整的自动完成功能?

git - 为 GitLab CI 禁用 GIT LFS

Powershell 中的 Git 说 'Could not find ssh-agent'