コマンドの関数エイリアスを定義しました:aa
そして、を介し_complete_aa
てaa
コマンドの提案として使用される関数を定義しましたcomplete -F _complete_aa aa
(以下のコードを参照)
aa(){
anothercommand ${@}
}
_complete_aa(){
COMPREPLY=($(compgen -W "clean build start" "${COMP_WORDS[1]}"))
}
complete -F _complete_aa aa
この関数を使用すると、予期しない動作が発生します。
私が入力したときaa cle
と押してTAB
プロンプトが正しくに私の入力を完了しますaa clean
しかし、入力してaa clean bui
を押すTAB
と、プロンプトはへの入力を完了しますが、に変わるaa clean clean
はずaa clean build
です。
私のエラーは、完了中の現在の単語のインデックスを処理しない以下の完了関数にあると思います。
_complete_aa(){
COMPREPLY=($(compgen -W "clean build start" "${COMP_WORDS[1]}"))
}
質問:入力_complete_aa
しclean build start
ている新しいオプション/パラメーターごとに現在の単語を完成させるために、関数の本体をどのように変更する必要がありますか?
完了関数$2
は、「完了中の単語」である位置パラメーターを取得するため、次のように実行できます。
_complete_aa(){
COMPREPLY=($(compgen -W "clean build start" "$2"))
}
補完が実際に特定の単語の選択だけである場合は、-W
代わりに単純な補完を使用できます。
complete -W 'clean build start' aa
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加