跳转至

zsh/oh-my-zsh 终端美化

zsh 是比 bash 更强大的 Shell,oh-my-zsh 是 zsh 的配置框架,提供主题和插件。白话说就是"给你的终端穿上好看的衣服,还送一堆实用工具"。

核心知识点

概念说明
zshZ Shell,一个功能更强的 Shell
oh-my-zshzsh 的配置管理框架,开箱即用
主题(Theme)自定义终端提示符的外观
插件(Plugin)给终端加功能(自动补全、高亮等)
.zshrczsh 的配置文件(类似 bash 的 .bashrc)
Powerlevel10k最受欢迎的 zsh 主题,好看又快

安装配置

安装 zsh

# Ubuntu/Debian
sudo apt install zsh  # 安装 zsh

# CentOS/RHEL
sudo yum install zsh  # 安装 zsh

# macOS(自带 zsh,可更新)
brew install zsh  # 安装最新版

# 确认安装
zsh --version  # 查看版本

# 把 zsh 设为默认 Shell
chsh -s $(which zsh)  # 修改默认 Shell
# 需要重新登录才生效

安装 oh-my-zsh

# 官方安装脚本(需要 curl 和 git)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 或者用 wget
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 如果网络不好,可以用国内镜像
sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"

# 安装完成后会自动切换到 zsh 并使用 oh-my-zsh

安装 Powerlevel10k 主题

# 克隆 Powerlevel10k 到 oh-my-zsh 主题目录
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
  ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# --depth=1 只克隆最新版,省空间

# 修改 .zshrc 使用这个主题
# 把 ZSH_THEME="robbyrussell" 改为:
# ZSH_THEME="powerlevel10k/powerlevel10k"
sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="powerlevel10k\/powerlevel10k"/' ~/.zshrc

# 重新加载配置
source ~/.zshrc  # 第一次会启动配置向导

# 重新运行配置向导
p10k configure  # 随时可以重新配置

安装字体(Nerd Font)

# 推荐安装 MesloLGS NF 字体(Powerlevel10k 推荐的字体)
# 下载地址:
# https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf
# https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf

# Linux 安装字体
mkdir -p ~/.local/share/fonts  # 创建字体目录
# 把下载的 .ttf 文件复制到这个目录
fc-cache -fv  # 刷新字体缓存

# 然后在终端设置中选择 MesloLGS NF 字体
# Windows Terminal / iTerm2 / 终端设置里改字体

基本使用

常用主题

# 修改主题:编辑 ~/.zshrc 中的 ZSH_THEME
vim ~/.zshrc

# 内置主题(无需额外安装)
ZSH_THEME="robbyrussell"   # 默认主题,简洁
ZSH_THEME="agnoster"       # 经典主题,需要 Nerd Font
ZSH_THEME="bira"           # 两行提示符
ZSH_THEME="af-magic"       # 简约好看
ZSH_THEME="random"         # 随机主题(每次打开终端换一个)

# 修改后重新加载
source ~/.zshrc  # 立即生效

安装常用插件

# oh-my-zsh 内置了很多插件,只需要在 .zshrc 中启用

# 编辑 .zshrc 的 plugins 行
vim ~/.zshrc
# ~/.zshrc 中的 plugins 配置
plugins=(
  git              # git 快捷命令(gst=git status, gco=git checkout 等)
  z                # 快速跳转常用目录(z 项目名 直接跳转)
  sudo             # 按两次 Esc 自动在命令前加 sudo
  extract          # 万能解压命令(extract 文件名 自动识别格式)
  history          # 历史命令搜索增强
  colored-man-pages  # 让 man 手册带颜色
  command-not-found  # 命令不存在时提示安装方法
  docker           # docker 命令自动补全
  docker-compose   # docker-compose 命令自动补全
  conda-zsh-completion  # conda 自动补全
)

安装第三方插件

# zsh-autosuggestions(输入时自动建议历史命令,超好用)
git clone https://github.com/zsh-users/zsh-autosuggestions \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# 按 → 键接受建议

# zsh-syntax-highlighting(命令语法高亮)
git clone https://github.com/zsh-users/zsh-syntax-highlighting \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# 正确的命令显示绿色,错误的显示红色

# fast-syntax-highlighting(更快的语法高亮)
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting

# zsh-completions(额外的命令补全)
git clone https://github.com/zsh-users/zsh-completions \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-completions

# 把插件加到 .zshrc 的 plugins 列表中
plugins=(
  git z sudo extract
  zsh-autosuggestions        # 自动建议
  zsh-syntax-highlighting    # 语法高亮
  zsh-completions            # 额外补全
)

