zsh 완료: 지정된 디렉터리의 파일을 완료합니다.

zsh 완료: 지정된 디렉터리의 파일을 완료합니다.

내 스크립트는 선택적 매개 변수(-i, -w)와 지정된 디렉터리의 파일 이름을 사용합니다. zsh에게 일반 파일(디렉토리나 심볼릭 링크가 아닌)만 완료하도록 어떻게 지시합니까?$HOME/data

이 내 꺼야 /usr/share/zsh/functions/Completion/Unix/_my-script.

#compdef my-script

_my-script() {
    integer ret=1
    local -a args
    args+=(
    '-i[case insensitive]'
    '-w[match whole words]'
    )

    _arguments $args[@] && ret=0
    return ret
}

_my-script

어디에 추가 하고 일반 파일만 완료하도록 _files지정하는 방법은 무엇입니까 ?zsh$HOME/data

#compdef my-script또한 첫 번째 줄 은 주석이 아닌 것 같습니다 . 완성된 파일에 댓글을 어떻게 추가하나요?

답변1

파일 이름은 매개변수 1이므로 1다음으로 전달됩니다._arguments. 위치 1은 매개변수를 취하므로 매개변수는 _arguments다음과 같습니다. 완료할 파일을 지정하려면 다음 옵션을 전달하세요.1:description:code to do the completion_files, 그 중 일부는 다음에서 상속됩니다._path_files: 포함될 수 있는 특정 패턴과 일치하도록 -W지정된 디렉터리 내에서 완료됩니다 .-g글로벌 예선파일 형식을 제한합니다. 디렉터리는 항상 제공되고 디렉터리 통과가 허용되지 않으면 디렉터리가 제공되지 않으므로 대신 _path_files사용 하세요 ._files_files_path_files-g

args=( …
  '1:thing:_path_files -W ~/data -g "*(.)"'
)

리뷰를 작성하고 싶다면 일반적인 방법으로 작성하세요.#compdef …첫 번째 줄은 파일에 가 포함되어 있음을 zsh에 알려주는 마법 주석입니다 . 초기화 파일에 my-script있는 것과 같습니다 . compdef _my-script my-script첫 번째 줄에 있어야 합니다.

관련 정보