2016-08-03 2 views
0

Я пытаюсь написать собственный сценарий автозаполнения для zsh (или bash) для команды с параметрами, начинающимися с косой черты.Автоматические полные команды с параметрами «windows like» (начиная с косой черты)

Например: MyCommand /foo=bar.txt /yolo=test /final=4

Я пытался использовать помощник ЗШ _arguments но это не сработало:

#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 не

Важно отметить здесь, что не существует нулевой char (\ 0) в конце шаблона соответствует именам опций.

+0

Я опоздал на вечеринку, но большое спасибо вам :) – magnetik

Смежные вопросы