雖然chepner已經得出正確的結論,安裝是不可避免的,但我會建議看看其他項目如何解決這個問題。
的特拉維斯CI 特拉維斯寶石提供首次執行安裝完工。它節省完成腳本〜/ .travis/travis.sh然後追加以下至的.bashrc:
# added by travis gem
[ -f ~/.travis/travis.sh ] && source ~/.travis/travis.sh
前面的例子是有點侵入。有關更自由放任的方法,請參閱Python的pip
(與Ruby的gem
類似)。它有一個隱藏的完成選項,它向stdout輸出一個bash或zsh完成腳本。由用戶決定如何獲取它。
pip completion --bash
輸出以下:
# pip bash completion start
_pip_completion()
{
COMPREPLY=($(COMP_WORDS="${COMP_WORDS[*]}" \
COMP_CWORD=$COMP_CWORD \
PIP_AUTO_COMPLETE=1 $1))
}
complete -o default -F _pip_completion pip
# pip bash completion end
在一個有些不同,但是相關說明...如果你看一下上述腳本完成,你會發現它做的東西比較奇特。它使用第三個選項,而不是使用靜態完成列表(必須經常更新並且容易出現錯誤)或通過解析幫助消息動態生成完成(通常無法接受地較慢)。它直接在pip
中傳遞命令行狀態,以使其生成完成。
也許最相關的,也是最偉大的方法是創建一個Ruby寶石的全局完成腳本。用戶只需安裝一個全局完成gem(沒有任何解決方法),然後完成即可用於任何其他gem。據我所知,沒有人在Ruby中實現過。對於Python實現,請參閱argcomplete。
安裝如下:
pip install argcomplete
activate-global-python-argcomplete --dest=/path/to/bash_completion.d
腳本很容易適應。它基本上是一個單線程來將您的解析器對象傳遞給argcomplete。
來源
2015-11-16 23:42:34
Six
我知道:(我希望解決這個「安裝過程」 - 不管它是一個約定(「把你的完成點放在這裏,他們將被自動使用」)或其他東西... – awendt 2012-07-25 09:46:46