我有一个ZSH完成符,提供预期的完成,但是按照字典顺序提供它们,而不是通过compadd
添加它们的顺序:
_matcher_complete() {
(git ls-files 2>/dev/null || find .) | /usr/local/bin/matcher -l20 ${words[CURRENT]} | while read line; do
compadd -U "$line"
done
compstate[insert]=menu
}
zle -C matcher-complete complete-word _generic
zstyle ':completion:matcher-complete:*' completer _matcher_complete
zstyle ':completion:matcher-complete:*' menu-select
bindkey '^X^T' matcher-complete
如何按插入订单订购完成?
答案 0 :(得分:2)
使用另一个ZSH完成脚本获取灵感,我将_matcher_complete
函数更改为以下内容:
_matcher_complete() {
integer i=1
(git ls-files 2>/dev/null || find .) | /usr/local/bin/matcher --limit 20 ${words[CURRENT]} | while read line; do
compadd -U -2 -V $i -- "$line"
i=$((i+1))
done
compstate[insert]=menu
}
请注意compadd
的不同参数。我没有足够的时间来实际了解每个标志正在做什么(请参阅man zshcompwid),但似乎您需要明确指定顺序(因此在上面的函数中使用$i
)。