我为我的一个工具提供了自定义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