zsh/oh-my-zsh 终端美化
zsh 是比 bash 更强大的 Shell,oh-my-zsh 是 zsh 的配置框架,提供主题和插件。白话说就是"给你的终端穿上好看的衣服,还送一堆实用工具"。
核心知识点
| 概念 | 说明 |
|---|
| zsh | Z Shell,一个功能更强的 Shell |
| oh-my-zsh | zsh 的配置管理框架,开箱即用 |
| 主题(Theme) | 自定义终端提示符的外观 |
| 插件(Plugin) | 给终端加功能(自动补全、高亮等) |
| .zshrc | zsh 的配置文件(类似 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