这与禁用 Git Bash 中远程分支的自动完成功能? https://stackoverflow.com/questions/6623649/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"
解释:
Typing git checkout <Control-x><h>
调用_complete_help
它公开了如果您在当前上下文中按 TAB 键(而不是按<Control-x><h>
)。由此可以看出 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
子命令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)