也不知道从什么时候开始,感觉 Zsh 终端加载出来的速度,肉眼可见的变慢了,就算执行一个 ls 命令也出来很慢。
性能测试
先使用 /usr/bin/time /bin/zsh -i -c exit 命令进行测试,可以看到占用非常高。
❯ /usr/bin/time /bin/zsh -i -c exit
12.88user 4.26system 0:15.19elapsed 112%CPU (0avgtext+0avgdata 17152maxresident)k
0inputs+48outputs (0major+60964minor)pagefaults 0swaps
❯ /usr/bin/time /bin/zsh -i -c exit
11.16user 3.57system 0:12.95elapsed 113%CPU (0avgtext+0avgdata 17024maxresident)k
0inputs+48outputs (0major+61078minor)pagefaults 0swaps
如果需要精准的查看是什么位置影响,可以使用命令:zsh -xv 查看详情。
优化 nvm 和 pyenv
由于我的开发设计 Node 和 Python 项目开发,因此涉及到不同的环境切换。
使用 zsh-nvm 插件,实现 nvm 的懒加载。
git clone https://github.com/lukechilds/zsh-nvm ~/.oh-my-zsh/custom/plugins/zsh-nvm使用 zsh-pyenv-lazy 插件,实现 pyenv 的懒加载。
git clone https://github.com/davidparsson/zsh-pyenv-lazy.git ~/.oh-my-zsh/custom/plugins/pyenv-lazy然后在 .zshrc 文件中开启插件:
plugins=(
...
zsh-nvm
pyenv-lazy
)删除 .zshrc 原有的 pyenv 启动部分。
删除 .zshrc 原有的 nvm 启动部分并开启 zsh-nvm 的 lazyload,加入:
# zsh-nvm lazy load
export NVM_LAZY_LOAD=true替换 zsh-autosuggestions 和 zsh-syntax-highlighting
使用 fast-syntax-highlighting 为 Zsh 提供丰富的语法高亮显示。
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting使用 zsh-autocomplete 为 Zsh 提供实时提前输入自动完成。
git clone https://github.com/marlonrichert/zsh-autocomplete.git ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-autocomplete然后在 .zshrc 文件中开启插件:
plugins=(
...
fast-syntax-highlighting
zsh-autocomplete
)效果测试
调整后刷新配置文件 source ~/.zshrc,重新测试性能,可以看到效果显著。
❯ /usr/bin/time /bin/zsh -i -c exit
4.53user 0.74system 0:04.90elapsed 107%CPU (0avgtext+0avgdata 7732maxresident)k
0inputs+0outputs (0major+10199minor)pagefaults 0swaps
评论区