10

私が使う

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"

データベースから可能なバリアントを取得し、を使用してそれらを完成させますTAB。これらのバリアントにスペースを含めることができる限り、'接頭辞と接尾辞として使用して自動引用するのが便利です。したがって、、を押してA、接頭辞を持つバリアントが1つしかない場合は、のようなものになります。BTABAB'ABC DEF'

しかし、問題は、多くのバリアントがある場合、、、の後ABTABを取得し、もう一度'AB押すとNOPになり、3回目のプレスでのみ完了が可能になることです。TABTAB

TABプレスを1つまたは少なくとも2つに減らす方法はありますか?

4

1 に答える 1

12

あなたが試すことができます:

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

差出人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.
于 2012-01-18T22:01:26.840 に答える