Ssh
zsh 完成:使 sshrc 表現得像 ssh
我正在使用該
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 %