zsh 완성: 사용자 정의 스크립트를 위한 전체 옵션

zsh 완성: 사용자 정의 스크립트를 위한 전체 옵션

사용자 정의 스크립트에 대한 zsh 완료 규칙이 있습니다. 내 스크립트는 0개 이상의 옵션(으로 시작 -)과 0개 이상의 임의 문자열(패턴)을 사용할 수 있습니다.

_arguments -S : \
    '--foo' \
    '--bar' \
    '1:pattern:'

이 규칙은 부분적으로만 유효하며 형식은 다음과 같습니다.

script "somestring" <TAB>

--foo또는 --bar--f<TAB>자동 완성 제공--foo

하지만,

script <TAB>

아무것도 하지 않습니다. 옵션을 나열하고 싶습니다( --foo, --bar)

명시적으로 시작할 때에도 --옵션이 표시되지만 자동 완성되지는 않습니다. 입력 중이고 --f<TAB>원하는 옵션이 모호하지 않은 경우에도 마찬가지입니다.

script --f<TAB>

자동으로 이루어져야 한다--foo

즉, 요약하면 string무엇이든 될 수 있기 때문에 자동으로 수행되는 작업은 없습니다. 그래서 문자열/패턴 입력 여부에 관계없이 키를 누를 때 --options를 자동 완성하고 싶습니다.

-제 생각에는 특정 방식으로 시작하는 모든 항목은 문자열이 아니라 옵션이므로 사용 가능한 옵션에서 자동 완성되어야 한다는 것을 완성 규칙에 지정해야 합니다.

답변1

나에게 맞는 것을 찾았습니다.

___script() { _arguments -S : }
__script() { _arguments -S : --foo --bar 1:pattern:___script }
compdef __script script

관련 정보