Bagaimana cara mengaktifkan tab wildcard di bash?

8

Bagaimana saya bisa mengaktifkan penyelesaian tab di bash untuk pernyataan seperti itu vim db/migrate/*crea? Pada dasarnya saya mencari penyelesaian tab untuk mencocokkan ekspresi reguler dan menyajikan opsi.

Bagaimana cara melakukan ini?

Pertanyaan ini berkaitan dengan pertanyaan yang saya ajukan di sini

rudolph9
sumber
4
ekspresi db/migrate/*creabukan ekspresi reguler. yang *karakter di sini digunakan sebagai wildcard ekspansi bash.
Mircea Vutcovici
Tentu itu ekspresi reguler. Itu cocok db/migrate///////crea. :-)
ghoti

Jawaban:

3

Versi bash apa yang Anda gunakan? Bagi saya dengan 4.1.2, sepertinya berhasil di luar kotak pada 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  

Apakah Anda memastikan untuk mengetuk TAB dua kali untuk daftar pelengkapan otomatis?

zje
sumber
4
Ini lebih berkaitan dengan skrip penyelesaian Bash Anda daripada hubungannya dengan versi Bash Anda.
ephemient
1

show-all-if-ambiguousmembuat menekan tab sekali (bukan dua kali) menunjukkan semua penyelesaian. Itu juga mengubah cara glob selesai:

$ 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) juga akan selesai *0(tanpa wildcard di akhir) untuk 1.0.. Ini juga bekerja dengan pola seperti */file*dan **/file.

Lri
sumber