- 发布于
Oh My Zsh 完全配置指南:从安装到 Powerlevel10k
- 作者

- 姓名
- Corner430
- 社交账号

1 前言
大多数 Linux 发行版默认使用 Bash,它足够稳定,但在交互体验上已经落后了。Zsh 在兼容 Bash 语法的基础上,提供了更强的自动补全、拼写纠正、主题和插件机制。
Oh My Zsh 是社区驱动的 Zsh 配置管理框架,GitHub 180k+ stars,内置 300+ 插件和 150+ 主题,是 Zsh 生态的事实标准。
本文将带你从零搭建一套完整的终端环境:
Zsh (Shell) → Oh My Zsh (框架) → Powerlevel10k (主题) → 插件 (补全/高亮/跳转)

前置条件:一台 macOS 或 Linux 机器,有 sudo 权限,已安装 git 和 curl。
2 安装 Zsh
2.1 各平台安装
macOS(自带 Zsh,无需安装):
zsh --version
# zsh 5.9 (x86_64-apple-darwin23.0)
Ubuntu / Debian:
sudo apt update && sudo apt install zsh -y
CentOS / RHEL / Fedora:
sudo dnf install zsh -y
# 或旧版系统
sudo yum install zsh -y
Arch Linux:
sudo pacman -S zsh
验证安装:
zsh --version
# zsh 5.8.1 (x86_64-koji-linux-gnu)
2.2 设为默认 Shell
# 查看系统已安装的 Shell
cat /etc/shells
# 设为默认(需要注销重新登录生效)
chsh -s $(which zsh)
注意:如果
chsh报错 "invalid shell",说明 zsh 路径不在/etc/shells中,手动添加:echo $(which zsh) | sudo tee -a /etc/shells chsh -s $(which zsh)
3 安装 Oh My Zsh
一键安装:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装过程中会:
- 克隆仓库到
~/.oh-my-zsh - 备份已有
~/.zshrc(如果存在) - 生成新的
~/.zshrc模板 - 提示是否将 Zsh 设为默认 Shell
无人值守安装(服务器/脚本场景):
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
安装完成后你会看到经典的 ASCII Art 横幅:
__ __
____ / /_ ____ ___ __ __ ____ _____/ /_
/ __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \
/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / /
\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/
/____/ ....is now installed!
4 安装 Nerd Font
Powerlevel10k 需要 Nerd Font 才能正确显示图标(Git 分支符号、文件夹图标、时钟等)。推荐使用 MesloLGS NF,这是 p10k 作者专门优化的字体。
4.1 下载字体
从 Powerlevel10k 仓库获取:
4.2 安装字体
macOS:双击 .ttf 文件,点击"安装字体"。
Linux:
mkdir -p ~/.local/share/fonts
cp MesloLGS*.ttf ~/.local/share/fonts/
fc-cache -fv
4.3 配置终端
安装后需要在终端模拟器中设置字体:
| 终端 | 设置路径 |
|---|---|
| iTerm2 | Preferences → Profiles → Text → Font |
| GNOME Terminal | Preferences → Profiles → Custom font |
| Windows Terminal | Settings → Profiles → Appearance → Font face |
| Alacritty | ~/.config/alacritty/alacritty.yml → font.normal.family |
| Kitty | ~/.config/kitty/kitty.conf → font_family |
| VS Code | Settings → Terminal → Font Family → MesloLGS NF |
验证:在终端中运行
echo "\uf113",如果看到 Git 图标(而不是方框)就说明字体配置正确。
5 安装与配置 Powerlevel10k
5.1 安装
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
在 ~/.zshrc 中设置主题:
ZSH_THEME="powerlevel10k/powerlevel10k"
5.2 配置向导
重启终端或 exec zsh,Powerlevel10k 会自动启动配置向导 p10k configure。向导通过一系列选择题来定制你的 Prompt 样式:
Does this look like a diamond (rotated square)? [y/n]
Does this look like a lock? [y/n]
...
Prompt Style: (1) Lean (2) Classic (3) Rainbow (4) Pure
...
推荐选择:
- Prompt Style → Rainbow(最完整的信息展示)
- Character Set → Unicode
- Show Current Time → 24-hour format
- Prompt Separators → Angled
- Prompt Tails → Flat
- Transient Prompt → Yes(历史命令只显示简洁提示符,减少视觉噪音)
- Instant Prompt → Verbose
向导完成后会生成 ~/.p10k.zsh 配置文件。随时可以运行 p10k configure 重新配置。
5.3 Prompt 解剖

