5

zsh bash 完成是否支持complete -C 'custom command for completion' command


我之前在脚本中编写了一个 bash 完成功能,我使用

complete -C 'tu --get-bash-completion' tu

我希望使用 zsh 的同事能够使用补全,因此我尝试使用这样的 .zshrc 文件进行测试,以实现 bash 补全兼容性:

autoload compinit
compinit
autoload bashcompinit
bashcompinit
complete -C 'tu --get-bash-completion' tu

当我尝试使用此完成时,看起来 zsh 正在调用完成脚本而没有参数 bash 使用(firstword、current_word、previous_word)调用它。

tom-mba:~ tomb$ zsh
tom-mba% tu Traceback (most recent call last):
  File "/usr/local/bin/tu", line 7, in <module>
    execfile(__file__)
  File "/Users/tomb/Dropbox/code/TrelloCardUpdate/bin/tu", line 3, in <module>
    cli.CLI()
  File "/Users/tomb/Dropbox/code/TrelloCardUpdate/trellocardupdate/cli.py", line 156, in CLI
    getcompletion(sys.argv[i+1:i+4])
  File "/Users/tomb/Dropbox/code/TrelloCardUpdate/trellocardupdate/cli.py", line 86, in getcompletion
    assert len(args) == 3, [args, sys.argv]
AssertionError: [[], ['/usr/local/bin/tu', '--get-bash-completion']]

我在 Mac 上使用自制安装的 zsh:

tom-mba:~ tomb$ zsh --version
zsh 5.0.2 (x86_64-apple-darwin11.4.2)
tom-mba:~ tomb$ which zsh
/usr/local/bin/zsh
4

1 回答 1

0

截至 2013 年 11 月 10 日,zsh 的 bashcompinit 不能complete像这样工作。显然compadd -U,zsh 方法可以对完成进行细粒度控制,其中脚本准确地确定要建议的匹配项。

于 2015-03-01T19:16:56.797 回答