JJD*_*JJD 6 zsh git autocomplete function
在 zsh 中,我使用以下函数通过一个命令删除本地和远程分支:
gpDo () {
git branch -d "$1" && git push --delete origin "$1"
}
Run Code Online (Sandbox Code Playgroud)
目前,Git 分支的自动完成功能不起作用。我必须手动输入整个分支名称。我怎样才能让选项卡完成工作为这样的功能?
我假设您正在使用由 启用的\xe2\x80\x9cnew\xe2\x80\x9d 完成系统compinit
。如果您正在使用 oh-my-zsh,那就是。
您需要告诉 zsh 使用 git 分支名称gpDo
。Git 已经提供了一种完成分支名称的方法。从 zsh 5.0.7 开始,这是这个功能__git_branch_names
,但这不是一个稳定的接口,因此它可能在其他版本中发生变化。要使用此功能,请将这一行放入您的.zshrc
:
compdef __git_branch_names gpDo\n
Run Code Online (Sandbox Code Playgroud)\n\n使用此声明,gpDo
仅当您在命令行上完成某项操作git
至少一次后,完成后才会起作用。这是由于 zsh 中函数自动加载的一个怪癖造成的。或者,_git 2>/dev/null
在你的; 中运行.zshrc
:这会导致错误,因为在无效上下文中调用完成函数,但该错误是无害的,并且加载和相关函数(包括 __git_branch_names` )的副作用_git
仍然存在。
或者,定义您自己的 git 分支完成函数。快速而肮脏的方法:
\n\n_JJD_git_branch_names () {\n compadd "${(@)${(f)$(git branch -a)}#??}"\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
1206 次 |
最近记录: |