ZSH: Используйте завершения для команды X, когда я ввожу команду y

StackOverflow https://stackoverflow.com/questions/4221239

Вопрос

В ZSH у меня есть функция называется g который действует так:

  • без аргументов, позвоните git status
  • с одним или несколькими аргументами, делегат для Git со всеми данными аргументами - то есть звонок git $@

Я хотел бы, чтобы заполнить вкладку для g быть точно таким же, как для git. Отказ Я могу достичь этого с alias g=git, но это не позволяет мне позвонить status по умолчанию (первая точка выше).

Как я могу делегировать на завершение для git?

В Bash я просто сделал complete -F _git g который повторно использует функцию завершения GIT. С ZSH завершится завершение GIT намного сложнее, и я не могу найти подобное решение.

Я догадаю, что есть некоторая функция в ZSH, чтобы сказать «Притворись, что я набрал команду [x], что бы вы закончили?». Если бы я знал, что это было, это должно быть достаточно простым, чтобы использовать функцию для делегирования к ней. Но я не нашел такой функции в руководствах.

Это было полезно?

Решение

Документация для compdef говорит это:

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

compdef _pids foo

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

compdef _git g

Я смог заставить его работать через _dispatch хоть:

compdef '_dispatch git git' g
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top