新购入了一台 Mac ,准备不迁移环境而是从头配置一下环境,现在准备安装 shell 插件了。
之前一直用着 Oh My Zsh ,确实很好用,但是感觉初始化时间越来越长,一个新的 session 要 1 ~ 2 秒才初始化完成,可能是插件有点多了,而且看有人说 Oh My Zsh 的性能差点意思。
问下各位现在有 Oh My Zsh 的上位替代么?可以从使用体验、易用度、生态、性能之类的方面讲讲。
102
wukaige 9 天前 1
```
# zsh boot time report start=$(date +%s.%N) zmodload zsh/zprof ... zprof | head -n 20; zmodload -u zsh/zprof echo "Runtime was: $(echo "$(date +%s.%N) - $start" | bc)" ``` 用 zprof 看看耗时的是哪些插件,然后着手优化就像,之前 zsh shell 启动需要 1s 左右,砍掉大部分耗时插件再用 zinit 延迟加载,现在只要 0.1 s 左右。 |
103
bigbugbag OP @wukaige 非常感谢,看样子在我的环境中是 nvm 、conda 、jenv 的锅,其他时间都非常短。
这个方法可以用来统计 hook 的耗时么?我在命令行中敲回车也有明显的延迟,想知道是什么 hook 影响到了这个速度。 |
105
lancelock 9 天前
不理解为什么纠结 fish 语法不兼容,我用 fish 是为了开箱即用的命令补全提示、历史记录,脚本还用 bash 语法写呗,执行的时候直接用 bash 执行不就完了,也不用切换什么啊
|
106
gefangshuai 9 天前
耗时的问题可以解决,你应该是配置了什么环境变量导致的,网上关于 omz 提速的文章也有很多,排查一下到底是哪个环境导致,删掉。比如 nvm
|
107
bycgxss 9 天前
不用 OMZ ,使用 Warp 终端
|
108
aloxaf 9 天前
p10k 作者有个工具,你可以用它来测试你的 prompt 耗时: https://github.com/romkatv/zsh-prompt-benchmark
确定耗时以后,可以用二分法来排查是哪个插件在拖慢你的 prompt ,也可以现用 typeset -pm '*_functions' 来查看当前有那些 hook 来缩小范围 |
109
zhangchongjie 9 天前
@PTLin 大佬,zellij 在 mac 下怎么配认随终端起用呀
|
111
PTLin 9 天前 1
@zhangchongjie 我是 Linux ,直接在.zshrc 里最后一行贴的 eval "$(zellij setup --generate-auto-start zsh)"
|
113
houshuu 9 天前
你的问题其实只是 zsh 插件管理器太慢了而已。
建议换用 zinit ,非常快。我现在自己在用的是 sheldon ,写 toml 非常容易管理。这两个都支持延迟加载。 fish 是不推荐的,因为 zsh 几乎所有系统都带了,你可以把配置放到所有服务器和本地机器上,完全无缝体验。 学生时代我也爱用 fish ,现在全 zsh 了,脚本自己也容易写,随时打包一些工作流到 zsh 函数里。 以前还怀念 fish 补全,现在用上 Aloxaf/fzf-tab ,补全非常的轻松。 历史记录直接用 fzf 绑定 c-r 就行了。 fzf 基本是现在终端搜索功能的天花板了。 |
114
zjiajun 9 天前
还是用 omz 的吧,插件多一些,分析启动慢学到了,备用下
|
116
qfly 9 天前 via Android
fish 我也是因为 omz 初始化太慢才换的,但 fish 和 zsh 或者 bash 不太兼容
|
117
beyondgamp 8 天前 via iPhone
学习一下
|
118
SiLenceControL 8 天前
不妨推荐一下 omz 用哪些插件?
|
119
houshuu 8 天前
楼上如果爱用 omz 插件一样可以转的,几乎其他所有的插件管理器都支持直接用 omz 插件。
而且与其说是 omz 插件,其实是 omz 团队提供的 zsh 插件。 比如 zinit 可以用 ``` zi snippet OMZ::lib/clipboard.zsh ``` 定义 |
120
Ipsum 8 天前
看完了,试下了 fish+starship 。感觉挺顺手的。
|
121
casstiel 8 天前
|
122
wukaige 8 天前 1
@bigbugbag #103
可以的,开启 zmodload zsh/zprof 后,在 zsh 里面按几次回车键,再运行 zprof ,会显示函数调用次数与耗时,类似于下面这种: 2) 10 397.99 39.80 14.63% 397.99 39.80 14.63% _atuin_preexec |
124
wensonsmith 8 天前
fish + fisher (插件管理) + Pure(主题) + Starship(Prompt) + Warp
丝滑 |