macOS 中有 Oh My Zsh 的上位替代么?

57 天前
 bigbugbag

新购入了一台 Mac ,准备不迁移环境而是从头配置一下环境,现在准备安装 shell 插件了。

之前一直用着 Oh My Zsh ,确实很好用,但是感觉初始化时间越来越长,一个新的 session 要 1 ~ 2 秒才初始化完成,可能是插件有点多了,而且看有人说 Oh My Zsh 的性能差点意思。

问下各位现在有 Oh My Zsh 的上位替代么?可以从使用体验、易用度、生态、性能之类的方面讲讲。

13486 次点击
所在节点    程序员
124 条回复
Dragonphy
56 天前
fish ,至于不兼容 bash 的问题,执行的时候切过去不就行了。`bash xx.sh`
wukaige
56 天前
```
# 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 左右。
bigbugbag
56 天前
@wukaige 非常感谢,看样子在我的环境中是 nvm 、conda 、jenv 的锅,其他时间都非常短。

这个方法可以用来统计 hook 的耗时么?我在命令行中敲回车也有明显的延迟,想知道是什么 hook 影响到了这个速度。
bigbugbag
56 天前
@Kobayashi 请问有排查回车耗时的方法么?
lancelock
56 天前
不理解为什么纠结 fish 语法不兼容,我用 fish 是为了开箱即用的命令补全提示、历史记录,脚本还用 bash 语法写呗,执行的时候直接用 bash 执行不就完了,也不用切换什么啊
gefangshuai
55 天前
耗时的问题可以解决,你应该是配置了什么环境变量导致的,网上关于 omz 提速的文章也有很多,排查一下到底是哪个环境导致,删掉。比如 nvm
bycgxss
55 天前
不用 OMZ ,使用 Warp 终端
aloxaf
55 天前
p10k 作者有个工具,你可以用它来测试你的 prompt 耗时: https://github.com/romkatv/zsh-prompt-benchmark

确定耗时以后,可以用二分法来排查是哪个插件在拖慢你的 prompt ,也可以现用 typeset -pm '*_functions' 来查看当前有那些 hook 来缩小范围
zhangchongjie
55 天前
@PTLin 大佬,zellij 在 mac 下怎么配认随终端起用呀
vvv7000
55 天前
@jqtmviyu 试用了一下,发现如果在安装时选择了开启 tmux 的话,那么同时只能开启一个终端?如果有同时开启多个终端的需求有办法解决吗
PTLin
55 天前
@zhangchongjie 我是 Linux ,直接在.zshrc 里最后一行贴的 eval "$(zellij setup --generate-auto-start zsh)"
jqtmviyu
55 天前
@vvv7000 #110 我用 kitty, 不需要 tmux.
houshuu
55 天前
你的问题其实只是 zsh 插件管理器太慢了而已。
建议换用 zinit ,非常快。我现在自己在用的是 sheldon ,写 toml 非常容易管理。这两个都支持延迟加载。

fish 是不推荐的,因为 zsh 几乎所有系统都带了,你可以把配置放到所有服务器和本地机器上,完全无缝体验。
学生时代我也爱用 fish ,现在全 zsh 了,脚本自己也容易写,随时打包一些工作流到 zsh 函数里。

以前还怀念 fish 补全,现在用上 Aloxaf/fzf-tab ,补全非常的轻松。
历史记录直接用 fzf 绑定 c-r 就行了。
fzf 基本是现在终端搜索功能的天花板了。
zjiajun
55 天前
还是用 omz 的吧,插件多一些,分析启动慢学到了,备用下
mrzhangrb
55 天前
@tinytoadd #7 zsh4humans 老哥 感谢。 这个太强了
qfly
55 天前
fish 我也是因为 omz 初始化太慢才换的,但 fish 和 zsh 或者 bash 不太兼容
beyondgamp
55 天前
学习一下
SiLenceControL
55 天前
不妨推荐一下 omz 用哪些插件?
houshuu
55 天前
楼上如果爱用 omz 插件一样可以转的,几乎其他所有的插件管理器都支持直接用 omz 插件。
而且与其说是 omz 插件,其实是 omz 团队提供的 zsh 插件。

比如 zinit 可以用

```
zi snippet OMZ::lib/clipboard.zsh
```

定义
Ipsum
54 天前
看完了,试下了 fish+starship 。感觉挺顺手的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1089105

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX