如何在bash中启用通配符的制表符完成?


8

如何在bash中为诸如这样的语句启用制表符完成vim db/migrate/*crea?本质上,我正在寻找制表符补全以匹配正则表达式并显示选项。

人们将如何去做呢?

这个问题与我在这里问的一个问题有关


4
该表达式db/migrate/*crea不是正则表达式。*此处的字符用作bash扩展通配符。
Mircea Vutcovici

当然,这是一个正则表达式。它匹配db/migrate///////crea。:-)
ghoti

Answers:


3

您正在使用什么版本的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键?


4
这与您的Bash完成脚本有关,而不是与您的Bash版本有关。
短暂的2012年

1

show-all-if-ambiguous使按一次制表符(而不是两次)显示所有完成。它还更改了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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.