在zsh中使用bash complete -C

5

zsh的bash完成支持complete -C '自定义完成命令' 命令吗?


我之前写了一个bash完成函数的脚本,我使用以下命令启用:

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

我希望我的同事们使用zsh时也能够使用补全功能,因此我尝试使用以下.bashrc文件测试与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上使用了Homebrew安装的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

1
答案即将到来,从zsh邮件列表中热门! - Thomas
1个回答

0
截至2013年11月10日,zsh的bashcompinit不能使complete像这样工作。显然,compadd -U是zsh的方式,可以对完成进行细粒度级别的控制,在此脚本确定要建议的确切匹配项。

你想采纳自己的答案,这样问题就不会保持打开状态了吗? - Marlon Richert
1
我真的希望有人回答“现在可以了!”但他们随时可以稍后添加 :) - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接