摘要:本文介绍 Oh My Zsh 与 Zsh 的基本概念,以及在 macOS 上安装、配置主题、查看主题、卸载与升级 Oh My Zsh 的完整流程。针对国内网络环境(GitHub 访问受限)单独给出镜像与加速方案。全文以表格形式组织,便于速查。
⚠️ 本文全部命令均在 Mac 上实测可用,涉及路径、终端、字体、命令写法都以 macOS 为准;Windows / Linux 的差异见文末对照表。
一、概念说明:Oh My Zsh 与 Zsh
项目 | 说明 |
|---|
Zsh | 一款强大的虚拟终端,既可作为系统终端交互使用,也可作为脚本语言的交互式解析器 |
Oh My Zsh | 社区驱动的 zsh 配置管理框架(不是新的 shell),在 zsh 之上提供主题、插件与大量内置函数 |
官网 | https://ohmyz.sh |
仓库 | https://github.com/ohmyzsh/ohmyzsh |
依赖关系 | Oh My Zsh 运行在 zsh 之上,必须先安装 zsh;它不会替换 zsh,只负责加载配置 |
安装位置 | 默认克隆到 ~/.oh-my-zsh,主配置为 ~/.zshrc |
运行环境 | macOS(本文唯一验证环境):macOS Catalina 10.15 起系统默认 shell 已是 zsh,无需额外安装 |
官网与仓库
注意:官网旧地址为 http://ohmyz.sh,现统一跳转 HTTPS;仓库早期地址为 robbyrussell/oh-my-zsh,现已迁移至 ohmyzsh/ohmyzsh,请以新地址为准。
常用子页面:
Oh My Zsh 简介
一句话:它是 zsh 的"配置框架 + 工具箱",把原本需要自己手写的几百行 .zshrc 配置,收敛成几个可开关的变量。
维度 | 内容 |
|---|
本质 | 一套开源的 zsh 配置管理框架,不是 shell、不是终端软件,也不改变 zsh 的语法 |
定位 | 解决"zsh 很强但默认配置太素、自己配又太难"的问题 |
起始 | 2009 年 8 月 28 日由 Robby Russell 发布,最初只是分享给同事的 .zshrc,后发展为社区项目 |
规模 | 内置 370+ 插件、140+ 主题,另支持任意第三方插件与自定义主题 |
理念 | "Batteries included"(自带电池),装完即用,零配置也能获得开箱体验 |
开源协议 | MIT,可自由用于个人与商业环境 |
资源占用 | 启动时加载全部配置,冷启动约几十毫秒;插件装太多会明显变慢 |
它到底解决了什么问题
痛点 | 没有 Oh My Zsh | 使用 Oh My Zsh |
|---|
提示符难看 | 手写 PROMPT 转义序列,一行行调颜色 | 改 ZSH_THEME="agnoster" 一行搞定 |
想要 git 分支提示 | 自己写函数解析 .git/HEAD | 内置 git 插件,装完即有分支、状态、ahead/behind |
常用别名 | 逐个 alias ll='ls -lh' 往 .zshrc 里堆 | 插件自动带上数百个常用别名 |
目录跳转 | 每次 cd 敲完整路径 | z 插件(autojump)按访问频率跳转
|
配置维护 | 越写越长,改一处怕崩一片 | 按需 plugins=(...) 开关,易于回滚 |
发展脉络(了解即可)
时间 | 事件 |
|---|
2009 年 8 月 | Robby Russell 把缠绕多年的 .zshrc 拆成多个小文件,打包成公开仓库发布 |
发布次日 | 同事提出"想换自己的提示符",于是把样式代码抽成 themes,主题机制诞生 |
最初几月 | 收到十余个社区投稿主题,随后按语言/框架需求演化出插件机制 |
后续 | 加入安装脚本、升级脚本、自动更新提示,形成今天"开箱即用"的形态 |
现在 | 由社区(含 Marc Cornellà 等核心维护者)持续开发,同时衍生出更轻量的 Prezto 等分支 |
一句话:它不是自上而下设计出来的框架,而是从"分享配置文件"逐步长成的生态。
核心能力一览
能力 | 说明 | 典型用法 |
|---|
主题(Theme) | 控制提示符外观,可显示路径、用户、git 分支、执行耗时、时间等 | ZSH_THEME="robbyrussell"
|
插件(Plugin) | 扩展命令与自动补全,分为官方内置与第三方两类 | plugins=(git z docker)
|
别名(Alias) | 常用命令的短写,随插件自动加载 | gst = git status、ll = ls -lh
|
内置函数 | 提供大量便捷函数,官方称 "Functions" | mkcd 目录(创建并进入)、extract 包名(自动解压各种格式)
|
omz 命令
| 新版内置的管理入口 | omz theme set agnoster、omz reload
|
本文聚焦主题部分;插件与 omz 命令只做速览,详见第八节。
官方内置的高频插件(可装可不装,按需添加)
插件 | 作用 | 是否需要额外依赖 |
|---|
git
| git 别名与分支提示,几乎人人必开 | 无 |
z
| 按历史访问频率跳转目录,z 项目名 直达 | 无 |
sudo
| 连按两次 Esc 自动在命令前补 sudo | 无 |
extract
| extract xxx.zip/tar.gz/rar 自动识别格式解压
| 对应解压工具 |
command-not-found
| 命令打错时提示可安装的包名 | macOS 需 brew |
brew
| Homebrew 别名与补全 | 已安装 Homebrew |
docker / kubectl
| 容器与 K8s 别名、补全 | 已安装对应 CLI |
vscode
| code 命令与常用别名
| 已安装 VS Code |
web-search
| 终端内直接搜索,google 关键词 | 无 |
history
| h 查看历史、hs 搜索历史
| 无 |
启用方式:编辑 ~/.zshrc,把插件名加进 plugins=(...) 数组(空格分隔,不要逗号),再 omz reload。
三者的关系
层级 | 角色 | Mac 上的具体软件 |
|---|
内核层 | 真正执行命令的 shell | zsh(/bin/zsh,系统自带) |
框架层 | 组织配置、加载主题与插件 | Oh My Zsh |
展示层 | 终端窗口软件 | Terminal.app(自带)、iTerm2、Warp、VS Code 内置终端 |
一句话理解:zsh 是引擎,Oh My Zsh 是改装套件,终端 App 是外壳。换主题只影响提示符外观,不影响命令执行。
适合谁用 / 不适合谁用
场景 | 建议 | 原因 |
|---|
刚接触命令行的 Mac 用户 | ✅ 推荐 | 装完即有补全、别名、好看的提示符,学习成本接近零 |
天天用 git 的开发者 | ✅ 推荐 | git 插件与分支提示能省大量重复输入
|
追求极致启动速度 | ⚠️ 谨慎 | 可改用更轻的方案(如手写 zsh 配置、Starship + 少量插件) |
服务器生产环境 | ⚠️ 谨慎 | 多人共用机器上装框架会增加排查成本,建议只配轻量 .zshrc |
想深入学 zsh 语法 | ❌ 不建议先装 | 框架会遮蔽很多细节,建议先熟悉原生 zsh 再上框架 |
二、安装 Oh My Zsh
环境检查
检查项 | 命令 | Mac 上的示例输出 |
|---|
是否已安装 zsh | zsh --version
| zsh 5.9 (x86_64-apple-darwin23.0)
|
当前可用 shell | cat /etc/shells
| /bin/bash、/bin/zsh …
|
当前默认 shell | echo $SHELL
| /bin/zsh(Catalina 起默认)
|
系统版本 | sw_vers
| ProductVersion: 14.x
|
Mac 检查技巧:打开「终端」按 ⌘ + 空格 输入 "Terminal" 即可;若 zsh --version 报 command not found,说明系统过旧,执行 xcode-select --install 或 brew install zsh。
安装命令
方式 | 命令 | 在 Mac 上的适用场景 |
|---|
curl | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
| 首选,macOS 自带 curl,无需安装 |
wget | sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
| Mac 默认没有 wget,需先 brew install wget |
Mac 提示:安装过程要求输入 Mac 登录密码(用于 chsh 切换默认 shell),输入时终端不显示任何字符属正常现象,输完直接回车。
脚本做了什么
安装阶段 | 脚本行为 |
|---|
克隆仓库 | 从 GitHub 拉取到 ~/.oh-my-zsh |
备份旧配置 | 现有 ~/.zshrc 备份为 ~/.zshrc.pre-oh-my-zsh |
生成新配置 | 基于 templates/zshrc.zsh-template 生成新 ~/.zshrc |
切换默认 shell | 询问是否 chsh -s 切换到 zsh(Mac 上需输入登录密码) |
Mac 补充:若安装时选择了不切换默认 shell,之后想改可用「系统设置 → 用户与群组 → 按住 ⌃ 点按用户 → 高级选项 → 登录 shell」切换,或终端执行 chsh -s /bin/zsh。
安装输出示例
% sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Cloning Oh My Zsh...
Cloning into '/Users/xxxx/.oh-my-zsh'...
remote: Counting objects: 831, done.
remote: Compressing objects: 100% (700/700), done.
remote: Total 831 (delta 14), reused 775 (delta 10), pack-reused 0
Receiving objects: 100% (831/831), 567.67 KiB | 75.00 KiB/s, done.
Resolving deltas: 100% (14/14), done.
Looking for an existing zsh config...
Found ~/.zshrc. Backing up to ~/.zshrc.pre-oh-my-zsh
Using the Oh My Zsh template file and adding it to ~/.zshrc
__ __
____ / /_ ____ ___ __ __ ____ _____/ /_
/ __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \
/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / /
\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/
/____/ ....is now installed!
Please look over the ~/.zshrc file to select plugins, themes, and options.
三、国内网络安装方案
国内直连 github.com 与 raw.githubusercontent.com 常出现超时、Connection refused 或克隆极慢。安装脚本支持通过 REMOTE 变量指定仓库地址,因此不必改脚本,只需换源。
方案对比
方案 | 配置变量 | 优点 | 缺点 | 推荐度 |
|---|
Gitee 镜像 | REMOTE
| 国内直连速度快、稳定 | 镜像同步有延迟 | ★★★★★ |
GitHub 加速代理 | REMOTE
| 内容与官方完全一致、最新 | 公共代理偶有波动 | ★★★★ |
手动 clone | ZSH
| 全程可控,可断点重试 | 步骤多 | ★★★ |
方案一:Gitee 镜像(推荐)
REMOTE=https://gitee.com/mirrors/oh-my-zsh.git \
BRANCH=master \
sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"
要点:脚本从 Gitee 下载,但仓库也必须指向 Gitee,否则脚本内部仍会去克隆 GitHub。REMOTE 缺一不可。
方案二:GitHub 加速代理
REMOTE=https://ghproxy.net/https://github.com/ohmyzsh/ohmyzsh.git \
sh -c "$(curl -fsSL https://ghproxy.net/https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
也可替换为 https://ghfast.top/ 前缀,用法完全一致。注意两处都要加前缀:脚本地址与仓库地址。
方案三:手动克隆
步骤 | 命令 |
|---|
1. 克隆仓库 | git clone https://gitee.com/mirrors/oh-my-zsh.git ~/.oh-my-zsh
|
2. 备份原配置 | cp ~/.zshrc ~/.zshrc.pre-oh-my-zsh
|
3. 使用模板 | cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
|
4. 重载 | source ~/.zshrc
|
手动方式不执行 chsh,如需把 zsh 设为默认 shell,自行执行 chsh -s $(which zsh)。
选源对照
场景 | 建议 | 说明 |
|---|
追求稳定、能接受版本稍旧 | Gitee 镜像 | 国内 CDN,克隆通常在几秒内完成 |
需要与官方最新一致 | ghproxy / ghfast | 实测返回文件与官方逐字节一致 |
公司网络限制严格 | 手动 clone | 可配合内网 Git 服务 |
后续 omz update | 建议保持同一源 | 混用会导致 git pull 失败 |
安装后常见问题
问题 | 处理方式 |
|---|
卡在 Cloning Oh My Zsh... | 中断后改用 Gitee 方案 |
Connection refused(443 端口)
| 网络阻断 GitHub,换镜像 |
git clone ... failed
| 检查 REMOTE 是否与脚本源一致 |
omz update 报错
| 确认 ~/.oh-my-zsh 的 origin 是否可访问,必要时 git remote set-url origin <镜像地址> |
四、命令速查(安装 → 主题 → 卸载)
场景 | 命令 | 生效方式 | 说明 |
|---|
检查 zsh 版本 | zsh --version
| — | 安装前的前置检查 |
查看可用 shell | cat /etc/shells
| — | 确认 zsh 已在列表中 |
curl 安装(官方) | sh -c "$(curl -fsSL .../install.sh)"
| 重启终端 | 海外网络推荐 |
curl 安装(国内) | REMOTE=... sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"
| 重启终端 | 见第三节 |
编辑配置 | open -e ~/.zshrc
| — | Mac 用「文本编辑」打开 |
固定主题 | ZSH_THEME="robbyrussell"
| 重启终端 | 默认主题即 robbyrussell |
随机主题 | ZSH_THEME="random"
| 每次启动 | 启动时打印当前主题名 |
查看主题列表 | cd ~/.oh-my-zsh/themes && ls
| — | 列出全部内置主题 |
升级 | upgrade_oh_my_zsh / omz update
| — | 两种写法等价 |
重载配置 | omz reload
| 立即 | 新版内置命令 |
卸载 | uninstall_oh_my_zsh
| 重启终端 | 自动还原原配置 |
五、设置主题
主题模式 | 配置项 | 取值 | 效果 |
|---|
固定主题 | ZSH_THEME
| 主题名,如 "agnoster" | 每次启动都用同一主题 |
默认主题 | ZSH_THEME
| "robbyrussell"
| 安装后的出厂值 |
随机主题 | ZSH_THEME
| "random"
| 每次启动随机一个主题 |
候选随机 | ZSH_THEME_RANDOM_CANDIDATES
| ("robbyrussell" "agnoster")
| 限定随机范围 |
操作步骤
步骤 | 命令 / 操作 | 说明 |
|---|
1 | open -e ~/.zshrc
| Mac 专用:用「文本编辑」打开;open -a "Visual Studio Code" ~/.zshrc 可换编辑器 |
2 | 找到 ZSH_THEME= 行 | 安装后默认 ZSH_THEME="robbyrussell" |
3 | 改为目标主题名 | 如 ZSH_THEME="agnoster" |
4 | 保存并重开终端 | 或执行 omz reload 立即生效 |
Mac 提示:~/.zshrc 是隐藏文件,Finder 中按 ⌘ + ⇧ + . 可显示;也可用 code ~/.zshrc(VS Code)、vim ~/.zshrc 直接编辑。
随机主题启动时会打印当前主题名:
[oh-my-zsh] Random theme '/Users/xxxx/.oh-my-zsh/themes/zhann.zsh-theme' loaded...
其中 zhann.zsh-theme 即当前主题名。遇到喜欢的,把 ZSH_THEME 改成 "zhann" 即可固定(注意去掉 .zsh-theme 后缀)。
六、查看主题
目的 | 命令 |
|---|
列出内置主题 | cd ~/.oh-my-zsh/themes && ls
|
列出可用主题(新版) | omz theme list
|
查看在线预览 | Themes Wiki |
预览在线缓慢时 | 用 omz theme use <名称> 逐个试用,满意后再 set 固定 |
国内访问 GitHub Wiki 可能较慢,替代做法:先用 omz theme list 拿到全部主题名,再用 omz theme use <名称> 临时切换预览(参数缺省时即为 random)。
主题相关目录 | 路径 | 用途 |
|---|
内置主题 | ~/.oh-my-zsh/themes
| 官方自带,升级可能被覆盖 |
自定义主题 | ~/.oh-my-zsh/custom/themes
| 第三方/自建主题放这里 |
七、卸载 Oh My Zsh
步骤 | 命令 | 说明 |
|---|
1 | uninstall_oh_my_zsh
| 执行内置卸载脚本 |
2 | Are you sure you want to remove Oh My Zsh? [y/N] Y
| 输入 Y 确认 |
3 | 重启终端 | 使原配置生效 |
卸载脚本对文件的处理:
文件 | 处理方式 |
|---|
~/.oh-my-zsh
| 整个目录删除 |
~/.zshrc.pre-oh-my-zsh
| 还原为 ~/.zshrc |
当前 ~/.zshrc | 重命名为 ~/.zshrc.omz-uninstalled-<时间戳> 备份 |
Removing ~/.oh-my-zsh
Looking for original zsh config...
Found ~/.zshrc.pre-oh-my-zsh -- Restoring to ~/.zshrc
Found ~/.zshrc -- Renaming to ~/.zshrc.omz-uninstalled-20170820200007
Your original zsh config was restored. Please restart your session.
Thanks for trying out Oh My Zsh. It's been uninstalled.
说明:以上为 2017 年版本的输出。现行脚本行为一致,仅末句改为 "Don't forget to restart your terminal!",语义相同。
八、Tips
omz 管理命令(新版内置,可替代手改配置)
命令 | 作用 |
|---|
omz theme list
| 列出全部主题 |
omz theme set agnoster
| 写入 .zshrc 并重载当前会话 |
omz theme use robbyrussell
| 仅当前会话临时切换,不改配置 |
omz update
| 升级 Oh My Zsh |
omz reload
| 重新加载 .zshrc |
omz version
| 查看版本与当前 commit |
常见问题
问题 | 处理方式 |
|---|
误关了自动更新提示 | 执行 upgrade_oh_my_zsh 或 omz update 手动升级 |
改完配置不生效 | 重开终端,或执行 omz reload / source ~/.zshrc |
主题显示乱码方块 | agnoster 等主题需安装 Powerline / Nerd Font 字体,Mac 推荐 brew install --cask font-meslo-lg-nerd-font,再到终端设置里把字体改为 MesloLGS NF
|
主题名报 not found | 确认拼写,且不带 .zsh-theme 后缀 |
国内 omz update 卡住 | 仓库地址改回国内镜像:git -C ~/.oh-my-zsh remote set-url origin https://gitee.com/mirrors/oh-my-zsh.git |
插件源码拉不下来 | 第三方插件同样走代理,如 git clone https://ghproxy.net/https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions |
Mac 提示 operation not permitted | 系统完整性保护或终端未获「完全磁盘访问权限」,到「系统设置 → 隐私与安全性」中授权 |
Mac 升级后主题失效 | 系统大版本升级可能重置默认 shell,echo $SHELL 确认后重新 chsh -s /bin/zsh |
分屏与搜索(Mac 终端快捷键)
操作 | Terminal.app | iTerm2 |
|---|
新标签页 | ⌘ + T
| ⌘ + T
|
垂直分屏 | ⌘ + D
| ⌘ + D
|
水平分屏 | ⌘ + ⇧ + D
| ⌘ + ⇧ + D
|
搜索历史输出 | ⌘ + F
| ⌘ + F
|
清屏 | ⌘ + K
| ⌘ + K
|
放大 / 缩小字号 | ⌘ + + / ⌘ + -
| ⌘ + + / ⌘ + -
|
终端推荐
九、Mac 与其他系统差异对照
项目 | macOS(本文环境) | Windows | Linux |
|---|
默认 shell | zsh(Catalina 起) | PowerShell / cmd | bash |
打开配置文件 | open -e ~/.zshrc
| 无直接对应,用编辑器打开 %USERPROFILE%\.zshrc | xdg-open ~/.zshrc 或 vim ~/.zshrc
|
切换默认 shell | chsh -s /bin/zsh
| 需 WSL,chsh 在 WSL 内使用 | chsh -s $(which zsh)
|
安装 wget | brew install wget
| 自带(Win10+) | apt install wget
|
Nerd Font 安装 | brew install --cask font-meslo-lg-nerd-font
| 手动下载字体文件安装 | 手动放入 ~/.local/share/fonts |
推荐终端 | Terminal.app / iTerm2 | Windows Terminal + WSL | GNOME Terminal / Konsole |
配置文件路径 | ~/.zshrc
| WSL 内同为 ~/.zshrc | ~/.zshrc
|