Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[zsh] complétions

2 réponses
Avatar
David LE BOURGEOIS
Bonjour.

Une petite question concernant la complétion sous Zsh.

Prenons une commande de base :

$ tar cvjf dir-20080605.tar.bz2 dir-20080605

La complétion fonctionne sur ces commandes :

$ tar cvjf dir-20080605.tar.bz2 dir*(/)^I
==> dir-20080605/

$ tar cvjf dir-20080605{.tar.bz2,}^I
==> dir-20080605.tar.bz2 dir-20080605

Mais cette combinaison ne fait fonctionner que la complétion sur
les accolades :

$ tar cvjf dir*(/){.tar.bz2,}^I
==> dir*(/).tar.bz2 dir*(/)

Arrive donc le message d'erreur :

zsh: bad pattern: dir*(/).tar.bz2

Je suis alors obligé d'effectuer la complétion en trois temps :

$ tar cvjf dir*(/)^I
==> dir-20080605/^H
==> dir-20080605{.tar.bz2,}^I

Connaissez-vous un moyen de saisir ou de compléter en une seule
fois la combinaison 'dir*(/){tar,}' ?

Merci d'avance pour vos lumières.

--
David LE BOURGEOIS
E-mail : david.lebourgeois (at) free.fr
Jabber : david.lebourgeois (at) jabber.fr
PGP : http://david.lebourgeois.free.fr/pgp/

2 réponses

Avatar
Nicolas George
David LE BOURGEOIS wrote in message
<484845d7$0$6039$:
Connaissez-vous un moyen de saisir ou de compléter en une seule
fois la combinaison 'dir*(/){tar,}' ?


Je ne pense pas que ce genre de test soit possible : les qualificatifs entre
parenthèses ne sont autorisés qu'à la fin, pour filtrer les fichiers
produits par le glob.

Avatar
Vincent Lefevre
Dans l'article <48485f76$0$3607$,
Nicolas George <nicolas$ écrit:

David LE BOURGEOIS wrote in message
<484845d7$0$6039$:
Connaissez-vous un moyen de saisir ou de compléter en une seule
fois la combinaison 'dir*(/){tar,}' ?


Je ne pense pas que ce genre de test soit possible : les
qualificatifs entre parenthèses ne sont autorisés qu'à la fin, pour
filtrer les fichiers produits par le glob.


Pour préciser, il y a ici deux types d'expansions: une "brace expansion"
(qui intervient en premier), puis une "filename generation". Donc on va
obtenir d'abord avec la "brace expansion":

dir*(/)tar dir*(/)

et là, le premier mot est incrrect puisque le (/) doit se situer à la
fin du mot.

Note: il ne s'agit pas de complétion, mais d'expansion (par défaut,
[Tab] est bindé sur expand-or-complete).

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)