修改当前完成选项的zsh中的compopt等价物是什么?

时间:2017-12-28 00:04:53

标签: linux bash shell zsh

我正在为zsh编写一个自动完成脚本,我想在某些条件下启用nospace。 bash等效脚本看起来像这样

_my_completion(){
  if something; then
    compopt -o nospace
  fi
}

complete -F _my_completion <exec>

如何在zsh中实现相同的目标?

1 个答案:

答案 0 :(得分:0)

使用-S ''作为compadd参数可以达到类似的效果,如您所见:

_my_completion(){
  # Here you can access ${words[@]}, $BUFFER, $CURSOR, $NAME, $CURRENT...
  if something; then
    completions_array=(foo bar baz)

    # `-S ''` is the equivalent of `compopt -o nospace`
    compadd -S '' -a completions_array
  fi
}

compdef _my_completion <exec>

如果您熟悉bash补全,可以在this script that loads the bash completions in ZSH中看到zsh补全的比较。