foo
하나 이상의 파일 이름과 3개의 --옵션 조합을 사용하는 샘플 명령이 있습니다 . 또한 옵션은 명령줄 어디에서나(파일 이름 앞, 뒤, 사이) 지정할 수 있습니다.
foo --bbb file.txt --aaa file2.txt --ccc
물약을 지정하는 완료 파일이 있습니다.
#compdef foo
local -a args
args+=(
'--aaa'
'--bbb'
'--ccc'
)
--options를 사용하여 로컬 파일을 완성하려면 끝에 무엇을 추가해야 합니까?
답변1
전화해도됩니다compadd
더 많은 완료 시간을 선언하려면 여러 번 빌드할 수 있습니다. 일반적으로 이는 여러 가지 방법 중 하나로 발생합니다."새로운" 완성 시스템 접근성 기능.
가장 간단한 방법은 compadd
및 를 모두 호출하는 것입니다 _files
.
#compdef foo
local -a args
args=(--aaa --bbb --ccc)
compadd -- $args
_files
compadd
다음과 같은 도우미 함수를 호출 해야 합니다 ._describe
상황에 맞게 완성을 구성할 수 있으며 설명이 있습니다.
#compdef foo
local args
args=('--aaa:Enable aye' '--bbb:Enable bee' '--ccc:Enable sea')
_describe -o 'Options' args
_files
이것_arguments
함수를 사용하면 명령 완성을 더 쉽게 지정할 수 있지만 간단한 경우에는 큰 이점이 없습니다. 명령이 --
뒤에 오는 모든 항목이 --
옵션이 아닌 파일 이름임을 나타내는 것을 지원하는 경우(대시로 시작하더라도) 반드시 이를 사용하십시오. 이것이 _arguments
s -S
옵션의 역할입니다. before 옵션은 해당 *
옵션이 없으면 해당 옵션이 여러 번 나타날 수 있음을 나타냅니다. 해당 옵션이 이미 존재하는 경우 해당 옵션은 다시 제공되지 않습니다.
#compdef foo
_arguments -S \
'*--aaa[Enable aye]' \
'*--bbb[Enable bee]' \
'*--ccc[Enable sea]' \
'*:file:_files'
명령이 --help
GNU가 확립한 사실상의 표준에 가까운 형식으로 도움말 인쇄를 지원하는 경우 _arguments
구문 분석된 출력을 알릴 수 있으며 출력에서 추론할 수 없는 보다 정교한 동작을 --help
지정하면 됩니다 .--help
#compdef foo
_arguments --
출력에서 추론된 것 외에 다른 것이 필요하지 않은 경우 --help
완성 함수를 정의할 필요가 없습니다._gnu_generic
명령의 완성 기능으로.
compdef _gnu_generic foo