V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bigbugbag
V2EX  ›  程序员

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

  •  2
     
  •   bigbugbag · 15 天前 · 11864 次点击

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

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

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

    第 1 条附言  ·  14 天前
    感谢大家的讨论。

    对我来说受益较多的评论是 @Kobayashi #31 @xliao #89 @wukaige #102

    我应该还是会继续使用 OMZ ,理由如下:

    1. 当前最大的社区,开发人员多,项目不容易暴毙,有问题也比较好解决
    2. 比较熟悉,换成其他的多了一点点学习成本
    3. 砍掉高耗时插件后,初始化时间可以接受

    如果有人能讲一下如何排查与优化 hook 耗时(回车耗时)就完美了。
    124 条回复    2024-11-15 18:20:55 +08:00
    1  2  
    Dragonphy
        101
    Dragonphy  
       14 天前
    fish ,至于不兼容 bash 的问题,执行的时候切过去不就行了。`bash xx.sh`
    wukaige
        102
    wukaige  
       14 天前   ❤️ 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 左右。
    bigbugbag
        103
    bigbugbag  
    OP
       14 天前
    @wukaige 非常感谢,看样子在我的环境中是 nvm 、conda 、jenv 的锅,其他时间都非常短。

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

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

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

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

    比如 zinit 可以用

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

    定义
    Ipsum
        120
    Ipsum  
       13 天前
    看完了,试下了 fish+starship 。感觉挺顺手的。
    casstiel
        121
    casstiel  
       13 天前
    wukaige
        122
    wukaige  
       13 天前   ❤️ 1
    @bigbugbag #103

    可以的,开启 zmodload zsh/zprof 后,在 zsh 里面按几次回车键,再运行 zprof ,会显示函数调用次数与耗时,类似于下面这种:

    2) 10 397.99 39.80 14.63% 397.99 39.80 14.63% _atuin_preexec
    tinytoadd
        123
    tinytoadd  
       12 天前
    @casstiel my god 正是我需要的。

    话说 jorgebucaran 这哥们做了好多对 fish 社区有用的插件呀,真乃大神也
    wensonsmith
        124
    wensonsmith  
       12 天前
    fish + fisher (插件管理) + Pure(主题) + Starship(Prompt) + Warp

    丝滑
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4856 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:57 · PVG 17:57 · LAX 01:57 · JFK 04:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.