我爲我的一個工具提供了自定義ZSH Tab完成功能。它工作得很好,但有時需要很長時間才能回答;有沒有一種方法可以顯示工具運行時(以及運行完成之前)發生了什麼?自定義ZSH完成器運行時顯示進度指示
例如,是否有可能使其顯示當前線以下信息,如:
prompt$ pypath /providers/conf<TAB>
Completing...
這裏的挑戰是,必須讓光標返回其先前的位置(我打「TAB」 )一旦完成候選人可用。我知道ZSH可以做到這一點,但它可以顯示一條消息之前,該工具完成運行?
這裏是我目前完成的腳本:
#compdef pypath
# This does not work; it is only added when the whole thing ends
# _message -r "Completing..."
IFS=$'\n' path_candidates=($(pypath "${PREFIX}*" | sed 's|.*/||' | sort -u))
compset -P '*/'
if [ -z "$path_candidates" ]; then
compadd -x "No matches found."
else
compadd -q -S '/' $path_candidates
fi
您是否嘗試過只使用'打印「完成......」'而不是'_message'? – Adaephon
是的,但之後不會刪除,這會使完成者在「正在完成...」結尾添加完成。 – Whyte
在這種情況下,您可以嘗試'print -n'正在完成... \ r''。 '-n'防止打印換行符,'\ r'將光標移動到行的開頭。一旦完成列表被打印,它應該覆蓋文本。 – Adaephon