
使用コンテキストに応じて、「タブ」の 2 つの異なる動作を設定したいと思います。ユーザーが「mybashfunction」コマンドの引数を補完しようとしているとき以外は、常に
デフォルトの動作を設定したいと思います。この場合、補完を生成するために特別な関数を呼び出しますが、「タブ」は設定されているbind '"\t":complete'
場合と同じように動作するようにしたいと思います。bind '"\t":menu-complete'
答え1
readline ライブラリは、一度に 1 種類のタブ補完動作のみをサポートすると思われます。
答え2
これがあなたが探しているものですか?Bash: メニュー補完は一致するものが少ない場合のみ
答え3
これは、bash の完全なルールを使用することで実現できます...
_myfunc() {
_opts="zero one two"
# COMPREPLY is bash built-in for array of possible completions
COMPREPLY=()
# cur & prev are current & previous words typed in shell
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
COMPREPLY=( $( compgen -W "${_opts}" -- ${cur} ))
return 0
}
complete -F _myfunc myfunc
これは bash の通常の補完には影響しませんが、タブ補完で myfunc を入力すると、補完候補として「ゼロ、1、2」が表示されます。
編集: ああ、これを bashrc などに貼り付けて、新しいシェルでソースされるようにします。