当您定义一个像 这样的别名时alias g=git
,shell 会选择它并运行相应的自动完成功能。现在,有一个名为 的程序hub
,它基本上是 git 的超集,并添加了一些特定于 github 的功能。建议使用hub
。alias git=hub
当然,这不会触发 git 的自动完成功能,这是有道理的。
现在,如果我想让 git 的自动完成触发器用于 hub,我知道的唯一方法是编辑/usr/share/zsh/functions/Completion/Unix/_git
并添加hub
第一行作为触发器。虽然这可行,但不切实际,因为该文件将在下一个 zsh 版本中被覆盖。假设 hub 不会很快提供 zsh 完成功能,还有其他方法可以添加hub
到 git 自动完成功能的触发命令中吗?
答案1
您可以定义一个额外的自动完成文件夹,其中包含您的自定义定义。如果您有类似于默认 .zshrc 的内容,那么您只需更新$fpath致电之前自动加载-Uz compinit。
例子:
...
zstyle ':completion:*' use-compctl true
zstyle ':completion:*' verbose true
zstyle :compinstall filename "$HOME/.zshrc"
fpath=($HOME/autocomplete $fpath)
autoload -Uz compinit
compinit
# End of lines added by compinstall
...
然后,您应该能够将更新后的 _git 复制到您的个人自动完成文件夹中,并将其用于代替原始文件。