Ssh

zsh 完成:使 sshrc 表現得像 ssh

  • December 12, 2017

我正在使用該sshrc包及其同名命令在 SSH 登錄時使遠端機器的 shell 源成為我本地 .sshrc 文件的內容。不過,我真的很喜歡 zsh 的主機自動補全(基於~/.ssh/{config,authorized_keys}and/etc/hosts文件)。

將 ssh 別名為 sshrc 不會欺騙 zsh(似乎它在載入完成配置之前解析了別名)。我一直試圖弄亂zsh的conf,例如復製/usr/share/zsh/5.3.1/functions/_ssh_sshrc,編輯所述文件並重命名它的*_ssh()*函式……沒有運氣。

由於我的 ssh 配置文件中有幾千台主機,因此將不勝感激。

這對我有用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
% 

引用自:https://unix.stackexchange.com/questions/410456