
我希望根據使用上下文有兩種不同的“選項卡”行為。
我希望在bind '"\t":complete'
任何時候都具有預設行為,除非使用者嘗試完成“mybashfunction”命令的參數。在這種情況下,我調用一個特殊函數來產生完成,但我希望“選項卡”像bind '"\t":menu-complete'
設定一樣工作。
答案1
我相信它的 readline 庫一次只支援一種製表符完成行為。
答案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 的正常補全,但是當您按 Tab 鍵完成 myfunc 時,您將獲得“零一二”作為可能的補全。
編輯:哦,是的,將其塞入您的 bashrc 或類似檔案中,以便它來自新的 shell。