2012-01-18 29 views
9

tôi sử dụngHoàn thành Bash - cách loại bỏ các lần nhấn tab không cần thiết?

cur="${COMP_WORDS[COMP_CWORD]}" 

opts=`sqlite3 test.db "${QUERY[COMP_CWORD]}"` 

SAVEIFS="$IFS" 

IFS=$'\n' 

COMPREPLY=($(compgen -S"'" -P"'" -W "${opts}" $cur)) 

IFS="$SAVEIFS" 

để có được phiên bản có thể từ cơ sở dữ liệu và hoàn thành chúng với TAB. Chừng nào những biến thể có thể chứa khoảng trắng, nó là thuận để autoquote chúng bằng cách sử ' như tiền tố và hậu tố, vì vậy khi tôi bấm Một, B, TAB và chỉ có một biến thể với AB tiền tố, sau đó tôi nhận được một cái gì đó như 'ABC DEF'.

Nhưng vấn đề là nếu có nhiều biến thể sau đó sau khi Một, B, TAB tôi nhận được 'AB, sau đó tôi nhấn TAB một lần nữa và nó là NOP, và chỉ ở ba TAB nhấn Tôi có thể hoàn thành có thể.

Có cách nào để giảm bớt TAB cách bấm vào một hoặc ít nhất hai?

Trả lời

11

Bạn có thể thử:

bind 'set show-all-if-ambiguous on' 

Từ man bash:

show-all-if-ambiguous (Off) 
      This alters the default behavior of the completion functions. If set 
      to on, words which have more than one possible completion cause the 
      matches to be listed immediately instead of ringing the bell. 
+0

giải pháp hoàn hảo. Điều này làm giảm chỉ số TAB cho chỉ một lần. – sknaumov

+4

nếu không rõ ràng: thêm 'set show-all-if-ambiguous on' vào ~/.inputrc để làm điều này tự động. –

Các vấn đề liên quan