zsh完了:ディレクトリーではなく、指定されたパスのファイルのみを完了します。

zsh完了:ディレクトリーではなく、指定されたパスのファイルのみを完了します。

指定したパスで最初のレベル(深さ1)のファイルのみを完了し、ディレクトリを無視するだけです。を指定してみ-g '*(.)'ましたが効果がないようです。

#compdef foo

 local state

_arguments -S : \
    '-i' \
    '-l' \
    '-w' \
    '1: :->myfiles'

 case $state in
    myfiles)
        _files -W /foo/bar -g '*(.)'
        ;;
 esac

それでもファイルとディレクトリが表示されます。

最初のレベルのファイルのみを表示する方法は?私はこのディレクトリのより深いファイルには興味がありません。

ベストアンサー1

_arguments -S : \
    '-i' \
    '-l' \
    '-w' \
    '1: :{
      _wanted all-files expl descriptiongoeshere compadd - /foo/bar/*(^/:t)
    }'

おすすめ記事