Funzione AutoCompleta Zsh basata su 2 argomenti
-
13-12-2019 - |
Domanda
Ho una funzione come questa:
p() { cd ~/Clients/$1/Projects/$2; }
.
Allora posso digitare:
p "Client here" "Project here"
.
e mi porta a:
~/Clients/Client here/Projects/Project here
.
Niente di speciale in corso qui.Ma come posso implementare automaticamente per questa funzione?Sono riuscito a far funzionare il completamento del completamento per il primo argomento (clienti):
_p() { _files -W ~/Clients -/; }
compdef _p p
.
Ma come posso completare il secondo argomento (progetti)?Deve essere automatico dalla cartella in base al client:
~/Clients/$1/Projects
.
Spero che qualcuno possa aiutare!: -)
Soluzione
Una persona intelligente (Mikachu) su IRC ha aiutato:
p() { cd ~/Clients/$1/Projects/$2; }
_p() {
_arguments '1: :->client' '2: :->project'
case $state in
client)
_files -W ~/Clients
;;
project)
_files -W ~/Clients/$words[CURRENT-1]/Projects
;;
esac
}
compdef _p p
.
Aggiornamento: Cambia $ Parole [corrente-1] a $ {(q) parole [corrente-1]} Per farlo funzionare con le directory contenenti spazi:
p() { cd ~/Clients/$1/Projects/$2; }
_p() {
_arguments '1: :->client' '2: :->project'
case $state in
client)
_files -W ~/Clients
;;
project)
_files -W ~/Clients/${(Q)words[CURRENT-1]}/Projects
;;
esac
}
compdef _p p
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow