Как включить табуляцию подстановочных знаков в bash?

8

Как я могу включить завершение табуляции в bash для такого утверждения, как vim db/migrate/*crea? По сути, я ищу дополнения табуляции, чтобы соответствовать регулярному выражению и представить параметры.

Как можно это сделать?

Этот вопрос относится к тому, который я задал здесь

rudolph9
источник
4
выражение db/migrate/*creaне является регулярным выражением. *характер здесь используются в качестве шаблона расширения Баша.
Мирча Вутцовичи
Конечно, это регулярное выражение. Это соответствует db/migrate///////crea. :-)
ghoti

Ответы:

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 для списка автозаполнения?

zje
источник
4
Это больше связано с вашими скриптами завершения Bash, чем с вашей версией Bash.
Эфимент
1

show-all-if-ambiguousзаставляет нажатие табуляции один раз (вместо двух) показывать все пополнения. Это также изменяет способ завершения глобусов:

$ 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.

LRI
источник