#compdef mv gmv local args variant _pick_variant -r variant -b zsh gnu=GNU $OSTYPE --version case $variant; in gnu) args=( '(-b --backup -n --no-clobber)--backup=[make a backup of each existing destination file]: : _values "backup type" {none,off}"[never make backups]" {numbered,t}"[make numbered backups]" {existing,nil}"[numbered backups, if they already exist]" {simple,never}"[always make simple backups]"' '(-b --backup -n --no-clobber)-b[make a backup of each existing destination file]' '(-f --force -i --interactive -n --no-clobber)'{-f,--force}"[don't prompt before overwriting]" '(-f --force -i --interactive -n --no-clobber)'{-i,--interactive}'[prompt before overwriting existing file]' '--strip-trailing-slashes[remove any trailing slashes from each source argument]' '(-S --suffix)'{-S+,--suffix=}'[specify the backup suffix]:backup suffix [~]' '(-t --target-directory)'{-t+,--target-directory=}'[move all source arguments into specified directory]:directory:_directories' '(-T --no-target-directory)'{-T,--no-target-directory}'[treat final argument as a normal file]' '(-u --update)'{-u,--update}'[move only when destination file is older or missing]' '(-v --verbose)'{-v,--verbose}'[show file names after they are moved]' '(- *)--help[display usage information]' '(- *)--version[display version information]' ) [[ $OSTYPE = linux* ]] && args+=( '(-Z --context)'{-Z,--context}'[set SELinux security context of destination file to default type]' ) ;; *) args=( "(-i -n)-f[don't prompt before overwriting]" '(-f -n)-i[prompt before overwriting existing file]' ) ;| darwin*|dragonfly*|freebsd*) args+=( "(-f -i)-n[don't overwrite existing file]" ) ;| darwin*|dragonfly*|*bsd*) args+=( '-v[show file names after they are moved]' ) ;| dragonfly*|freebsd*) args+=( "-h[if target is a symlink to a directory, don't follow it]" ) ;; esac _arguments -s -S $args \ '*:file:_files'