사용자 정의 스크립트에 대한 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