我用
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 , B 时, TAB 并且只有一个带有AB
前缀的变体,然后我得到类似'ABC DEF'
的内容。
但问题是,如果有很多变种,那么在 A 之后, B , TAB 我得到'AB
,那么我再次按 TAB 并且它是NOP,只有在第三个 TAB 按下我才有可能完成。
有没有办法将 TAB 压缩减少到一个或至少两个?
答案 0 :(得分: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.