如何在 bash 中启用通配符的制表符补全?

如何在 bash 中启用通配符的制表符补全?

如何在 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

相关内容