# 重新加载
source ~/.zshrc  # 立即生效

高级用法

自定义别名

# 在 ~/.zshrc 末尾添加自定义别名
# 常用快捷命令
alias ll='ls -alh'         # 详细列表
alias la='ls -A'           # 显示隐藏文件
alias ..='cd ..'           # 快速上一级
alias ...='cd ../..'       # 快速上两级
alias cls='clear'          # 清屏
alias ports='ss -tlnp'     # 查看端口
alias myip='curl ifconfig.me'  # 查看公网 IP
alias weather='curl wttr.in'   # 查看天气

# 生信常用别名
alias ca='conda activate'  # 激活 conda 环境
alias cl='conda env list'  # 列出 conda 环境
alias jn='jupyter notebook'  # 启动 Jupyter

# Git 别名(oh-my-zsh 的 git 插件已经提供了很多)
alias gs='git status'      # git 状态
alias gd='git diff'        # git 差异
alias gp='git push'        # git 推送
alias gl='git pull'        # git 拉取

zsh 特色功能

# 1. 智能 cd:不用打 cd,直接输入目录名
setopt AUTO_CD  # 在 .zshrc 中启用
# 输入 /tmp 直接跳转,不需要 cd /tmp

# 2. 路径补全:输入部分路径按 Tab 自动补全
# /u/l/b → Tab → /usr/local/bin

# 3. 通配符搜索
ls **/*.py  # 递归搜索所有 .py 文件(zsh 特有的 ** 语法)
ls *.txt(.)  # 只匹配文件(不匹配目录)

# 4. 历史命令搜索
# 输入部分命令,按 ↑ 键搜索以此开头的历史命令
# 比如输入 git 按 ↑ 会依次显示之前的 git 命令

# 5. 全局别名
alias -g G='| grep'     # 管道 grep
alias -g L='| less'     # 管道 less
alias -g H='| head'     # 管道 head
# 用法:ps aux G nginx  等于 ps aux | grep nginx

# 6. 拼写纠正
setopt CORRECT  # 启用拼写纠正
# 输入 sl 会提示你是不是想输入 ls

Powerlevel10k 配置技巧

# Powerlevel10k 的配置文件
~/.p10k.zsh  # p10k configure 生成的配置

# 常用定制(编辑 ~/.p10k.zsh):

# 显示/隐藏提示符元素
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
  dir           # 当前目录
  vcs           # git 信息
)
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
  status        # 上一条命令的退出状态
  command_execution_time  # 命令执行时间
  virtualenv    # Python 虚拟环境
  conda         # conda 环境名称(生信常用)
  time          # 当前时间
)

# 瞬间提示(instant prompt)
# p10k 支持瞬间提示,终端打开后立刻可以输入
# 这个功能默认启用,配置在 .zshrc 最顶部

常见报错

问题原因解决
图标/符号显示为方块没安装 Nerd Font安装 MesloLGS NF 字体
compinit: insecure directories目录权限不对compaudit \| xargs chmod g-w
插件不生效没加到 plugins 列表或没 source检查 .zshrc 的 plugins 行
zsh 启动慢插件太多减少插件,或用 zinit/zplug 懒加载
conda 不工作zsh 没有加载 conda 初始化运行 conda init zsh
oh-my-zsh 更新失败网络问题omz update 或手动 git pull

速查表

# === 安装 ===
sudo apt install zsh                    # 安装 zsh
chsh -s $(which zsh)                    # 设为默认 Shell
sh -c "$(curl -fsSL https://...)"       # 安装 oh-my-zsh

# === 配置 ===
~/.zshrc           # zsh 配置文件
~/.p10k.zsh        # Powerlevel10k 配置
source ~/.zshrc    # 重新加载配置
p10k configure     # 重新配置 p10k

# === oh-my-zsh 管理 ===
omz update         # 更新 oh-my-zsh
omz theme list     # 列出主题
omz plugin list    # 列出已启用插件

# === 必装插件 ===
zsh-autosuggestions      # 自动建议(按 → 接受)
zsh-syntax-highlighting  # 语法高亮
z                        # 目录快速跳转
sudo                     # 双击 Esc 加 sudo
extract                  # 万能解压

# === zsh 特色 ===
cd 目录       # 或直接输入目录名(需启用 AUTO_CD)
**/*.py       # 递归通配符
Tab           # 智能补全
↑↓            # 历史命令搜索

# === git 插件快捷命令 ===
gst    # git status
ga     # git add
gcmsg  # git commit -m
gp     # git push
gl     # git pull
gco    # git checkout
gb     # git branch
gd     # git diff
glog   # git log --oneline --graph