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)
    }'

相关内容