残り_パラメータのファイル補完を許可するにはどうすればよいですか?

残り_パラメータのファイル補完を許可するにはどうすればよいですか?

動作するようになりましたが、_arguments "1: :($(/usr/local/bin/aliases-drush.php))" \本当に素晴らしいです。 1行に1つのパラメータを印刷できるPHPスクリプト。ただし、残りのパラメータはローカルファイルにすることができます。引き続き試しましたが、 '*:file:_files'パラメータ2、3などをもう完了しません。

答え1

#compdef foo
local ret=1
_arguments \
  '1:first:(a b c)' \
  '*:files:_files' \
  && ret=0
return $ret

完了またはa bテストc中のファイルが複数あります。最初のパラメータハンドラの変更

  '1: :($(print -l a b c))' \

私にとっても効果的です。プログラムが実行するすべての操作の出力にスペースがある場合は、最初の引数を完了するのに問題がありますが、後続のファイルの完了は中断されません。

  '1: :($(< ~/tmp/opts))' \

それから:

 % print -l "a b" c d > ~/tmp/opts
 % rm ~/.zcompdump
 % exec zsh -l
 % foo
 a  b  c  d

a存在しますか?多くの場合、改行でのみ分割するようなものが見られ、b一般的a bに調査するためにZSHが提供する完成スクリプトがあります。${(f)"$(...)"}cd $fpath[-1]

しかし、「ファイルの完成は機能しません」というフレーズを再現できません。おそらく完全な完成スクリプトとプログラムの適切な出力があるでしょう。

rm ~/.zcompdump ; exec zsh -l完了キャッシュを削除して新しいZSHインスタンスを起動するコマンドに注意してください。侵害の少ない回避策は、特定のコマンド名を使用して特定の削除を実行することです。

function zbouncecompdef { unfunction _$1; autoload -U _$1; }

関連情報