macOS zsh完成子命令



我有一个名为,的脚本,它接受一组有限的子命令。假设这个集合是(foo bar qux)。以下是该脚本可接受的CLI调用:

  • , foo
  • , bar
  • , qux

(以上每个参数都可以在右侧接受进一步的可选参数)。

这个脚本在macOS上工作的最小的zsh完成代码是什么?这样,当我输入,<TAB>时,shell将自动完成这三个选项:foo、bar和qux。

最小,命令中添加zsh完成的步骤:

  1. 启用compinit

    autoload -U compinit
    
  2. 使能compdef

    compinit
    
  3. 定义一个函数,用给定的一组值完成/的第一个参数。

    _,() { _arguments -C '1: :(foo bar qux)'; }
    
  4. 将前面的功能_,设置为,命令的补全功能:

    compdef _, ,
    

现在如果你输入逗号空格制表符zsh应该输出:

bar  foo  qux
除了

可以为每个子命令bar/foo/qux添加进一步的补全;看一下这个文档化的例子。

相关内容

  • 没有找到相关文章