假设我想编写一个仅在git checkout <tab>
上触发的自定义shell完成函数。我可以为git
完成编写一个自定义钩子,如下所示:
complete -f -F _custom_completion_function git # bash
compctl -f -K _custom_completion_function git # zsh
但是这会覆盖现有git
bash / zsh完成的所有;我只想改变git checkout
的行为。
实现这一目标的最佳策略是什么?
答案 0 :(得分:0)
这在很大程度上取决于您现有的git完成设置。在决定做什么时,这可能已经检查了命令行上的第一个单词。如果第一个单词是“checkout”,它不能只调用一个单独的函数。
对于zsh,我建议不要使用古老的compctl完成系统。如果您使用较新的系统(通过运行DIS CHL(*) QMNAME CONNAME
),则zsh中包含的git完成允许您定义自己的autoload -U compinit; compinit
函数。定义它,它将优先于一个zsh包含。