當您定義像 這樣的別名時alias g=git
,shell 會選擇它並執行相應的自動完成功能。現在,有一個名為 的程序hub
,它基本上是 git 的替代集,並添加了一些 github 特定的功能。推薦的使用方法hub
是alias git=hub
.當然,這不會觸發 git 的自動完成功能,這是有道理的。
現在,如果我想讓 git 的集線器自動完成觸發器,我知道的唯一方法是編輯/usr/share/zsh/functions/Completion/Unix/_git
並添加hub
第一行作為觸發器。雖然這可行,但並不實用,因為該檔案將被下一個 zsh 版本覆蓋。假設 hub 不會很快提供 zsh 補全功能,是否有另一種方法可以hub
為 git 的自動補全功能添加觸發命令?
答案1
您可以定義一個附加的自動完成資料夾,其中可以包含您的自訂定義。如果您有類似於預設 .zshrc 的內容,那麼您只需要更新$f路徑在你打電話之前自動載入-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 複製到您的個人自動完成資料夾中,它將用於取代原始檔案。