2016-08-03 11 views
0

옵션이 슬래시로 시작하는 명령에 대해 zsh (또는 bash) 용 사용자 정의 자동 완성 스크립트를 작성하려고합니다. 예를 들어"windows like"옵션 (슬래시로 시작)이있는 자동 완성 명령

: 나는 zsh을 도우미 _arguments를 사용하려고 노력했지만 작동하지 않았다 MyCommand /foo=bar.txt /yolo=test /final=4

:

#compdef MyCommand 

_MyCommand() 
{ 
    local curcontext="$curcontext" state line 
    typeset -A opt_args 

    _arguments \ 
    '/foo=:foo:_files' 
} 

_MyCommand "[email protected]" 

을하지만 --/를 교체 할 때 그것을 잘 작동합니다.

어떻게하면됩니까?

답변

1

당신은이 같은 _regex_arguments를 사용하는 것을 수행 할 수

matchany=/$'[^\0]##\0'/ 
_regex_arguments _mycommand "$matchany" \(/$'/foo='/ ':option:option:(/foo=)' "$matchany" ':file:filename:_files' \| /$'/yolo='/ ':option:option:(/yolo=)' "$matchany" ':optarg:optarg:(test this)' \| /$'/final='/ ':option:option:(/final=)' /$'[0-9]##\0'/ ':number:number:' \) \# 
_mycommand "[email protected]" 

당신은 여기에 여기에 더 약 _regex_arguments http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Completion-Functions 또는를 읽을 수 있습니다 https://github.com/vapniks/zsh-completions/blob/master/zsh-completions-howto.org에는 널 (null)이없는

여기서주의해야 할 중요한 일이된다 패턴 끝의 char (\ 0)은 옵션 이름과 일치합니다.

+0

나는 파티에 늦었지만, 큰 감사합니다 :) – magnetik