我为我的某个工具提供了自定义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
答案 0 :(得分:0)
您可以尝试使用zle -R "Completing..."
。
zle -R [ -c ] [ display-string ] [ string ... ]
...
-R [ -c ] [ display-string ] [ string ... ]
重新显示命令行;这是从用户定义的小部件中调用,以允许更改变为可见。如果给出了显示字符串而非为空,则会在状态行中显示(紧接在正在编辑的行的下方)。
如果给出了可选字符串,则它们会以与打印完成列表相同的方式列在提示下方。如果没有给出字符串,但使用了-c选项,则清除列表。
请注意,此选项仅对使用后不立即退出的窗口小部件有用,因为显示的字符串将在从窗口小部件返回后立即删除。
可以在用户定义的小部件之外安全地调用此命令;如果zle处于活动状态,则显示将刷新,而如果zle未处于活动状态,则该命令无效。在这种情况下,通常没有其他参数。
-
zshzle(1): Zsh Line Editor, Zle Bulitins, zle -R
(我无法找到一个好的锚点,所以请在页面中找到/搜索zle -R
)