Oh My Zsh

高级用户在 Oh My Zsh 和高度定制的 zsh 配置的收益,与极简配置和 fish 等替代 shell 之间权衡取舍。许多人称赞 Oh My Zsh 易上手且功能丰富,但也有人批评它的启动性能,并更偏好只带少数精选插件的原生 zsh,或偏好 fish 的快速、合理默认配置和强大的自动补全。更广泛的主题是:shell 定制究竟要走多远——是拥抱大型框架、打造精简的个人配置,还是彻底切换 shell,以在生产力、速度和可移植性之间取得平衡。

Oh My Zsh(OMZ)的作用

  • 被视为“简化版 dotfiles”:安装快、默认配置丰富、插件/主题集合庞大、支持自动更新。
  • 许多人认为它非常适合避免陷入配置泥潭,并能快速提升生产力,尤其是在新机器上。
  • 另一些人则认为,OMZ 相比原生 zsh 并没有增加太多(autoload、promptinit、vcs_info),反而引入了需要学习的自身约定。
  • 一些用户最终会在弄清自己真正需要哪些组件后移除 OMZ。

性能与启动时间

  • 反复出现的主题是:重度定制的 zsh/OMZ 配置会显得很慢,尤其是 shell 启动和打开新终端时。
  • 一些人表示,迁移到以下方案后收益很大:
    • 原生 zsh + 少量插件
    • zsh + 更轻量的插件管理器(zimfw、antidote、sheldon、zprezto)
    • 更简洁的提示符,比如 starship 或简单自定义的 PS1。
  • 基准测试和性能分析往往将问题归咎于语言管理器(nvm、pyenv、conda、jabba)而不是 OMZ 本身;延迟加载或替换这些工具能提升速度。
  • 也有人说自己从未感觉到慢,尤其是在使用 tmux 或硬件较快时。

Fish Shell 与 zsh/OMZ

  • Fish 因以下优点受到赞赏:优秀的默认配置、语法高亮、强大的补全、简单的函数/变量、极少的配置以及速度快。
  • 常见用法是:交互式使用 fish,但脚本和可移植性仍保留 bash/zsh。
  • 主要缺点是:fish 与 bash 不兼容;某些脚本或复制粘贴的命令需要显式使用 bash 或兼容层。
  • 一些用户试用 fish 后,因肌肉记忆、工具链或缺少功能而很快回退到 zsh。

提示符、插件与生态

  • Powerlevel10k、starship、tide(fish)、oh-my-fish、oh-my-posh 等都被广泛讨论。
  • starship 因跨 shell 并减少“提示符选型争论”而受到重视。
  • 许多人用少量有针对性的插件来复刻 OMZ 的功能(语法高亮、自动建议、fzf 集成、git 辅助)。

Shell 使用理念

  • 观点分为两类:
    • 极简主义者使用接近原生的 bash/zsh,只加少量别名。
    • 高级用户则深度定制提示符、历史记录和工作流。
  • 命令行被强调适合批量文件操作、文本处理、自动化、可复现工作流,以及通过命令而非 GUI 获得更好的文档化。