有没有一种方法可以~/.zshrc
让我的 ssh 自动完成自动完成Host
,而不是Hostname
?
我的条目中有一个~/.ssh/config
看起来像这样的条目:
Host staging-rfc staging
User crmpicco
Hostname staging.rfc.crmpicco.co.uk
如果我输入ssh sta[TAB]
,它会预先填充 的完整主机名staging.rfc.crmpicco.co.uk
,这会给我一个权限被拒绝的错误 - 可能是因为它尝试使用我的终端用户而不是“crmpicco”登录。
[email protected]: Permission denied (publickey).
我的~/.zshrc
:
# Highlight the current autocomplete option
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
# Better SSH/Rsync/SCP Autocomplete
zstyle ':completion:*:(scp|rsync):*' tag-order ' hosts:-ipaddr:ip\ address hosts:-host:host files'
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*'
# Allow for autocomplete to be case insensitive
zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' \
'+l:|?=** r:|?=**'
# Initialize the autocompletion
autoload -Uz compinit && compinit -i
答案1
将我的更改zstyle
为以下效果非常好:
zstyle ':completion:*:(ssh|scp|ftp|sftp):*' hosts $hosts
zstyle ':completion:*:(ssh|scp|ftp|sftp):*' users $users