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

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

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

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

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

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

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

    对我来说受益较多的评论是 @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  
       20 小时 27 分钟前
    fish ,至于不兼容 bash 的问题,执行的时候切过去不就行了。`bash xx.sh`
    wukaige
        102
    wukaige  
       19 小时 23 分钟前   ❤️ 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
       18 小时 57 分钟前
    @wukaige 非常感谢,看样子在我的环境中是 nvm 、conda 、jenv 的锅,其他时间都非常短。

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

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

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

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