也不知道从什么时候开始,感觉 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
评论区