zsh 完了: sshrc を ssh のように動作させる

zsh 完了: sshrc を ssh のように動作させる

私はこのsshrcパッケージと同じ名前のコマンドを使用して、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。これはシェル構成によって妨げられる可能性があります。この場合、構成を2つに分割して何が問題であるかを確認する必要があります。

このトリックは、次のものと同じであることを_ssh示す完了結果を見て発見されました。sloginssh

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

おすすめ記事