Làm cách nào để bật tab hoàn thành ký tự đại diện trong bash?


8

Làm cách nào tôi có thể kích hoạt hoàn thành tab trong bash cho một câu lệnh như vim db/migrate/*crea? Về cơ bản tôi đang tìm kiếm hoàn thành tab để phù hợp với biểu thức thông thường và trình bày các tùy chọn.

Làm thế nào một người sẽ đi về làm điều này?

Câu hỏi này liên quan đến một câu hỏi tôi đã hỏi ở đây


4
biểu thức db/migrate/*creakhông phải là biểu thức chính quy. các *nhân vật ở đây được sử dụng như một ký tự đại diện mở rộng bash.
Mircea Vutcovici

Chắc chắn đó là một biểu hiện thường xuyên. Nó phù hợp db/migrate///////crea. :-)
ghoti

Câu trả lời:


3

Phiên bản bash nào bạn đang sử dụng? Đối với tôi với 4.1.2, nó dường như hoạt động tốt trên 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  

Bạn có chắc chắn nhấn TAB hai lần cho danh sách tự động hoàn thành?


4
Điều này có liên quan nhiều đến các tập lệnh hoàn thành Bash của bạn hơn là với phiên bản Bash của bạn.
ephemient

1

show-all-if-ambiguouslàm cho việc nhấn tab một lần (thay vì hai lần) hiển thị tất cả các lần hoàn thành. Nó cũng thay đổi cách hoàn thành các khối lượng:

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

global-Complete-word (\ eg) cũng sẽ hoàn thành *0(không có ký tự đại diện ở cuối) 1.0.. Nó cũng hoạt động với các mẫu như */file***/file.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.