Zsh: используйте доработки для команды X, когда я набираю команду Y
В zsh у меня есть функция с именем g
, которая действует следующим образом:
- без аргументов, вызовите
git status
- с одним или несколькими аргументами, делегируйте git со всеми заданными аргументами - т.е. вызовите
git [email protected]
Я хотел бы, чтобы пополнение вкладок для g
было таким же, как для git
. Я могу добиться этого с помощью alias g=git
, но это не позволяет мне вызвать status
по умолчанию (первая точка выше).
Как я могу делегировать завершение для git
?
В bash я просто сделал complete -F _git g
, который повторно использует функцию завершения git. С zsh, git завершение выглядит намного сложнее, и я не смогу найти подобное решение.
Я бы предположил, что в zsh есть какая-то функция, чтобы сказать "притвориться, что я набрал команду [x], что бы вы ее выполнили?". Если бы я знал, что это такое, должно быть достаточно просто использовать функцию для ее делегирования. Но я не нашел такой функции в руководствах.
Ответы
Ответ 1
В документации для compdef
говорится следующее:
Функция compdef
может использоваться для связывания существующих функций завершения с новыми командами. Например,
compdef _pids foo
Но адаптация (_git
является обычной функцией завершения для git) не принесла мне рабочего результата (даже после того, как _git
был загружен автоматически):
compdef _git g
Мне удалось заставить его работать через _dispatch
, хотя:
compdef '_dispatch git git' g