2012-01-18 14 views
9

私は、データベースから可能な変形を取得し、TABでそれらを完了するために、Bash補完 - 不必要なタブ・プレスを取り除く方法は?

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" 

を使用しています。限り、これらの変異体は、スペースを含む可能性があるので、私が得る、私はBTABを押し、ときにAB接頭辞を持つ唯一のバリアントがあり、接頭辞と接尾辞として'を使用してそれらをautoquoteするとても便利です'ABC DEF'のようなものです。

しかし、問題は、多くの変異体が存在する場合、その後BTAB私はその後、私は再びTABを押すと、それが唯一の第三で、NOPである、'AB取得TAB私は可能な補完を得る。

縮退する方法はありますかTABプレッシングを1つまたは少なくとも2つに設定しますか?

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

man bashから:あなたが試すことができ

答えて

11

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

完璧なソリューションです。これにより、TAB押下が1つに減少します。 – sknaumov

+4

明白でない場合は、これを自動的に行うには、 'set show-all-if-ambiguous on'を〜/ .inputrcに追加してください。 –

関連する問題