文章目录
概述
Oh My Zsh 是一个开源、社区驱动的 Zsh 配置管理框架(GitHub ⭐ 189k+),它为原生 Zsh 提供了:
- 300+ 内置插件(git、docker、kubectl、python、node ...)
- 140+ 内置主题(robbyrussell、agnoster、bira ...)
- 完善的插件 / 主题管理机制
安装
前置依赖
macOS 在 Catalina 版本及以上,默认 Shell 已为 Zsh。
如果 echo $SHELL 的结果为 /bin/zsh,则执行 chsh -s /bin/zsh 并重启终端以切换到 Zsh。
一键安装
在终端下执行:
bash
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
国内网络加速
如果 GitHub 访问不畅,可使用 Gitee 镜像:
bash
git clone https://gitee.com/mirrors/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
chsh -s /bin/zsh
安装完成后的目录结构
bash
~/.oh-my-zsh/
├── cache/ # 缓存
├── custom/ # ← 第三方插件 & 自定义主题放这里
│ ├── plugins/
│ └── themes/
├── lib/ # 核心库
├── plugins/ # ← 300+ 内置插件
├── themes/ # ← 140+ 内置主题
└── tools/ # 安装/升级脚本
核心配置:~/.zshrc
安装后所有配置集中在 ~/.zshrc 文件中,核心区域如下:
bash
# 主题
ZSH_THEME="robbyrussell" # 默认主题
# 插件列表(空格分隔)
plugins=(
git
z
extract
sudo
zsh-autosuggestions
zsh-syntax-highlighting
)
# 加载 Oh My Zsh
source $ZSH/oh-my-zsh.sh
⚠️ 每次修改
.zshrc后,执行source ~/.zshrc使其立即生效。
要兼容之前的bash配置,可在该配置末尾添加:
bash
# 加载 bash 的环境配置
[[ -f ~/.bash_profile ]] && source ~/.bash_profile
常用维护命令
| 操作 | 命令 |
|---|---|
| 升级 Oh My Zsh | omz update |
| 查看版本 | omz version |
| 重载配置 | source ~/.zshrc |
| 查看所有已启用插件 | echo $plugins |
| 查看内置插件列表 | ls ~/.oh-my-zsh/plugins/ |
| 查看第三方插件 | ls ~/.oh-my-zsh/custom/plugins/ |
| 卸载 Oh My Zsh | uninstall_oh_my_zsh |
主题系统
内置主题速查
| 主题名 | 特点 | 适合场景 |
|---|---|---|
robbyrussell |
默认主题,简洁 | 日常使用 |
agnoster |
信息丰富,Git 状态可视化 | 开发者 |
bira |
双行提示,路径清晰 | 多目录切换 |
af-magic |
双行 + 时间戳 | 运维 / 日志排查 |
ys |
紧凑,仿 oh-my-fish 风格 | 极简风格爱好者 |
第三方主题之王:Powerlevel10k
bash
# 安装
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# 配置 .zshrc
ZSH_THEME="powerlevel10k/powerlevel10k"
# 重启终端后自动进入交互式配置向导
# 或手动执行:
p10k configure
💡 在iTerm2或Termux中执行
p10k configure可以通过问答方式来自动安装 Nerd Font(推荐 MesloLGS NF),否则图标会显示为乱码。访问Github网络不好,有2种方法解决:
- 请参照链接 Nerd Font 使用手动安装方式。
- 直接修改
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k/internal/wizard.zsh文件中的下载地址为Github的镜像网址(参见:https://blog.csdn.net/zhiyuan411/article/details/140708407)。
插件体系
插件分类
| 类型 | 存放位置 | 安装方式 | 示例 |
|---|---|---|---|
| 内置插件 | ~/.oh-my-zsh/plugins/ |
直接在 plugins=() 中添加名称 |
git, docker, kubectl |
| 第三方插件 | ~/.oh-my-zsh/custom/plugins/ |
先 git clone 到 custom 目录,再在 plugins=() 中添加名称 |
zsh-autosuggestions, zsh-syntax-highlighting |
如何查找插件
| 方法 | 说明 |
|---|---|
| 官方 Wiki | https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins:300+ 内置插件完整列表 |
| 本地浏览 | ls ~/.oh-my-zsh/plugins/ 查看所有内置插件 |
| GitHub 搜索 | 搜索 zsh plugin 或 oh-my-zsh plugin 找第三方插件 |
| Awesome 列表 | https://github.com/unixorn/awesome-zsh-plugins:社区精选 |
安装插件的标准流程
内置插件(一步到位):
bash
# 编辑 ~/.zshrc,在 plugins 中添加名称
plugins=(git docker kubectl)
source ~/.zshrc
第三方插件(两步走):
bash
# 第一步:clone 到 custom/plugins 目录
git clone https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# 第二步:编辑 ~/.zshrc 启用
plugins=(git zsh-autosuggestions)
source ~/.zshrc
插件推荐列表
必装推荐
| # | 插件名 | 类型 | 核心功能 |
|---|---|---|---|
| 1 | zsh-autosuggestions | 🔶 第三方 | 历史命令智能提示 。根据历史记录在你输入时显示灰色建议文本,按 → 或 End 键接受补全。被公认为 Oh My Zsh 最有价值的第三方插件,没有之一。 |
| 2 | zsh-syntax-highlighting | 🔶 第三方 | 实时语法高亮 。输入命令时即时着色:合法命令显示绿色,错误命令显示红色,路径存在与否也有颜色区分。必须放在 plugins=() 列表的最后一位。 |
| 3 | zsh-completions | 🔶 第三方 | 增强补全库。为 Zsh 额外提供数千条补全定义,覆盖大量常用工具(如 cargo、rustup、docker 等),弥补 Oh My Zsh 内置补全的盲区。 |
| 4 | git | 🟢 内置 | Git 别名与状态提示 。提供 150+ 个 Git 快捷别名(gst=status, ga=add, gcmsg=commit -m, gco=checkout, gp=push, gl=pull, gd=diff),并在提示符中显示当前分支与脏状态。 |
| 5 | z | 🟢 内置 | 智能目录跳转 。基于访问频率和最近度(frecency)的智能匹配,z proj 即可跳转到你最常访问的含 "proj" 的目录,告别冗长的 cd 路径。 |
| 6 | sudo | 🟢 内置 | 快捷提权 。双击 ESC 键,自动在当前命令前插入 sudo,无需手动移动光标到行首。 |
| 7 | extract | 🟢 内置 | 万能解压 。忘记 tar -xzvf 还是 unzip?只需 extract 文件名,自动识别格式并解压,支持 tar.gz / zip / rar / 7z / bz2 等十余种格式。 |
macOS 日常与系统效率
| # | 插件名 | 类型 | 核心功能 |
|---|---|---|---|
| 1 | macos | 🟢 内置 | macOS 系统深度集成 。提供 ofd(在 Finder 中打开当前目录)、cdf(cd 到 Finder 当前目录)、trash(安全删除到废纸篓,替代危险的 rm)、ql(Quick Look 预览文件)等实用命令。 |
| 2 | brew | 🟢 内置 | Homebrew 补全与别名 。为 brew 命令提供智能补全,并添加常用别名(如 brewi=brew install, brews=brew search)。 |
| 3 | copypath | 🟢 内置 | 路径复制 。执行 copypath 一键将当前工作目录的绝对路径复制到系统剪贴板,方便粘贴到文档、聊天或 IDE 中。 |
| 4 | web-search | 🟢 内置 | 终端搜索 。google 关键词 或 stackoverflow 错误信息 直接在默认浏览器中打开搜索结果,支持 Google / Bing / DuckDuckGo / GitHub / StackOverflow 等引擎。 |
| 5 | colored-man-pages | 🟢 内置 | 彩色手册页 。为 man 命令的输出添加语法高亮(命令名、选项、参数分别着色),让帮助文档更易读、更易扫视。 |
| 6 | thefuck | 🔶 第三方 | 命令纠错 。输错命令后,只需输入 fuck,自动分析上一条错误命令并提供纠正建议,确认后自动重新执行。例如 git pussh → fuck → git push。 |
Git 与版本控制
| # | 插件名 | 类型 | 核心功能 |
|---|---|---|---|
| 1 | git-flow | 🟢 内置 | Git Flow 工作流补全 。为 git flow 子命令(feature / release / hotfix / support)提供完整的 Tab 补全和别名(gf=git flow, gff=git flow feature 等)。 |
| 2 | gitignore | 🟢 内置 | 一键生成 .gitignore 。gi java,python,node 自动从 gitignore.io API 拉取对应语言的 .gitignore 模板并输出,支持 500+ 种语言/框架。 |
| 3 | github | 🟢 内置 | GitHub CLI 集成 。为 gh(GitHub 官方 CLI)提供命令补全,并添加便捷的 hub 命令快速在浏览器中打开当前仓库的 GitHub 页面。 |
| 4 | git-auto-fetch | 🟢 内置 | 自动拉取 。每次进入一个 Git 仓库目录时,自动在后台执行 git fetch --all,确保本地远程分支引用始终是最新的。 |
前端与 Node.js 开发
| # | 插件名 | 类型 | 核心功能 |
|---|---|---|---|
| 1 | nvm | 🟢 内置 | Node 版本管理 。自动加载 nvm(Node Version Manager),支持 nvm use、nvm install 补全,并在进入含 .nvmrc 的项目时自动切换 Node 版本。 |
| 2 | node | 🟢 内置 | Node.js 补全 。为 node 命令提供参数补全,并添加实用的 Node 相关别名。 |
| 3 | npm | 🟢 内置 | npm 补全与别名 。ns=npm start, nt=npm test, ni=npm install, nid=npm install --save-dev, nrb=npm run build 等 40+ 个别名。 |
| 4 | yarn | 🟢 内置 | Yarn 补全与别名 。为 Yarn v1/v2 提供命令补全,y=yarn, ya=yarn add, yr=yarn remove, yui=yarn upgrade-interactive。 |
| 5 | pnpm | 🟢 内置 | pnpm 补全。为 pnpm 提供完整的子命令和参数补全,适配 pnpm workspace 多包管理场景。 |
| 6 | vscode | 🟢 内置 | VS Code 集成 。vsc 用 VS Code 打开当前目录,vsca <dir> 添加到工作区,vscd 对比文件,无缝衔接终端与编辑器。 |
| 7 | bun | 🟢 内置 | Bun 运行时补全 。为 Bun(新一代 JS 运行时)提供命令补全和别名,bunx 等快捷操作。 |
后端、云原生与 DevOps
| # | 插件名 | 类型 | 核心功能 |
|---|---|---|---|
| 1 | docker | 🟢 内置 | Docker 补全与别名 。dps=docker ps, di=docker images, dex=docker exec -it, dcp=docker compose 等,覆盖 Docker 全生命周期操作。 |
| 2 | docker-compose | 🟢 内置 | Compose 编排补全 。dcup=docker-compose up -d, dcd=docker-compose down, dcl=docker-compose logs -f,简化多容器管理。 |
| 3 | kubectl | 🟢 内置 | Kubernetes 补全与别名 。k=kubectl, kgp=kubectl get pods, kgs=kubectl get svc, kdel=kubectl delete, klogs=kubectl logs -f,K8s 操作效率提升 3 倍。 |
| 4 | helm | 🟢 内置 | Helm 补全。为 Helm 3 提供完整的 chart 管理、release 管理命令补全。 |
| 5 | terraform | 🟢 内置 | Terraform 补全与别名 。tf=terraform, tfa=terraform apply, tfd=terraform destroy, tfp=terraform plan,IaC 操作提速。 |
| 6 | aws | 🟢 内置 | AWS CLI 补全。为 AWS CLI v2 提供全面的子命令和参数补全,支持自动补全 EC2 / S3 / Lambda 等服务名。 |
| 7 | golang | 🟢 内置 | Go 开发增强 。Go 命令补全 + 自动设置 GOPATH / GOBIN 环境变量 + go 子命令别名。 |
| 8 | ssh-agent | 🟢 内置 | SSH 密钥自动加载 。启动终端时自动加载 ~/.ssh/ 下的密钥到 ssh-agent,避免每次 git push / ssh 都要输入密码。 |
| 9 | tmux | 🟢 内置 | Tmux 集成 。为 tmux 提供命令补全,并添加 tmux 会话管理别名,方便多窗口 / 多面板操作。 |
Python 与数据科学
| # | 插件名 | 类型 | 核心功能 |
|---|---|---|---|
| 1 | python | 🟢 内置 | Python 别名与辅助 。添加 py=python3 等别名,提供 Python 相关的实用函数。 |
| 2 | pip | 🟢 内置 | pip 包名补全 。Tab 补全已安装的 pip 包名,pip install / pip uninstall 时自动提示可用包。 |
| 3 | pyenv | 🟢 内置 | pyenv 自动加载 。自动初始化 pyenv(Python 版本管理器),支持 pyenv local / pyenv global 补全,进入含 .python-version 的目录自动切换版本。 |
| 4 | conda | 🟢 内置 | Conda 环境补全 。为 conda 提供 conda activate / conda install 等命令的完整补全,支持环境名自动提示。 |
| 5 | jupyter | 🟢 内置 | Jupyter 别名 。jnb=jupyter notebook, jlab=jupyter lab 等快捷命令,一键启动数据科学环境。 |
| 6 | poetry | 🔶 第三方 | Poetry 补全增强。为 Poetry(现代 Python 包管理工具)提供完整的子命令补全和虚拟环境管理辅助。 |
终端极客与效率增强
| # | 插件名 | 类型 | 核心功能 |
|---|---|---|---|
| 1 | fzf | 🔶 第三方 | 模糊搜索神器 。接管终端搜索体验:Ctrl+R 模糊搜索历史命令(替代默认的反向搜索),Ctrl+T 模糊搜索文件并插入路径,Alt+C 模糊搜索并 cd 到目录。需先通过 brew install fzf 安装本体。 |
| 2 | zoxide | 🔶 第三方 | 新一代智能跳转 (z 的现代替代品)。基于 Rust 编写,比 z 更快更准,支持 z 关键词 直达目录,且支持模糊匹配和多级路径。需先 brew install zoxide。 |
| 3 | you-should-use | 🔶 第三方 | 别名提醒器 。当你手动输入一条完整命令时,如果你已配置了对应的别名,它会弹出提醒:"你有别名 xxx 可以用!"帮你养成使用别名的习惯,逐步提升效率。 |
| 4 | fzf-tab | 🔶 第三方 | fzf 驱动的 Tab 补全。将 Zsh 原生的 Tab 补全替换为 fzf 模糊搜索界面,补全文件、命令、进程时支持模糊匹配和预览,体验质的飞跃。 |
| 5 | alias-finder | 🟢 内置 | 别名查找 。执行一条长命令后,运行 alias-finder 可查找是否有对应的别名可以替代,帮你发现和记忆已有别名。 |
| 6 | history | 🟢 内置 | 历史增强 。为 history 命令添加时间戳显示、搜索优化等功能,方便回溯和审计历史操作。 |
性能注意事项
| 注意事项 | 说明 |
|---|---|
zsh-syntax-highlighting 必须放最后 |
该插件需要 hook 所有命令的输入过程,放在其他插件之后才能正确高亮所有补全结果 |
zsh-completions 需重建补全缓存 |
启用后执行 rm -f ~/.zcompdump && compinit 重建缓存 |
| 避免插件过多 | 每个插件都会增加终端启动时间(约 10-50ms),建议控制在 20-25 个以内 |
| NVM 启动慢 | 如果 NVM 导致终端启动延迟 1-2 秒,考虑使用 fnm(Rust 编写,启动 <10ms)替代 |
z vs zoxide |
两者功能重叠,选其一即可。推荐 zoxide(更快更准),但需额外 brew install |