私はUbuntu Linux 10.04を実行しています。
私の.bashrcファイルには次のものがあります。
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
次のように入力した場合にのみオートコンプリートに問題があります。
作る Tab
何らかの理由で動作が停止し、この状況から逸脱する唯一の方法は、キーボード割り込みを送信することです。奇妙なことは、他のプログラムを実行するときにオートコンプリートに問題がないということです...
私の質問はこれに特別な理由がありますか? makeのオートコンプリートコマンドを具体的に変更する方法はありますか?
この質問を読んだ。tcshでMakefileルールをオートコンプリートしかし、私のシステムはどこでもtcshファイルを見つけることができません。
これはset-xとmakeの結果です。Tab
make + local file makef makef_dir=. makef_inc cur prev i split=false
+ COMPREPLY=()
++ _get_cword
++ '[' -n '4.1.5(1)-release' ']'
++ __get_cword4
++ local i
++ local LC_CTYPE=C
++ local 'WORDBREAKS=
"'\''><=;|&(:'
++ WORDBREAKS='
'\''><=;|&(:'
++ WORDBREAKS='
><=;|&(:'
++ '[' -n '' ']'
++ local 'cur=make '
++ local 'tmp=make '
+++ expr 'make ' : '.*[
><=;|&(:]'
++ local word_start=5
++ '[' 5 -ge 2 ']'
++ local char=e
++ '[' e '!=' '\' ']'
++ break
++ cur=
++ printf %s ''
+ cur=
+ prev=make
+ _split_longopt
+ [[ '' == --?*=* ]]
+ return 1
+ case $prev in
+ false
+ [[ '' == -* ]]
+ (( i=0 ))
+ (( i < 2 ))
+ [[ make == -C ]]
+ (( i++ ))
+ (( i < 2 ))
+ [[ '' == -C ]]
+ (( i++ ))
+ (( i < 2 ))
+ (( i=0 ))
+ (( i < 2 ))
+ [[ make == -f ]]
+ (( i++ ))
+ (( i < 2 ))
+ [[ '' == -f ]]
+ (( i++ ))
+ (( i < 2 ))
+ '[' -n '' ']'
+ '[' -n . ']'
+ makef_dir='-C .'
+ COMPREPLY=($( compgen -W "$( make -qp $makef $makef_dir 2>/dev/null | awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ \
{split($1,A,/ /);for(i in A)print A[i]}' )" -- "$cur" ))
+++ make -qp -C .
+++ awk -F: '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ \
{split($1,A,/ /);for(i in A)print A[i]}'