#compdef zmv zln zcp _arguments -s -S -A '-*' \ '(-C -L -s -p)-M[force mv]' \ '(-M -L -s -p)-C[force cp]' \ '(-M -C -p)-L[force ln]' \ '-f[force overwriting of destination files]' \ '-i[interactive: prompt for each operation]' \ '-n[no execution: just print what would happen]' \ '-Q[force bare glob qualifiers on]' \ '(-C -M)-s[symbolic, passed down to ln]' \ '-v[verbose: print line as it is executed]' \ '-o[specify options to pass to underlying command]: opt string' \ '(-M -C -L -s)-p+[specify program to run instead of cp, ln or mv]:program:_command_names -e' \ '(-W)-w[implicitly add parenthesis to wildcards in the pattern]' \ '(-w)-W[like -w, but turn wildcards in replacement patterns into references]' \ '1:source pattern:_files' \ '2:destination pattern:_files'