I'm trying to setup zsh so that it autocompletes my rclone commands, for example
rclone copy gdr <tab> and it becomes
rclone copy gdrive-johnsmith while also doing the same thing to file names.
rclone did come with a command to generate a zsh autocomplete file, but the file did not autocomplete remote directory names (like
gdrive-johnsmith: above), just the commands like
authorize. I opened up the generated file and could not for the life of me figure out how to make zsh list the remote names (which I can get a list of using
rclone listremotes) and the files together "the correct way" (no parsing ls :P). Anyways, I ended up giving up and doing just that and now my _rclone file looks something like this:
#compdef rclone _arguments \ '1: :->level1' \ '2: :->level2' \ '3: :($(rclone listremotes) $(ls))' _arguments '*: :($(rclone listremotes) $(ls))'
The entire file is like 38 lines but I don't think there's anything relevant in there (I can post the rest if needed). The "_arguments" line used to look like this:
_arguments '*: :_files'
before I changed it to list both the remotes and files in the cwd. Like I said above, I'd like a way to be able to use _files. My current approach is ugly, breaks whenever file or folder names have a space because zsh splits em up, and it groups everything together and it looks horrible:
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
Anyways, is there a way to, in zsh:
- A) Use the _files function or anything that doesn't break whenever I press spacebar to autocomplete rclone remote directories?
- B) If A is not possible, is there atleast a way to (visually) seperate the normal directories and the rclone ones?
ZSH version is 5.1.1, OS is KDE neon 5.11, oh-my-zsh installed too.