Ajoutez ceci dans votre fichier ~/.bash_profile ou dans votre fichier ~/.bashrc
complete -W "\`grep -oE '^[a-zA-Z0-9_.-]+:([^=]|$)' ?akefile | sed 's/[^a-zA-Z0-9_.-]*$//'\`" make
Ceci recherche une cible dans votre fichier Makefile intitulé 'Makefile' ou 'makefile' (notez le joker capital ?
dans ?akefile
) en utilisant grep, et le pipe vers la commande complete
dans bash qui est utilisée pour spécifier comment les arguments sont autocomplétés. Le drapeau -W
indique que l'entrée de la commande complete
sera une liste de mots, ce qui est accompli en passant les résultats de grep à travers sed
qui les arrange dans le format souhaitable de liste de mots.
Limitations et pièges :
-
Votre fichier make s'appelle 'GNUMakefile' ou autre chose que 'Makefile' ou 'makefile'. Si vous rencontrez fréquemment de tels titres, envisagez de modifier l'expression régulière ?akefile
en conséquence.
-
Oublier de sourcer votre fichier ~/.bash_profile ou ~/.bashrc après avoir apporté les modifications. J'ajoute ce détail en apparence trivial car, pour les non-initiés, c'est peu familier. Pour que toute modification apportée à vos fichiers bash prenne effet, sourcer les en utilisant la commande
source ~/.bashrc
ou
source ~/.bash_profile
PS. Vous avez également maintenant la capacité supplémentaire d'afficher les cibles make possibles en appuyant deux fois sur [Tab] comme dans l'autocomplétion bash. Assurez-vous simplement d'ajouter un espace après la commande make avant de taper [Tab] deux fois.