我的 zsh 完成文件_cssh
有这一行,它仅从 /etc/hosts 完成主机:
'*:userhostport: _alternative hosts:host:_hosts usersathosts:userathost:_user_at_host'
如何使其完成 ~/.ssh/config 中定义的主机,与 ssh 相同?完整的 _ssh 文件是这里
我不需要填写用户名。只是来自的主机名/etc/hosts
以及 中定义的主机~/.ssh/config
。另外,重要的是多主机可以完成(cssh是cluster ssh,需要多主机,不像ssh)
答案1
请您尝试alternative
从两者/etc/hosts
更新~/.ssh/config.
"*:userhostport: _alternative 'hosts from /etc/hosts:hosts:host:_hosts' 'hosts from ~/.ssh/config:hosts:host:_ssh_config_hosts' usersathosts:userathost:_user_at_host"
并将以下函数添加到_cssh
文件中的函数定义之前_cssh
。
_ssh_config_hosts() { local hosts hosts=("${(@f)${(ps:\n:)${(f)"$(<$HOME/.ssh/config)"}:#Host*}") _describe -t hosts 'hosts from ~/.ssh/config' hosts }
那么你应该可以使用/etc/hosts
和~/.ssh/config
。