zsh 到目前为止非常棒。
我正在使用 zsh-completions,但仍然无法像 bash 中那样获得 ssh 命令的自动完成功能,如下图所示:
如何从 /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> "$@"
}