sshクライアント名の補完 for tcsh

SSH力をつけよう
に感化されて.ssh/configの設定をみなおした

Host host1
  HostName 192.168.1.1

Host fumidai
  HostName 192.168.1.2
  User user1
  LocalForward 2200 home.example.net:10022

Host home
  HostName 127.0.0.1
  Port 2200
  ForwardX11 yes

Host host2
  HostName 192.168.10.1
  ForwardX11 yes

Host host3
  HostName 192.168.20.1
  ProxyCommand  ssh host2  nc -w 10 %h %p
# host2のsshのバージョンは3.9なのでncを使った*
 :

*参考 ncある限りぼくはどこまででもいけるッ! - (ひ)メモ
なんて具合に山のようにホスト名を記述したが
シェルで補完できないのが困る

現在tcshを使っているが
Fedoraだと/usr/share/doc/tcsh-***/complete.tcsh
にいろんな補完情報が載っている
# これだと.ssh/known_hostsから補完できる

その情報を元に.cshrcに

if ( -r "$HOME/.ssh/config" ) then
    set noglob
    set ssh_hosts=`cat "$HOME/.ssh/config" | grep '^Host ' | cut -f 2 -d \ ` >& /dev/null
    complete ssh p/1/\$ssh_hosts/ c/-/"(l n)"/   n/-l/u/ N/-l/c/ n/-/c/ p/2/c/ p/*/f/
    unset noglob
endif

を書いて補完できるようにした