Медленное автозаполнение с использованием zsh для большого файла / .ssh/config - PullRequest
1 голос
/ 13 января 2020

В настоящее время у меня есть файл /.ssh/config, в котором содержится около 7000 строк.

Я пытаюсь выяснить, есть ли способ ускорить функцию автозаполнения в zsh для этого.

Когда я начинаю набирать, на каком сервере я хочу s sh, а затем нажимаю TAB, у меня уходит около 10 секунд, чтобы показать мне возможных хостов, из которых я могу выбрать.

1 Ответ

0 голосов
/ 13 января 2020

Проблема в том, что завершение для _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.

...