新购入了一台 Mac ,准备不迁移环境而是从头配置一下环境,现在准备安装 shell 插件了。
之前一直用着 Oh My Zsh ,确实很好用,但是感觉初始化时间越来越长,一个新的 session 要 1 ~ 2 秒才初始化完成,可能是插件有点多了,而且看有人说 Oh My Zsh 的性能差点意思。
问下各位现在有 Oh My Zsh 的上位替代么?可以从使用体验、易用度、生态、性能之类的方面讲讲。
1
zengxs 18 天前 5
fish
|
2
me262 18 天前
你看看这个可以不,我日常 linux 用这个
https://starship.rs/zh-CN/ |
3
FryFryFry 18 天前
fish
|
5
synthpop123 18 天前 1
我在用 zinit ,比 oh-my-zsh 快些,支持插件的快速加载( light )和懒加载( turbo mode ),还可以使用 snippet 功能直接复用 omz 仓库中的插件
https://blog.lkwplus.com/posts/macos-dev-setup#zsh-%E9%85%8D%E7%BD%AE |
6
Azone 18 天前
fish + starship ,用了你就回不去了
|
7
tinytoadd 18 天前
fish 还不错,对 jethrokuan/z 这个插件爱不释手。
之前用的 zsh4humans ,这个也很强,开箱即用。感觉作者对 zsh 的理解恐怖如斯。 |
8
mcfog 18 天前
fish
此类主题罕见的 fish 用户大量冒泡哈哈 |
9
ospider 18 天前
直接用 fish
|
10
tinytoadd 18 天前
@tinytoadd zsh4humans 有个很强的优势是 gitstatus 这个插件,它能异步收集 git 信息并显示在 prompt 上。之前一直想把它移植到 fish 上,但很难,没办到。
|
11
AlexShui 18 天前 via Android
借楼问问 Windows 终端的工具
|
12
longlongame 18 天前 1
自己用 zinit 搭的一个配置: https://github.com/xukaihub/dotfiles/blob/main/shell/.zshrc
目前 Coding 环境:Alacritty+Zsh+Tmux+Neovim(LazyVim) |
13
PTLin 18 天前
1~2 秒真无所谓吧。我不光有 omz ,还有个 zellij ,启动时间要 3~5 秒,但是开了之后基本就不关了,这点时间无所谓的。
|
14
FalconD 18 天前 via Android
建议 fish 一步到胃
|
15
sketcherly 18 天前
zsh 原生+自动补全插件+自己写个 git 分支的小脚本,速度飞起,功能也感觉够用了
|
16
airborne007 18 天前
oh-my-bash
|
17
yihy8023 18 天前
我使用了 p10k ,通过延迟加载,可以让终端秒开
|
19
jiefengwang 18 天前
fish
|
20
jiefengwang 18 天前
@bigbugbag
优点:fish 的话文件夹路径补全可以随便几个字母只要顺序不错误就可以提示出来,但是 zsh 配合 ohmyzsh 暂时好像还做不到这种效果 |
21
Binwalker 18 天前
fish + starship
|
22
Blunt1991 18 天前
zimfw
|
23
charlie21 18 天前
zimfw https://github.com/zimfw/zimfw
推荐 theme eriner |
24
treizeor 18 天前
折腾大半天就省这开启的一两秒,,,
|
25
liubaicai 18 天前
ohmyfish+fishbone
|
26
aloxaf 18 天前
@jiefengwang #20 zsh 也可以,只是很少有人这么配置
zstyle ':completion:*' matcher-list 'r:|?=**' 以前试过一段时间,好像有时候反而会增加很多干扰项,后面没用了 |
27
Meursau1T 18 天前
我返回 bash 了,用 fzf-tab-completion 实现补全,然后自己封装个 cd ,把补全的初始化放进去,这样第一次切换目录的时候会卡一两秒,但终端始终秒开
|
28
lerry 18 天前
插件都注释掉就好了,我只留了 plugins=(autojump git docker)
|
29
wu67 18 天前
但即使我关掉 omz, 只用 zsh, 好像也没快多少, 新 tab 还是有肉眼可感知的初始化卡顿
|
30
DualVectorFoil 18 天前 via Android
首先 omz 定位是一个终端框架,它包含了主题功能,更多的是好用的插件,然后前面楼层提到的 starship 是 prompt 框架其实可以当做主题美化看待,然后 p10k 是个针对 zsh 做的主题,加载速度一流。
另:看到这么多人推荐 fish 搞的我心里痒痒的想去试试了哈哈😄 |
31
Kobayashi 18 天前 via Android 17
关键不是 zsh ,fish ,bash ,而是插件。zsh 插件就是利用 zsh 脚本实现的功能。因为你打开 zsh 出于一个交互式 shell 中,插件加载方式只有 source 脚本才能影响当前进程。
ohmyzsh 是一个框架,即自带了一批插件脚本。插件管理器能帮你下载来自 git 仓库的插件,并帮你 source 插件。 你能做的 - 砍掉耗时插件 - 砍掉自己 zsh 配置(如 zshrc )中的耗时命令,如 nvm, brew 调用. - 使用 zinit 插件管理器帮你“异步”加载插件(其实是因为 prompt 也是一个插件,在 prompt 渲染后和你反应过来敲击键盘还有点延迟,利用这个时间加载其他插件) - 回车耗时也是因为插件,如 zsh fish 提供了完整的钩子机制。大部分回车耗时是因为 git status 检查,优化 git 状态可以使用 gitstatusd ,或者选用支持异步 git 状态查询的 prompt 。 下边是喷子时刻 - 用什么 go ,rust 写 zsh 插件管理器纯属 NC ,没明白性能瓶颈在哪儿。除了 zinit 以外的插件管理器只是自动化了插件下载,没有在插件加载上做任何优化。插件下载都是 git clone ,插件加载都是 source ,哪有什么区别。 - starship 并不快,它的简介 blazing fast 完全胡说八道。调用 shell 外部的进程( starship 本身)反而会增加一些额外耗时,它只是跨了平台、跨了 shell 。而且 git 状态查询也没有做任何优化。 |
32
zhengxiexie2 18 天前
oh-my-posh
|
33
FightPig 18 天前
用了很多年 fish
|
34
psklf 18 天前
@sketcherly +1 ZSH 然后自己装插件
|
35
thinkershare 18 天前
@AlexShui Windows Terminal+posh+powershell 7.x
|
36
yaytohkay 18 天前 4
fish 不兼容 bash 语法,在其他环境上安装一个开箱即用还不错,常用的话不大推荐
|
37
chopin1998519 18 天前
简单的 arm soc 都用 fish 。。。开箱即用
正常桌面、服务器还是 zinit 或者 oh-my-bash .... 要不有些不兼容,突然来一下还是停膈应的。 |
38
guanhui07 18 天前 via iPhone
Fish
|
39
ysc3839 18 天前 via Android
macOS 有这么慢吗?是不是插件开太多了还是别的问题?
我 Windows 下 MSYS2 安装 Oh My Zsh ,启动都不用那么久,感觉上只要 1 秒。 |
41
zhangchioulin 18 天前
fish shell 用了一段时间感觉不错。
zsh 切过来需要重新写一下 profiles |
43
Rrrrrr 18 天前
已经退回 bash, 那个垃圾 ohmyzsh 整天升级,升他妈的
|
44
AlexShui 17 天前 via Android
@thinkershare posh 也慢😂😂
|
45
meeop 17 天前
原生的终端就挺好用的
|
46
jiefengwang 17 天前
@aloxaf 原来如此,感谢感谢
|
47
mayli 17 天前
去掉 ohmyzsh ,大部分没啥卵用
|
48
javakun 17 天前
|
49
thinkershare 17 天前
@AlexShui 感觉速度还可以啊,我 posh 启动延迟都是 300/500ms ,没啥问题. 这玩意改用 go 写后,速度就变慢了。以前要快不少。
|
50
since2021 17 天前
最近用 oh-my-posh ,一个配置文件搞到 gist 里,terminal.app, cmder, powershell 都能统一成一个风格的~
|
51
rick13 17 天前
|
52
DesnLee 17 天前
竟然没看见一个推 prezto 的,好用,很好用
|
53
tiiime 17 天前
只推荐不管死活 nushell + starship
|
54
xiadengmaX1 17 天前
直接加插件不用 oh-my-zsh
|
56
imkerberos 17 天前
zim
|
57
Immortal 17 天前 1
不要直接安装 oh-my-zsh,可以抽出来用它部分插件
一开始我是用 zinit 管理的,现在用 zim,体感上更快,可以参考下我的 dotfiles https://github.com/0x7a7a/dotfiles/tree/main/zsh/zim |
59
Tiande 17 天前 via Android
流下了只会用 bash 的泪水🥲
|
61
Aixtuz 17 天前
目前用的 zinit ,然后用:zinit snippet OMZ::lib/history.zsh 这种格式去挑自己需要的 omz 插件。
然后用 zsh-defer 和 zinit light-mode 加载其他插件。 其他可以延后加载的东西仍在 async_init() {} 里,同样交给 zsh-defer 加载。 |
62
kneep 17 天前
从 OMZ 到 Starship ,到什么都不用 T_T
|
64
Immortal 17 天前
@Immortal #57
再补充一下吧,我也算折腾比较久的.(配合我上面的 dotfiles 食用) 对于说 zinit"很快"其实有歧义的,p10k 的作者对于 shell 的速度有一个具体的测试和解释: https://github.com/romkatv/zsh-bench 一般来说 zsh 搭配 p10k+zinit/zim 都可以达到不错的启动速度 如果想要变得"好用",除了常见的补全/高亮以外,我推荐搭配使用 - z.lua 和 fz.sh,目录快速跳转 - zsh-vi-mode,在 zsh 中使用 vim 模式快速修改 - fzf-tab,用 fzf 的方式提高 tab 补全使用体验 |
65
hslx111 17 天前
Wrap
|
67
hackerwilson 17 天前
oh-my-bash 也可以了。
|
68
dinghmcn 17 天前
|
69
bruce0 17 天前
感谢老哥们推荐的 Starship, 在 windows 的 powershell 中替换了原来使用的 oh-my-posh, 现在启动速度快多了, 以前经常启动卡 1-2 秒, 现在基本秒开
|
71
yb2313 17 天前
nushell+starship ,非常好用,无敌
|
72
Lockeysama 17 天前
“一个新的 session 要 1 ~ 2 秒才初始化完成”
这个问题我熟,大概率是因为某个配置加载时间的问题,我之前是初始化的时候加了个自动 AWS 命令的授权的配置,后面去了就不会了,秒开 正常的插件基本不会要太多时间,慢的大概率跟网络有关 |
73
littlewing 17 天前
咋那么多用 fish 的,能说一下哪里好用吗
|
74
james122333 17 天前 via Android
自己写
bash 写好都不慢何况 zsh... 脚本效能比较 zsh > fish > bash zsh 本身并没有肉眼可见的慢 只是 fish 有内置用 c 写的功能罢了 会写用 bash 都可 bash 还是挺强的 不要用 oh my XXX 的东西 没有一个精品 plugin 思想也不好 扩充差东西难以復用 |
75
james122333 17 天前 via Android
多数脚本 大概 99.999%的写出来的是意大利麵条
会采用低效写法 if else 判断也满天飞 一个脚本好几百行 机制运作与效能都不好 |
76
RicardoY 17 天前
fish 的语法和 zsh 不一样,这个需要注意下
|
77
blackcellcode 17 天前
https://www.warp.dev/ 可以试试这个 我用的
|
78
zthxxx 17 天前
要关注性能就要像 #31 楼说的那样去查
自己写的 zsh 主题,写的时候就考虑到了性能,消除了所有能消除的进程间调用,git status 查询也是异步的 做到 4ms per render https://github.com/zthxxx/jovial |
79
zthxxx 17 天前
Fish 语法差异太大哦,如果自己平时还经常写一些 CI 脚本、维护一些服务器、Homelab 之类的,来回切换语法上思考起来挺麻烦的
想象一下你每天在 Windows / macOS 、VSCode / JetBrains 家的 IDEA 之间来回切换快捷键 |
80
lanbos 17 天前
在好几台设备来回切,mac 用 zsh ,开发服务器 ssh 上去用 fish ,win server 用 nushell (有小 bug )。。。目前没有啥好方案,感觉 nushell 性能最好。。。
|
81
newtype0092 17 天前
用了好久才知道原来 fish 用户这么多了。。。我还以为一直不温不火呢
|
82
james122333 17 天前 via Android
|
83
billlee 17 天前 2
mac 上初始化要 2 秒,一半是初始化脚本里面调用的某个工具是 xcode commandline tools 提供的,并且触发了 xcode 的某种逻辑导致阻塞。有时候 sudo xcodebuild -license accept 能解决。
要具体 debug 是什么命令引起的问题,可以参照这个回答 https://unix.stackexchange.com/a/565927, 在 source oh-my-zsh 之前,先调用 set -x, 这样能看到卡在哪个命令上。 |
84
webcape233 17 天前 via iPhone
starship+zsh
|
85
gl3081 17 天前
Tabby + Amazon Q
|
86
BeforeTooLate 17 天前
一开始我一直用 oh-my-zsh ,突然一天就想用 bash ,然后坚持到了现在。
|
87
zhangxu1621 17 天前
不如直接用 Warp
|
88
9 17 天前
@DualVectorFoil 这么多 fish 推荐,是因为题主说了除了 oh-my-zsh 还有什么推荐。论使用人数,还是 oh-my-zsh 的多,看 stars 数就知道
|
89
xliao 17 天前 1
看下这个 https://blog.skk.moe/post/make-oh-my-zsh-fly/ 连接的 Profiling 章节
```shell $ /bin/zsh $ zprof num calls time self name ----------------------------------------------------------------------------------- 1) 1 395.66 395.66 33.10% 395.59 395.59 33.09% _zsh_nvm_auto_use 2) 1 216.22 216.22 18.09% 216.13 216.13 18.08% nvm_die_on_prefix 3) 1 648.00 648.00 54.20% 168.85 168.85 14.12% nvm_auto 4) 2 479.15 239.57 40.08% 160.50 80.25 13.43% nvm 5) 1 102.30 102.30 8.56% 84.99 84.99 7.11% nvm_ensure_version_installed 6) 2 51.21 25.60 4.28% 29.55 14.78 2.47% compinit 7) 1 680.18 680.18 56.89% 22.17 22.17 1.85% _zsh_nvm_load 8) 2 21.66 10.83 1.81% 21.66 10.83 1.81% compaudit 9) 1 17.31 17.31 1.45% 17.31 17.31 1.45% nvm_is_version_installed 10) 193 17.43 0.09 1.46% 14.50 0.08 1.21% _zsh_autosuggest_bind_widget [Redacted] ``` |
90
zed1018 17 天前
@synthpop123 同 zinit ,但是几乎没有易用性,一旦超出插件默认配置想自己搞点什么花样就非常复杂
|
91
ycqy 17 天前
哈哈,换 fish 的话 oh-my-fish
|
92
HongyuGao 17 天前
不配置主题的话,其实用什么插件装什么插件就好了,没必要装个完整的 oh-my-zsh 。
|
93
aarontian 17 天前 1
@littlewing +1 看帖子里这么密集推荐 fish ,我去折腾了 20 分钟,发现语法跟 bash 不兼容,除了迁移环境变量可能还少不了要来回切的场景,纯属增加认知负担了。。
|
94
WebKit 17 天前 via Android
fish 或者 zim
|
95
jqtmviyu 17 天前
如果你和我一样是 p10k 用户的话, 为什么不尝试 p10k 作者开发的 zsh4humans.
开箱即用, 不需要配置 关于 zsh 管理器启动速度的, 在 zim 仓库有相关图片, 我就是看了这张图片转到 zsh4humans. https://github.com/zimfw/zimfw |
96
SteveLi77 17 天前
@AlexShui #11 windows terminal + cmd + starship + scoop 上装个 busybox , 基本上就是 linux 终端类似的体验了
|
97
Herdsman 17 天前
正在尝试 WezTerm + Starship 慢慢配吧
|
98
coldle 17 天前 via Android
好奇,担心 fish 写脚本不兼容的朋友方便说下场景吗?我平时在 fish 下跑 bash 脚本感觉没啥问题,环境变量也继承
|
99
tianshilei1992 17 天前
oh my zsh 要 1-2 秒?那也太慢了…可能是插件太多的缘故?
|
100
zander 17 天前
我在用 prezto ,很久没动过了。
|