Comment activer la complétion par tabulation des caractères génériques dans bash?

8

Comment puis-je activer la complétion de tabulation dans bash pour une instruction telle que vim db/migrate/*crea? Essentiellement, je recherche la complétion des onglets pour correspondre à l'expression régulière et présenter les options.

Comment procéderait-on?

Cette question concerne celle que j'ai posée ici

rudolph9
la source
4
l'expression db/migrate/*crean'est pas une expression régulière. le *caractère ici est utilisé comme caractère générique d'extension bash.
Mircea Vutcovici
Bien sûr, c'est une expression régulière. Cela correspond db/migrate///////crea. :-)
ghoti

Réponses:

3

Quelle version de bash utilisez-vous? Pour moi avec 4.1.2, cela semble fonctionner dès le départ sur CentOS 6.2:

[user@host foo]$ cd /tmp/foo
[user@host foo]$ mkdir bar
[user@host foo]$ touch bar/foo{1,2,3}
[user@host foo]$ vim bar/*1
*TAB*
[user@host foo]$ vim bar/foo1 
[user@host foo]$ touch bar/bar1
[user@host foo]$ vim bar/*1
*TAB* *TAB*
[user@host foo]$ vim bar/*1
bar1/ foo1  

Êtes-vous sûr de taper deux fois sur TAB pour la liste de saisie semi-automatique?

zje
la source
4
Cela a plus à voir avec vos scripts d'achèvement de Bash qu'avec votre version de Bash.
éphémère
1

show-all-if-ambiguousfait appuyer sur tab une fois (au lieu de deux) pour afficher toutes les finitions. Cela change également la façon dont les globes sont complétés:

$ touch 1.0.{1,2}
$ bind 'set show-all-if-ambiguous off'
$ open *0* # I pressed tab twice here, and *0* was kept as *0*
1.0.1  1.0.2
$ open *0*^C
$ bind 'set show-all-if-ambiguous on'
$ open *0* # I pressed tab once here, and *0* was replaced with 1.0.
1.0.1  1.0.2
$ open 1.0.

glob-complete-word (\ eg) se terminerait également *0(sans un joker à la fin) à 1.0.. Il fonctionne également avec des motifs comme */file*et **/file.

Lri
la source