2016-08-03 27 views
0

Ich versuche, ein benutzerdefiniertes Autovervollständigskript für zsh (oder bash) für einen Befehl zu schreiben, dessen Optionen mit einem Schrägstrich beginnen.Automatisches Vervollständigen von Befehlen mit "Windows like" -Optionen (beginnend mit Schrägstrich)

Zum Beispiel: MyCommand /foo=bar.txt /yolo=test /final=4

Ich habe versucht, die zsh Helfer _arguments zu verwenden, aber es hat nicht funktioniert:

#compdef MyCommand 

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

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

_MyCommand "[email protected]" 

Aber wenn ich die / mit -- ersetzen funktioniert es gut.

Wie kann ich das erreichen?

Antwort

1

Sie können, dass _regex_arguments wie dies mit tun:

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]" 

Sie mehr über _regex_arguments hier http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Completion-Functions lesen oder hier: https://github.com/vapniks/zsh-completions/blob/master/zsh-completions-howto.org

Wichtig ist hier zu beachten ist, dass es keine Null char (\ 0) am Ende des Musters stimmt mit den Optionsnamen überein.

+0

Ich war zu spät zur Party, aber ein großes Dankeschön :) – magnetik