Rainbow 风格的 Prompt 由多个 segment 组成:
| 位置 | Segment | 说明 |
|---|---|---|
| 左侧 | os_icon | 操作系统图标 |
| 左侧 | dir | 当前目录路径 |
| 左侧 | vcs | Git 分支 + 状态(增/删/改) |
| 右侧 | status | 上条命令的退出码 |
| 右侧 | command_execution_time | 命令执行耗时(>3s 才显示) |
| 右侧 | time | 当前时间 |
| 右侧 | node_version | Node.js 版本(检测到时显示) |
| 右侧 | python_version | Python 版本(检测到时显示) |
5.4 常用 p10k 参数
在 ~/.p10k.zsh 中可以微调以下参数:
# 目录显示层级(默认显示最后 1 层,改为 3 层更清晰)
typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=3
# Transient Prompt:历史命令只显示 ❯
typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
# 命令执行时间阈值(秒),超过才显示
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
# 自定义左右 prompt 元素
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
os_icon dir vcs
)
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
status command_execution_time time
)
5.5 Instant Prompt
Powerlevel10k 的杀手锏功能。它在 Zsh 初始化之前就渲染 Prompt,让终端打开时瞬间显示提示符(即使插件还在加载)。
启用方法:在 ~/.zshrc 最顶部添加:
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
重要:这段代码必须放在
.zshrc的最开头,在任何其他source之前。
6 第三方插件

