我有一个脚本,当使用complete
参数调用时可以自动完成。以下是将该脚本转移到Zsh的Zsh自动完成脚本:
#compdef das
_das() {
local -a commands
self="$(echo $words | cut -d' ' -f1)"
numargs=$(($CURRENT-2))
if [ $numargs -ge 1 ]; then
args=$(echo ${words#$self} | xargs | cut -d' ' -f-$numargs)
fi
$self complete $(echo ${args}) | while read line; do
commands+=("$line")
done
_describe -t commands 'commands' commands
return 0
}
_das
它的工作很好,但在第一次输入命令后,Zsh会记住它显示的最后一个完成,并仅显示该完成,而不再调用$self complete
。
如何强制它每次都调用脚本,而不仅仅是第一次?