zsh非常缓慢地开始


63

从创建新的终端窗口到准备就绪,ZSH需要大约一秒半的时间。我很确定罪魁祸首是compinit

我一直无法找到好的文档,compinit,但看起来它应该缓存某些文件中的所有必要的东西,比如.zcompdump

加速它的任何技巧?

Answers:


33

oh-my-zsh在我的笔记本电脑上启动大约需要1.5秒。 我写了一些我采取的步骤,以达到约0.25秒

另一种灵魂总结了将我的更改集成到你的oh-my-zsh 副本所需的步骤

最大的问题是compinit在完全定义fpath之后被称为一大堆额外的时间而不是一次。我oh-my-zsh在github的分支上做了那些修改。这些变化已在github上讨论过,它们似乎对少数人有用。希望这些变化将oh-my-zsh在不久的将来合并。


4
对于未来的读者,我相信所有这些变化现在已合并到上游。
迈克尔·米奥

1
更改可能已向上游移动,但从插件中删除Git对我有很大帮助。
kylehotchkiss

25

虽然ZSH有自己的减速公平份额,如果您在看到Last Login:线路之前发现终端窗口空白了一会儿,您将需要清除日志文件以查看速度改进。这仍然是OSX Lion的一个问题,需要每隔几个月完成一次。瘸子,我知道。

命令是:

sudo rm -rf /private/var/log/asl/*.asl

当然,需要事先阅读本文,以便准确了解发生了什么,因为运行任何sudo rm需要考虑的内容。我只把它放在这里,因为你使用ZSH证明了你的命令行能力。


1
谢谢,这样一个简单的解决方案,一直困扰着我的东西!
Dean

7
我建议不要使用,-r因为没有涉及目录而且它不需要。如果有人sudo rm -rf / private/var/log/asl*.asl错误地输入(私人空间),那么省略它会导致更少的眼泪。
Dean

1
甚至更万无一失,cd /private/var/log/asl然后rm -f *.asl。同样为了记录,这个答案使我从一个接近10秒的启动时间中获益,非常感谢!
加勒特迪斯科2016年

1
为我工作!BTW trash /private/var/log/asl*.asltrash当然需要安装。brew install trash
迈克D

12

我最大的改进来自于从plugin =()部分删除项目。'github'和'brew'插件加载速度很慢。

我也删除了别名的集线器git也加快了提示。

我一直在使用'/ usr / bin / time zsh -i -c exit'记录启动时间,但compinit似乎没有给我带来足够大的差异。

很高兴听到其他人正在做些什么来加快速度。


1
删除githubbrew插件立即解决了我的问题。
Peter Niederwieser

gitbrew插件对我来说非常重要。通过删除ruby插件解决了我的问题。谢谢。
Ivan ZG Xiao

6

您使用的是预安装/bin/zsh还是其他?我问,因为我通过fink安装的zsh开始非常慢,因为它包含了zsh模板,而vanilla正在启动。

使用显式dumpfile(compinit -d dumpfile)运行是否会更快?手册页说明了这一点

compinit的下一次调用将读取转储的文件,而不是执行完整的初始化。


2
我正在使用Oh My Zsh(我认为它使用默认的/ bin / zsh)。当我禁用加载所有Oh My Zsh的插件以及诸如此类的东西时,它会非常快地加载,但我认为在这种情况下compinit永远不会被调用。当我手动调用compinit它需要一段时间。也许这只是因为Oh My Zsh添加了如此多的绑定到compinit?
Eli

5

现在,在查询状态之前,oh-my-zsh会检查特殊的git配置选项oh-my-zsh.hide-status。所以跑

git config oh-my-zsh.hide-status 1

在有问题的存储库。


对我来说,我必须禁用git插件.zshrc。我目前正面临着互联网响应缓慢的问题,这使得zsh变得缓慢
Paschalis

5

对于我来说,Zsh自己的启动时间大约为0.1秒,这足够了。我刚注意到,当我接近50,000命令历史标记时,加载第一个提示变得更像是3秒。

我不知道你们是如何找到缓慢启动的所有其他原因,但我的确是我的第一个猜测。我做了一个mv ~/.zsh_history zsh_history_backup和bam,3秒启动现在是0.1秒启动。奇怪的是,/usr/bin/time /bin/zsh -i -c exit无法捕获加载历史记录所需的时间。

但是,如果你的zsh历史中没有成千上万的命令,那就不是了。我~/.zsh_history测量了1.8MB。它很可能不小心将一大块东西作为命令粘贴到终端中,这也会使历史快速膨胀(尽管这是为了避免这样做,因为它显然会极具破坏性)。


这就是答案。如果没有用oh-my-zsh做任何花哨的东西(很多插件和插件),那么我保证这是因为历史记录。变化是立竿见影的。
Sebastialonso

2

我使用的主题是“af-magic”

切换到“缪斯”解决了这个问题。

编辑〜/ .zshrc并修改该行:

#ZSH_THEME="random"
#ZSH_THEME="af-magic"
ZSH_THEME="muse"

谢谢你的回答,我发现从af-magic转变为其他已解决问题的东西。有趣的是,恢复af-magic仍然很有效。不确定引擎盖下发生了什么。
sarat 2016年

0

清除〜/ .oh-my-zsh / plugins /目录后,我的速度提升了很多。里面有很多未使用的插件。


0

将以下内容添加到〜/ .zshenv中

skip_global_compinit=1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.