![如何在 bash 中启用通配符的制表符补全?](https://linux22.com/image/22730/%E5%A6%82%E4%BD%95%E5%9C%A8%20bash%20%E4%B8%AD%E5%90%AF%E7%94%A8%E9%80%9A%E9%85%8D%E7%AC%A6%E7%9A%84%E5%88%B6%E8%A1%A8%E7%AC%A6%E8%A1%A5%E5%85%A8%EF%BC%9F.png)
如何在 bash 中为诸如 之类的语句启用制表符补全vim db/migrate/*crea
?本质上,我正在寻找制表符补全来匹配正则表达式并显示选项。
人们会如何去做这件事呢?
这个问题与我问的一个问题有关这里
答案1
你使用什么版本的 bash?对于使用 4.1.2 的我来说,它似乎可以在 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
您是否确定按 TAB 两次以获取自动完成列表?
答案2
show-all-if-ambiguous
使按 Tab 键一次(而不是两次)显示所有完成情况。它还改变了 glob 的完成方式:
$ 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) 也将完整*0
(末尾不带通配符)为1.0.
.它也适用于*/file*
和等模式**/file
。