2012-01-18 5 views
9

utilizoFinalización del bash: cómo deshacerse de las pulsaciones innecesarias de pestañas?

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" 

para obtener posibles variantes de la base de datos y completarlos con TAB. Mientras estas variantes podrían contener espacios, es conveniente hacer autoquote usando ' como prefijo y sufijo, por lo que cuando pulso Un, B, TAB y sólo hay una variante con AB prefijo, cuando me siento algo así como 'ABC DEF'.

Pero el problema es que si hay muchas variantes a continuación, después Un, B, TAB consigo 'AB, entonces presiono TAB una vez más y es NOP, y sólo en el tercer TAB presione obtener posibles terminaciones.

¿Hay alguna manera de reducir TAB presionando a uno o al menos dos?

Respuesta

11

Usted puede tratar de:

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

De 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

solución perfecta. Esto reduce las presiones de TAB a solo una. – sknaumov

+4

si no es obvio: agregue 'set show-all-if-ambiguous on' a ~/.inputrc para hacer esto automáticamente. –

Cuestiones relacionadas