5

zsh bash の補完はサポートされていcomplete -C 'custom command for completion' commandますか?


私は以前にスクリプトで bash 補完関数を書いていました。

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

zsh を使用している同僚が補完を使用できるようにしたいので、bash 補完の互換性について、次のような .zshrc ファイルでテストしてみました。

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

この補完を使用しようとすると、bash が呼び出す引数 (firstword、current_word、previous_word) なしで zsh が補完スクリプトを呼び出しているように見えます。

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 に答える