gpt4 book ai didi

git - 在 Zsh 中禁用远程分支的自动完成?

转载 作者:IT王子 更新时间:2023-10-29 00:54:13 27 4
gpt4 key购买 nike

这与 Disable auto-completion of remote branches in Git Bash? 有关.

有人知道如何用 zsh 做同样的事情吗?

最佳答案

zstyle :completion::complete:git-checkout:argument-rest:headrefs command "git for-each-ref --format='%(refname)' refs/heads 2>/dev/null"

解释:

正在打字 git checkout <Control-x><h>调用 _complete_help如果您在当前上下文中按 TAB 键(而不是按 <Control-x><h> ),它会揭示 zsh 的完成系统将如何运行的内部结构。由此可以看出 zsh 会调用 __git_heads函数来完成 git 分支头的名称。如果您随后键入 which __git_heads ,可以看到这些分支头名是通过:

_call_program headrefs git for-each-ref --format='"%(refname)"' refs/heads refs/remotes 2>/dev/null

幸运的是,_call_program专为允许用户更改默认行为而设计。所以上面的zstyle命令指示 zsh 使用替代 git for-each-ref ...调用而不是内置调用,你可以看到在上面的调用中,我删除了 refs/remotes范围。 zstyle的第一个参数是完成上下文,这里它的意思是“当用户完成 headrefs 的参数时,当完成系统请求完成 git checkout 标签时。所以这个 zstyle 只会影响 git checkout,而不影响任何其他 git 子命令。

关于git - 在 Zsh 中禁用远程分支的自动完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12175277/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com