ssh [TAB] とか telnet [TAB] とか ping [TAB] とかで、/etc/hosts だけじゃなく、~/ssh/config に書いてあるホストを展開してくれるようにしようと思い、元からある/usr/share/zsh/4.0.2/functions/Completion/Unix/_hosts を読んでみた、が。
: ${(A)_cache_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}}}
……。これだけで /etc/hosts を読み込みコメントを削除しホスト名だけ拾い出して、配列 $_cache_hosts に代入するらしい。うーがー。
perl に逃げましたとさ。まあともあれ出来た。これで随分快適になる。
一応。
~/lib/zsh/functions とかを作って、そこにファイルを置く。のち ~/.zshrc 等で、fpath=(~/lib/zsh/functions $fpath)として、パスを先に通しておく。最後に ~/.zcompdump を消してキャッシュをクリア。