ZSH完成订单

时间:2013-02-28 16:18:06

标签: shell zsh zsh-completion

我有一个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

如何按插入订单订购完成?

1 个答案:

答案 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)。

假设您已安装matcher,此代码将为您提供模糊路径完成ala Command-T / CtrlP

相关问题