我的zsh标签完成有问题:运行后:
autoload -U compinit
compinit
文件的Git选项卡完成不再起作用。例如,如果我输入git add my_f来完成my_file,则没有任何反应。 zsh git完成似乎只适用于git分支和标记。
没有compinit的东西,git文件完成工作,但当然我错过了所有花哨的分支完成的东西。
那么......有没有办法在zsh中同时完成git文件的完成和git分支的完成?这对我很有帮助。
答案 0 :(得分:10)
(我在这里添加一个答案主要是为了让它脱离未答复的清单。)
从评论中可以看出,它确实有效。我相信整个zsh情况最近也有了显着改善:
提交06f44c3cc5ca5eca638f300a518c65aa98d26d6d
日期:星期一9月6日08:33:19 2010 -0400
完成:与zsh兼容
修改git-completion.bash,以便在使用bashcompinit时也可以使用zsh。 ...
所以,如果你发现这个谷歌搜索,并且你的完成工作无效,请尝试升级你的git-completion.bash(链接指向git.git HEAD的blob)。目前的git版本是1.7.3.2;它应该进入下一个。
答案 1 :(得分:0)
请注意,在Git 2.30(Q1 2021)中,zsh的命令行完成指令(以contrib /格式)已更新。
请参见commit 3ebd945的Alexey (ogonkov
)(2020年7月2日)。
(由Junio C Hamano -- gitster
--在commit bbdbe08中合并,2020年11月2日)
completion
:修复zsh安装说明签名人:Alexey
作者:Stefan Haller
- 在完成配置中修复错误的脚本。 zsh想要bash完成路径在这里,而不是它自己的路径。
- 添加
compinit
自动加载命令,因为如果未加载,整个程序将无法正常工作。
所以命令应该是:
# The recommended way to install this script is to make a copy of it in
# ~/.zsh/ directory as ~/.zsh/git-completion.zsh and then add the following
# to your ~/.zshrc file:
#
# fpath=(~/.zsh $fpath)
# autoload -Uz compinit && compinit
警告:如in here的作者“ Felipe Contreras”所述,在Git 2.30(第2021年第1季度)中,对Zsh自动完成(contrib/
中)进行了修补。
请参见commit af806a2,commit 441ecda,commit 8030684,commit 5a364d2,commit 35a4170,commit bbd7f45,commit 2769e56,{{3} },commit 9d76052,commit 9a397ea,commit 46af9b3,commit 5d64fb2,commit cf6ce01,commit 35e29fb,commit ecaf798,commit 2f459b0, commit 94b2901,commit a7804a1,commit 3791968,commit aa1f1f8,commit 162f1a5,commit bed6356,commit 81f717b,commit ea625a3(10月27日2020),以及commit 98fc268之前的commit 44b37ab,commit cb9dcbd,commit 2c7cdc5,commit 5eb25bc,commit 4ce2b51(2020年10月24日)。
(由Felipe Contreras (felipec
)在Junio C Hamano -- gitster
--中合并,2020年11月9日)
commit 4560eae:bash:删除zsh包装器
签名人:Felipe Contreras
它已经被弃用八年多了,它从未更新过,而且维护起来很麻烦。
是时候继续前进了。
使用Git 2.30(第2021年第1季度)时,有一个针对近期损坏的修补程序。
请参见completion
前的commit 0764964(2020年12月5日)和commit c5dd0c8(2020年11月30日)。
(由Felipe Contreras (felipec
)在Junio C Hamano -- gitster
--中合并,2020年12月8日)
抄送:SZEDERGábor
签名人:Felipe Contreras
签名人:Junio C Hamano
commit 7d92da3:bash:修复gitk别名回归
很久以前,当引入
_git_complete
帮助器时,_gitk
被__gitk_main
所代替,并且向后指向__git_wrap_main_gitk
的向后兼容性占位符被保留了。 / p>调用“
__git_complete gitk __gitk_main
”时,创建了__git_wrap__gitk_main
帮助器,基本上就是“__git_func_wrap __gitk_main
”加complete
选项。不幸的是
中调用completion
(“completion
:增加了对向后兼容性的支持”,2012-05-19,Git v1.7.11-rc0-commit b0a4b2d257)错过了以前的实例在_gitk
_git_gitk
因此,基本上我们有了
__git_wrap__git_main -> __git_func_wrap __git_main -> __git_complete_command gitk
->_git_gitk
->_gitk
->__git_wrap__gitk_main -> __git_func_wrap __gitk_main -> __gitk_main
。永远不需要两次调用
__git_func_wrap
。 由于_git_gitk
总是在包装器内部调用,因此可以直接调用__gitk_main
。然后,在merge(“
completion
:bash:删除旧的Compat包装器”中,2020-10-27,Git v2.30.0 - commit 441ecdab37在{{3 }})_gitk
已删除,这会引发以下错误:_git_gitk:9: command not found: _gitk
我们调用正确的函数:__gitk_main。