Проблема в том, что завершение для _ssh
читает все ваши конфигурационные файлы построчно, ища директивы Host
каждый раз, когда вы пытаетесь завершить хост.
Одним из решений будет переопределение соответствующая функция (_ssh_hosts
), чтобы сделать что-то быстрее (например, имена хостов кеша в памяти для последующих завершений).
Другой вариант - уменьшить конфигурационный файл, переместив фактическую конфигурацию в отдельные файлы, оставив Конфигурационный файл как ничто иное как список Host
/ Include
пар. Например, включите
Host foo
User bob
IdentityFile ~/.ssh/bob_ident
Host bar
User alice
IdentityFile ~/.ssh/alice_ident
в
Host foo
Include foo_config
Host bar
Include bar_config
, где ~/.ssh/foo_config
и ~/.ssh/bar_config
будут содержать соответствующие данные для каждого хоста.
Предположительно, Host
директивы составляют лишь небольшую часть ваших строк 7000 + l, поэтому это должно значительно ускорить _ssh_host
.