Domanda

In zsh, ho una funzione chiamata g che agisce in questo modo:

  • senza argomenti, chiamata git status
  • con uno o più argomenti, delegato a git con tutte le date argomenti - vale a dire chiamata git $@

Vorrei i completamenti scheda per g di essere esattamente lo stesso che per git. Posso raggiungere questo obiettivo con alias g=git, ma che non mi permette di chiamare status di default (il primo punto di cui sopra).

Come posso delegare al completamento per git?

In bash, ho semplicemente fatto complete -F _git g che riutilizza funzione di completamento di git. Con zsh, sguardi di completamento del Git molto più complesso, ed io wa non in grado di trovare una soluzione simile.

Direi c'è qualche funzione in zsh a dire "finta ho digitato il comando [x], cosa vorresti completare a?". Se sapessi cosa che fosse, dovrebbe essere abbastanza semplice da utilizzare una funzione di delegare ad esso. Ma non ho trovato alcun tale funzione nei manuali.

È stato utile?

Soluzione

La documentazione per compdef dice questo:

  

La compdef funzione può essere utilizzata per associare le funzioni di completamento esistenti con i nuovi comandi. Ad esempio,

compdef _pids foo

Ma adattandolo (_git è la funzione di completamento usuale per git ) non ha dato nessun risultato che lavora per me (anche dopo che era stato _git autocaricate):

compdef _git g

sono stato in grado di farlo funzionare tramite _dispatch però:

compdef '_dispatch git git' g
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top