首页 > 解决方案 > 使用 zsh 处理大型 /.ssh/config 文件的自动完成速度很慢

问题描述

我目前有一个 /.ssh/config 文件,其中包含大约 7000 行。

我正在尝试查看是否有办法为此加快 zsh 中的自动完成功能。

当我开始输入我想通过 ssh 进入的服务器,然后按下TAB它大约需要 10 秒钟,它会显示我可以选择的可能主机。

标签: zshiterm2oh-my-zshssh-config

解决方案


问题是每次尝试完成主机时,完成 for_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大大加快速度。


推荐阅读