Bash完成 - 如何摆脱不必要的标签按?

时间:2012-01-18 21:12:30

标签: bash shell bash-completion

我用

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 压缩减少到一个或至少两个?

1 个答案:

答案 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.