Oh My Zsh 的插件分为两类:内置插件(随 Oh My Zsh 安装)和第三方插件(需要手动 clone)。以下是四个强烈推荐的第三方插件。
6.1 zsh-autosuggestions — 历史命令补全
根据输入历史自动在光标后显示灰色的建议文本,按 → 键采纳整条建议,按 Ctrl+→ 采纳一个单词。
git clone https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
效果:
$ git com # 你输入
$ git commit -m "feat: ..." # 灰色建议(来自历史)
6.2 zsh-syntax-highlighting — 语法高亮
为终端命令提供实时语法高亮:正确命令显示绿色,错误命令显示红色,字符串显示黄色。
git clone https://github.com/zsh-users/zsh-syntax-highlighting \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
效果:
$ ls # 绿色 — 命令存在
$ lss # 红色 — 命令不存在
$ echo "hello" # "hello" 黄色 — 字符串
6.3 fast-syntax-highlighting — 更快的语法高亮
fast-syntax-highlighting 是 zsh-syntax-highlighting 的增强替代品,渲染速度更快,支持更多语法元素(变量、路径、通配符等)。
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
zsh-syntax-highlighting vs fast-syntax-highlighting:
特性 zsh-syntax-highlighting fast-syntax-highlighting 速度 快 更快 高亮范围 命令、参数、字符串 更多语法元素 主题支持 无 支持自定义主题 维护状态 活跃 活跃 两个可以同时安装,不会冲突。fast-syntax-highlighting 会在 zsh-syntax-highlighting 基础上叠加更多高亮规则。
6.4 zsh-autocomplete — 实时补全菜单
输入时自动弹出候选项列表,无需按 Tab。用 ↑/↓ 选择候选项,Tab 确认选择。
git clone https://github.com/marlonrichert/zsh-autocomplete \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autocomplete
效果:
$ git ch
> checkout # ← 自动弹出
cherry-pick
clean
7 内置插件
以下插件随 Oh My Zsh 自带,只需在 plugins=() 中声明即可启用。
7.1 git — Git 别名速查
这是最常用的 Oh My Zsh 内置插件,提供了大量 Git 命令别名。以下是最实用的:
| 别名 | 完整命令 | 说明 |
|---|---|---|
gst | git status | 查看状态 |
ga | git add | 添加文件 |
gaa | git add --all | 添加所有 |
gc | git commit | 提交 |
gcmsg | git commit -m | 带消息提交 |
gp | git push | 推送 |
gl | git pull | 拉取 |
gco | git checkout | 切换分支 |
gcb | git checkout -b | 创建并切换 |
gd | git diff | 查看差异 |
glog | git log --oneline --decorate --graph | 图形化日志 |
grb | git rebase | 变基 |
gsta | git stash push | 暂存 |
gstp | git stash pop | 弹出暂存 |
完整列表:
alias | grep git或查看 git 插件源码。
7.2 vi-mode — 终端 Vi 键位
在命令行中使用 Vi 的操作方式:Esc 进入 Normal 模式,i 回到 Insert 模式。支持 dd、yy、p、w、b、0、$ 等 Vi 操作。
对于 Vim 用户来说,这让命令行编辑变得极其高效:
# Normal 模式下
0 → 跳到行首
$ → 跳到行尾
w / b → 按单词前进/后退
dd → 删除整行
ci" → 修改引号内内容
7.3 zoxide — 智能目录跳转(替代 z)
zoxide 是 z / autojump 的现代替代品,用 Rust 编写,GitHub 25k+ stars。相比传统的 z 插件,zoxide 速度更快、算法更智能(基于 frecency 算法),支持交互式选择(zi)。
安装 zoxide:
# cargo(推荐)
cargo install zoxide --locked
# 或 Homebrew
brew install zoxide
# 或 apt(Ubuntu 21.04+)
sudo apt install zoxide
在 plugins=() 中用 zoxide 替代 z,Oh My Zsh 会自动初始化。使用方式与 z 完全兼容:
# 模糊跳转
z ai-blog
# 直接跳转到 /data/workspace/ai-blog
# 交互式选择(zoxide 独有)
zi proj
# 弹出匹配列表,用方向键选择
z vs zoxide:
特性 z(内置) zoxide 语言 Shell 脚本 Rust 速度 快 更快 交互模式 无 zi交互选择算法 frecency 改进版 frecency 跨 Shell 仅 Zsh/Bash Zsh/Bash/Fish/Nushell/...
7.4 extract — 万能解压
不用再记 tar -xzf、unzip、7z x 等各种解压命令,统一用 extract:
extract archive.tar.gz
extract file.zip
extract package.7z
extract image.iso
支持的格式:.tar.gz、.tar.bz2、.tar.xz、.zip、.rar、.7z、.gz、.bz2、.xz、.iso、.deb、.rpm 等。
7.5 sudo — 快速添加 sudo
忘记加 sudo?按两下 Esc 键,自动在当前命令前插入 sudo:
apt install vim # 输入后发现没权限
# 按 Esc Esc
sudo apt install vim # 自动补上 sudo
这是使用频率最高的内置插件之一。
7.6 copypath / copyfile — 复制路径和文件内容
# 复制当前目录的绝对路径到剪贴板
copypath
# 复制指定文件的内容到剪贴板
copyfile ~/.zshrc
配合远程开发场景非常方便。
7.7 web-search — 终端搜索
直接从终端打开浏览器搜索:
google "oh my zsh plugins"
bing "zoxide vs z"
github "powerlevel10k"
stackoverflow "zsh slow startup"
7.8 docker — Docker 补全和别名
| 别名 | 完整命令 | 说明 |
|---|---|---|
dps | docker ps | 查看容器 |
dpa | docker ps -a | 查看所有容器 |
di | docker images | 查看镜像 |
drm | docker rm | 删除容器 |
drmi | docker rmi | 删除镜像 |
dex | docker exec -it | 进入容器 |
dl | docker logs -f | 查看日志 |
dco | docker compose | compose 操作 |
dcup | docker compose up -d | 启动服务 |
dcdn | docker compose down | 停止服务 |
7.9 npm — npm 补全和别名
| 别名 | 完整命令 | 说明 |
|---|---|---|
npmg | npm i -g | 全局安装 |
npmS | npm i -S | 生产依赖 |
npmD | npm i -D | 开发依赖 |
npmO | npm outdated | 过期检查 |
npmL | npm list | 依赖列表 |
8 完整 .zshrc 配置
以下是经过实践验证的完整配置模板:
# ============================================================================
# Powerlevel10k Instant Prompt(必须在最顶部)
# ============================================================================
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# ============================================================================
# Oh My Zsh 配置
# ============================================================================
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="powerlevel10k/powerlevel10k"
# ============================================================================
# 插件列表
# ============================================================================
plugins=(
git # Git 别名和补全
vi-mode # 终端中使用 Vi 键位
zoxide # 智能目录跳转(替代 z)
extract # 万能解压
sudo # 双击 Esc 加 sudo
copypath # 复制当前路径到剪贴板
copyfile # 复制文件内容到剪贴板
web-search # 终端直接搜索
docker # Docker 补全和别名
npm # npm 补全和别名
zsh-autosuggestions # 历史命令自动补全
zsh-syntax-highlighting # 命令语法高亮
fast-syntax-highlighting # 更快更丰富的语法高亮
zsh-autocomplete # 实时补全候选菜单
)
source $ZSH/oh-my-zsh.sh
# ============================================================================
# 环境变量
# ============================================================================
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
# 确保 ~/.local/bin 在 PATH 中
if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
export PATH="$HOME/.local/bin:$PATH"
fi
# Cargo (Rust)
[[ -f "$HOME/.cargo/env" ]] && . "$HOME/.cargo/env"
# NVM (Node.js)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# ============================================================================
# Powerlevel10k 配置文件(由 p10k configure 生成)
# ============================================================================
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
注意事项:
- Instant Prompt 代码块必须在文件最顶部
source $ZSH/oh-my-zsh.sh必须在plugins=()之后- 环境变量配置放在
source之后- p10k 配置文件放在最底部
9 一键安装脚本
如果你想在新机器上快速部署,可以使用以下脚本:
#!/bin/bash
set -e
echo "=== 安装 Zsh ==="
if command -v apt &> /dev/null; then
sudo apt update && sudo apt install zsh -y
elif command -v dnf &> /dev/null; then
sudo dnf install zsh -y
elif command -v pacman &> /dev/null; then
sudo pacman -S --noconfirm zsh
fi
echo "=== 安装 Oh My Zsh ==="
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
echo "=== 安装 Powerlevel10k ==="
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
echo "=== 安装 zoxide ==="
if command -v cargo &> /dev/null; then
cargo install zoxide --locked
elif command -v brew &> /dev/null; then
brew install zoxide
else
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
fi
echo "=== 安装第三方插件 ==="
git clone https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
git clone https://github.com/marlonrichert/zsh-autocomplete \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autocomplete
echo "=== 设置默认 Shell ==="
chsh -s $(which zsh)
echo "✅ 安装完成!重新登录后运行 p10k configure 配置主题"
10 常见问题与技巧
Q: Prompt 显示方框/乱码?
字体问题。确保终端使用了 Nerd Font(推荐 MesloLGS NF),参考第 4 节。
Q: 重新配置 Powerlevel10k?
p10k configure
Q: 修改 p10k 配置后如何生效?
source ~/.p10k.zsh
# 或直接重启终端
Q: zsh-autocomplete 弹窗太频繁?
在 ~/.zshrc 中添加(放在 source $ZSH/oh-my-zsh.sh 之后):
# 至少输入 2 个字符才弹出补全
zstyle ':autocomplete:*' min-input 2
Q: Instant Prompt 报 console output 警告?
某些工具(如 nvm、conda)在初始化时会输出文本,与 Instant Prompt 冲突。解决方案:
# 方案 1:把有输出的初始化放到 Instant Prompt 代码块之前
# 方案 2:将这些工具的初始化用 redirect 静默
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" > /dev/null 2>&1
Q: Oh My Zsh 如何更新?
omz update
Q: 如何查看所有可用的内置插件?
ls ~/.oh-my-zsh/plugins/
11 参考链接
版权声明
- 作者: Corner430
- 标题: Oh My Zsh 完全配置指南:从安装到 Powerlevel10k
- 链接: https://corner430-ai-blog.vercel.app/blog/Configure-oh-my-zsh
- 许可协议: CC BY-NC-SA 4.0
除非另有说明,本文内容采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处。