Estou tentando configurar o zsh para que ele complete automaticamente meus comandos rclone, por exemplo, rclone copy gdr <tab>
e se torne rclone copy gdrive-johnsmith
, além de fazer a mesma coisa com nomes de arquivos.
O rclone veio com um comando para gerar um arquivo de preenchimento automático de zsh, mas o arquivo não preencheu automaticamente nomes de diretório remotos (como gdrive-johnsmith:
acima), apenas os comandos copy
, listremotes
e authorize
. Eu abri o arquivo gerado e não poderia para a vida de mim descobrir como fazer lista zsh os nomes remotos (que eu posso obter uma lista de usando rclone listremotes
) e os arquivos juntos "a maneira correta" ( sem ls de análise : P). De qualquer forma, acabei desistindo e fazendo exatamente isso e agora meu arquivo _rclone é algo como isto:
#compdef rclone
_arguments \
'1: :->level1' \
'2: :->level2' \
'3: :($(rclone listremotes) $(ls))'
_arguments '*: :($(rclone listremotes) $(ls))'
O arquivo inteiro é como 38 linhas, mas eu não acho que haja nada relevante lá (eu posso postar o resto se necessário). A linha "_argumentos" costumava ficar assim:
_arguments '*: :_files'
antes de alterá-lo para listar os arquivos remotos e os arquivos no cwd. Como eu disse acima, eu gostaria de uma maneira de poder usar _files. Minha abordagem atual é feia, quebra sempre que os nomes de arquivos ou pastas têm um espaço, porque o zsh é dividido, e agrupa tudo e fica horrível:
17:43:06 /usr/share/zsh/vendor-completions
» rclone copy
_bootctl gdrive-fakeName: _rclone
box-fakeName: _hostnamectl _sd_hosts_or_user_at_host
_busctl _journalctl _sd_outputmodes
_curl _localectl _sd_unit_files
dropbox-google-fakeName: _loginctl _systemctl
etc ...
De qualquer forma, existe uma maneira de, em zsh:
- A) Use a função _files ou qualquer coisa que não quebre sempre que eu pressionar a barra de espaço para autocompletar diretórios remotos do rclone?
- B) Se A não for possível, existe
pelo menos uma maneira de (visualmente) separar os diretórios normais e
clone?
A versão do ZSH é 5.1.1, o SO é o KDE neon 5.11, o oh-my-zsh também é instalado.