zsh 启动速度极慢

zsh 启动速度极慢

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

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

有没有什么技巧可以加快速度?

答案1

oh-my-zsh我的笔记本电脑启动大约需要 1.5 秒。 我写下了一些步骤,以将其缩短到大约 0.25 秒

另一个善良的灵魂总结了将我的更改整合到您的副本中所需的步骤哦我的-zsh。

最大的问题是,compinit在 fpath 完全定义后,它被调用了很多次,而不是一次。我在 github 上的我的分支上做了这些更改。这些更改已在 github 上讨论过,它们似乎对一些人来说效果很好。希望这些更改能在不久的将来oh-my-zsh合并到。oh-my-zsh

答案2

虽然 ZSH 本身也存在速度变慢的情况,但如果您发现终端窗口在看到该Last Login:行之前有几分钟是空白的,则需要清除日志文件才能看到速度的改善。从 OSX Lion 开始,这仍然是一个问题,需要每隔几个月进行一次。我知道这很无聊。

命令是:

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

当然,需要提前阅读这篇文章这样你就能准确地知道发生了什么,因为运行任何命令都sudo rm需要深思熟虑。我之所以把它放在这里,是因为你对 ZSH 的使用证明了你能够熟练使用命令行来启动。

答案3

就我的情况而言,NVM 使它变得很慢。

原始代码(在 .bash_profile 处,.zshrc 加载我的 bash_profile)

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

我将其改为:

export NVM_DIR="$HOME/.nvm"
#[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
alias nvm="unalias nvm; [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"; nvm $@"

添加了别名(最后一行),因此我只会在尝试使用 NVM 时加载它。它将加载时间从 1.5 秒缩短到 0.2 秒。

/usr/bin/time zsh -i -c exit #If you want to time yours

答案4

你使用的是预装的/bin/zsh还是其他的?我问这个问题,因为我通过 fink 安装的 zsh 启动速度非常慢,因为它包含了zsh 模板,而香草味则立即开始出现。

使用显式转储文件 ( compinit -d dumpfile) 运行是否会使其运行得更快?手册页指出

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

相关内容