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

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

  •  1
     
  •   bigbugbag · 1 天前 · 9317 次点击

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

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

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

    第 1 条附言  ·  15 小时 11 分钟前
    感谢大家的讨论。

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

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

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

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

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

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

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

    以前还怀念 fish 补全,现在用上 Aloxaf/fzf-tab ,补全非常的轻松。
    历史记录直接用 fzf 绑定 c-r 就行了。
    fzf 基本是现在终端搜索功能的天花板了。
    zjiajun
        114
    zjiajun  
       2 小时 43 分钟前
    还是用 omz 的吧,插件多一些,分析启动慢学到了,备用下
    mrzhangrb
        115
    mrzhangrb  
       2 小时 16 分钟前
    @tinytoadd #7 zsh4humans 老哥 感谢。 这个太强了
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1485 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:25 · PVG 01:25 · LAX 09:25 · JFK 12:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.