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

관련 정보