bash 像 zsh shell 中使用 /etc/hosts 文件自动完成 ssh 命令一样?

bash 像 zsh shell 中使用 /etc/hosts 文件自动完成 ssh 命令一样?

zsh 到目前为止非常棒。
我正在使用 zsh-completions,但仍然无法像 bash 中那样获得 ssh 命令的自动完成功能,如下图所示:

BASH 与 ZSH

如何从 /etc/hosts 获取主机名SSH | SCP |远程登录zsh shell 中的命令自动补全?

更新1:

https://github.com/sunlei/zsh-ssh:与默认 SSH 完成相比,此 SSH 完成提供了更多功能。

答案1

在您启用其完整的补全系统之前,Zsh 不会为您提供主机补全。您可以通过将以下内容添加到您的.zshrc文件中来完成此操作:

autoload -Uz compinit
compinit

初始化后,Zsh 的完成系统将从ssh 配置文件中的 、 和 / 行/etc/hosts检索/etc/ssh/ssh_known_hosts主机名~/.ssh/known_hosts。查看这些文件的内部。Host ...Name ...

请注意,如果您已ssh为另一个命令添加别名,zsh则会为该其他命令提供补全。如果您希望它为其他命令提供与 相同的完成ssh,您需要告诉它这样做,如下所示:

alias ssh=<some other command>
compdef _ssh <some other-command>=ssh

或者,您可以使用函数而不是别名:

ssh() {
  <some other-command> "$@"
}

相关内容