oh-my-zshでzshを使用します。残念ながら、oh-my-zshはファイルを使用して~/.ssh/config
ホスト名を自動補完しません(参照:問題 #1009、例えば)。
これは、次のコードを使用して簡単にアーカイブできます。
[ -r ~/.ssh/config ] && _ssh_config=($(cat ~/.ssh/config | sed -ne 's/Host[=\t ]//p')) || _ssh_config=()
zstyle ':completion:*:hosts' hosts $_ssh_config
ただし、上記のコマンドをファイルに追加すると、ファイルに定義されて~/.zshrc
いる他のすべてのホスト名ソースが上書きされます。~/.ssh/known_hosts
~/.oh-my-zsh/lib/completion.zsh
どうやってできるか追加私のファイル':completion:*:hosts'
に新しい補完規則がありますか?~/.zshrc
答え1
既存のプロジェクトを検索してプロジェクトを追加する必要があると思います。
zstyle -s ':completion:*:hosts' hosts _ssh_config
[[ -r ~/.ssh/config ]] && _ssh_config+=($(cat ~/.ssh/config | sed -ne 's/Host[=\t ]//p'))
zstyle ':completion:*:hosts' hosts $_ssh_config
答え2
別のオプションはオーバーライドすることです。所有者コマンド(デフォルトgetent hosts
)zstyle
はsを使用します。利点は、ssh
これを実行して動的に作成できることです(システム完了キャッシュを除く)。
zstyle ':completion::complete:ssh*:*:hosts' command '
getent hosts; sed -n "s/^Host[=[:blank:]]*/ignored /p" ~/.ssh/config'
答え3
最良のオプションはzshのデフォルト値を使用するようです。
oh-my-zshに関する私のプールリクエストをご覧ください。https://github.com/robbyrussell/oh-my-zsh/pull/1498
答え4
oh-my-zshをよりよく作成され維持されたバージョンに置き換えることができます。https://github.com/sorin-ionescu/preztoデフォルトのzshコンプリートとこの外部モジュールを使用してください。https://github.com/zsh-users/zsh-completions