Lets say, I have one file in current directory, `test.txt` and I want to transfer it using `scp` to remote server. When I use completion, ie: scp -rp test<TAB> instead of completing the rest of the filename for me, zsh completion offers: scp -rp test<TAB> test.txt testuser `testuser` happens to be local user on my system. Why would zsh completion complete local user, when I am connecting to remote server ? That seems like a useless and stupid rule. `scp` is using same completion file as ssh `/usr/share/zsh/functions/Completion/Unix/_ssh`, and `ssh` command has the same behavior, although in case of `ssh` it is less annoying, since ssh is not supposed to complete local filenames. **How can I modify the completion rules for `scp` so that it only offers local filenames, not local users?** UPDATE FOR BOUNTY =========== The accepted solution works for `scp`, but the problem still persist for `ssh`. When I want to connect to `myserver.domain.org` and use completion: ssh m<TAB> the completion system offers `myserver.domain.org` (which is desired), but also local users `man` and `messagebus`, which is idiotic. How can I change the completion system for `ssh/scp` so that instead of completing all local users from `/etc/passwd`, I can specify (hardcoded) list of users that I want to complete? So, in other words: I don't want to disable user completion for `ssh`, as the accepted answer does for `scp`. But I want to provide my own list of users that will be completed, instead using all local users from `/etc/passwd`