我在 zsh 选项卡完成时遇到问题: 运行后:
autoload -U compinit
compinit
文件的 Git 选项卡完成不再起作用。例如,如果我键入 git add my_f 来完成 my_file,则什么也不会发生。zsh git 补全似乎只适用于 git 分支和标签。
没有 compinit 的东西,git 文件完成工作,但我当然错过了所有花哨的分支完成的东西。
那么......有没有办法在zsh中同时完成git文件完成和git分支完成?这对我真的很有帮助。
我在 zsh 选项卡完成时遇到问题: 运行后:
autoload -U compinit
compinit
文件的 Git 选项卡完成不再起作用。例如,如果我键入 git add my_f 来完成 my_file,则什么也不会发生。zsh git 补全似乎只适用于 git 分支和标签。
没有 compinit 的东西,git 文件完成工作,但我当然错过了所有花哨的分支完成的东西。
那么......有没有办法在zsh中同时完成git文件完成和git分支完成?这对我真的很有帮助。
(我在这里添加一个答案主要是为了将其从未回答的列表中删除。)
正如您从评论中看到的那样,它确实有效。我相信整个 zsh 的情况最近也有了显着改善:
提交 06f44c3cc5ca5eca638f300a518c65aa98d26d6d
日期:2010 年 9 月 6 日星期一 08:33:19 -0400
完成:与 zsh 兼容
修改 git-completion.bash 使其在使用 bashcompinit 时也可以与 zsh 一起使用。...
所以,如果你遇到这个谷歌搜索,并且你的完成不起作用,请尝试升级你的git-completion.bash(链接指向来自 git.git HEAD 的 blob)。当前的 git 版本是 1.7.3.2;它应该进入下一个。
请注意,在 Git 2.30(2021 年第一季度)中,zsh 的命令行完成指令(在 contrib/ 中)已更新。
请参阅Alexey ( ) 的提交 3ebd945(2020 年 7 月 2 日)。(由Junio C Hamano 合并 -- --在bbdbe08 提交中,2020 年 11 月 2 日)ogonkov
gitster
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
警告:在 Git 2.30(2021 年第一季度)中,Zsh 自动补全(in contrib/
)已被修补,正如其作者“ Felipe Contreras ”在此处所述。
See commit af806a2 , commit 441ecda , commit 8030684 , commit 5a364d2 , commit 35a4170 , commit bbd7f45 , commit 2769e56 , commit 9d76052 , commit 9a397ea , commit 46af9b3 , commit 5d64fb2 , commit cf6ce01 , commit 35e29fb , commit ecaf798 , commit 2f459b0 , commit 94b2901 , commit a7804a1,提交 3791968,提交 aa1f1f8,提交 162f1a5,提交 bed6356,提交 81f717b,提交 ea625a3,提交 98fc268(2020 年 10 月 27 日),提交 44b37ab,提交 cb9dcbd,提交 2c7cdc5,提交 5eb25bc,提交 4ce2b51(2020 年 10 月 24 日),作者Felipe Contreras ( felipec
)。
(由Junio C Hamano 合并 -- gitster
--在提交 4560eae中,2020 年 11 月 9 日)
completion
: bash: 移除 zsh 包装器签字人:费利佩·孔特雷拉斯
它已经被弃用了八年多,它从来没有更新过,而且维护起来很麻烦。
是时候继续前进了。
在 Git 2.30(2021 年第一季度)中,有一个针对最近损坏的修补程序。
请参阅Felipe Contreras ( ) 的提交0764964 ( 2020 年 12 月 5 日)和提交 c5dd0c8(2020 年 11 月 30 日)。(由Junio C Hamano 合并 -- --在commit 7d92da3中,2020 年 12 月 8 日)抄送:SZEDER Gábor签字人:Felipe Contreras签字人:Junio C Hamanofelipec
gitster
completion
: bash: 修复 gitk 别名回归
很久以前,当
_git_complete
helper 被引入时,_gitk
被替换为__gitk_main
,并且一个用于向后兼容指向的占位符__git_wrap_main_gitk
被保留在原地。当
__git_complete gitk __gitk_main
调用“”时,它创建了__git_wrap__gitk_main
助手,它基本上只是“__git_func_wrap __gitk_main
”加上complete
选项。不幸的是,提交 b0a4b2d257(“
completion
:添加对向后兼容性的支持”,2012-05-19,Git v1.7.11-rc0 -- merge_gitk
)错过了对in的调用的先前实例_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
直接调用。然后,在提交 441ecdab37 ("
completion
: bash: remove old compat wrappers", 2020-10-27, Git v2.30.0 -- merge listed in batch #4 )_gitk
中被删除,这会触发以下错误:_git_gitk:9: command not found: _gitk
让我们调用正确的函数:__gitk_main。
使用 Git 2.34(2021 年第四季度),更新到 tcsh 的命令行补全(在 contrib/ 中)。
请参阅Takashi Iwai ( ) 的提交 ff7b83f(2021 年 8 月 18 日)。(由Junio C Hamano 合并——在提交 4c3bddb中,2021 年 9 月 3 日)tiwai
gitster
completion
:tcsh
: 通过删除包装函数来修复回归。署名:岩井崇史
bash 完成中旧的兼容包装器的清理导致仍然使用它们的 tcsh 完成的回归。
让我们也更新 tcsh 调用站点以解决它。修复:441ecda(
completion
:bash:删除旧的兼容包装器,2020-10-27,Git v2.30.0-rc0 -批次 #4中列出的合并)(“完成:bash:删除旧的兼容包装器”)