【问题标题】:ZSH completion orderZSH完成订单
【发布时间】:2013-02-28 16:18:06
【问题描述】:

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

如何按插入顺序排列完成?

【问题讨论】:

    标签: shell zsh zsh-completion


    【解决方案1】:

    使用另一个 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 2013-02-14
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      相关资源
      最近更新 更多