Подтвердить что ты не робот

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], что бы вы ее выполнили?". Если бы я знал, что это такое, должно быть достаточно просто использовать функцию для ее делегирования. Но я не нашел такой функции в руководствах.

4b9b3361

Ответ 1

В документации для compdef говорится следующее:

Функция compdef может использоваться для связывания существующих функций завершения с новыми командами. Например,

compdef _pids foo

Но адаптация (_git является обычной функцией завершения для git) не принесла мне рабочего результата (даже после того, как _git был загружен автоматически):

compdef _git g

Мне удалось заставить его работать через _dispatch, хотя:

compdef '_dispatch git git' g