我可以有选择地禁用 zsh 补全吗?

我可以有选择地禁用 zsh 补全吗?

我将 prezto 与 一起使用zsh,发现启动新 shell 有点慢。 (注意,在将我的配置转移到其他较慢的系统之前,我正在尝试在快速系统上进行优化。)

基准测试time zsh -i -c exit

  • 0.046 bash:.
  • 0.080:zsh无 prezto。
  • 0.092:zsh带有 prezto,但未加载模块。
  • 0.138:zsh使用 prezto,并加载所有“默认”模块,除了completion.
  • 0.308:zsh使用 prezto,并加载所有“默认”模块。

首先,zshbash加载慢 74%。我可以接受 73% 的进一步减速(使用 prezto 和除完成加载之外的所有模块),但 285% 的减速(使用所有模块)有点太多了。

其中一些补全是有用的,所以有没有办法选择性地禁用其中一些?我听说过这个别处,尽管我不确定这是否只是为了提高制表符完成速度,还是为了提高外壳加载速度。 (如果我可以有选择地禁用完成,这将允许我分析并找出导致速度减慢的原因。)

答案1

看来 prezto 正在从 加载模块/usr/lib/prezto/modules/completion。启用所有功能后,我删除了 的内容/usr/lib/prezto/modules/completion/init.zsh,这再次给了我第二快的加载时间。然后,我开始系统地删除该文件中的行,并且可以隔离导致速度减慢的单行。

unsetopt CASE_GLOB

注意,在我的具体情况下,速度减慢是由compinit我的~/.zshrc.据推测,prezto 也在关闭情况下运行compinit,导致加载时间增加两倍。

相关内容