zsh 补全:使 sshrc 表现得像 ssh

zsh 补全:使 sshrc 表现得像 ssh

我使用该sshrc包及其同名命令使远程计算机的 shell 在 SSH 登录时获取本地 .sshrc 文件的内容。不过,我真的很喜欢 zsh 的主机自动完成功能(基于~/.ssh/{config,authorized_keys}/etc/hosts文件)。

将 ssh 别名为 sshrc 不会欺骗 zsh (似乎它在加载完成配置之前解析了别名)。我一直在尝试弄乱 zsh 的conf,例如复制/usr/share/zsh/5.3.1/functions/_ssh_sshrc,编辑所述文件并重命名它_ssh()功能...没有运气。

非常感谢您的指点,因为我的 ssh 配置文件中有几千台主机。

答案1

这对我有用zsh 5.4.2

$ PS1='%% ' zsh -f
% rm ~/.zcompdump
% autoload -U compinit && compinit
% compdef sshrc=ssh
% sshrc ...

最低配置下zsh -f。这可能会受到您的 shell 配置的阻碍;在这种情况下,您需要将您的配置一分为二,看看是什么搞砸了。

这个技巧是通过查看_ssh补全结果发现的,它显示slogin与 相等ssh

% grep compdef $fpath[-1]/_ssh
#compdef ssh slogin=ssh scp ssh-add ssh-agent ssh-keygen sftp ssh-copy-id
% 

相关内容