bash - 在 zsh 中使用 bash complete -C

标签 bash zsh zsh-completion

zsh bash completion 是否支持 complete -C 'custom command for completion' 命令


我之前在脚本中编写了一个 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

最佳答案

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

关于bash - 在 zsh 中使用 bash complete -C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19662649/

相关文章:

regex - grep 没有按预期运行

node.js - 从作为子进程运行的脚本将 Node 作为后台进程运行

macos - 在 zsh 中安装 npm 后找不到命令

linux - 在终端中显示大数字

bash - for循环中的Zsh字符串数组

windows - bash:在 MobaXterm 中运行 gradle 时找不到小程序

bash - 如何使用一行 bash 和可能的符号将两个程序 fork 到后台?

git - 为 git checkout 命令禁用 Zsh 中标签的自动完成?

zsh - 为多个命令定义 ZSH 补全函数 (compdef)

zsh - 如何使 zsh 中的右箭头键表现得像鱼的向前单字符