如果你经常通过 Linux、macOS 或 WSL 操作服务器,终端几乎就是每天使用时间最长的工具之一。默认 Shell 虽然够用,但在命令补全、历史提示、语法检查和 Git 状态展示方面比较朴素。
这篇文章将从零开始配置 Zsh 和 Oh My Zsh,并安装两个最实用的插件:
zsh-autosuggestions:根据历史记录给出命令建议。zsh-syntax-highlighting:输入命令时实时进行语法高亮。
完成后,你会得到一个更易用、更安全,也更适合日常开发和服务器运维的终端环境。
一、Zsh、Oh My Zsh 和插件分别是什么
Zsh 是一种功能丰富的 Shell,可以理解为 Bash 的替代品。它支持更强的补全、目录跳转、历史记录和提示符定制。
Oh My Zsh 并不是一个新的 Shell,而是一套管理 Zsh 配置的开源框架。它提供了大量内置插件、主题和统一的配置结构,主要配置文件仍然是:
~/.zshrc
插件则是在 Zsh 基础上增加具体能力。例如自动建议、命令高亮、Git 快捷命令等。
二、安装前的准备
先检查系统中是否已经安装 Zsh、Git 和 Curl:
zsh --version
git --version
curl --version
Oh My Zsh 官方建议使用较新的 Zsh 版本。一般来说,当前仍受支持的 Linux 发行版及 macOS 自带或软件仓库中的版本都可以正常使用。
1. Ubuntu、Debian
sudo apt update
sudo apt install -y zsh git curl
2. Fedora、Rocky Linux、AlmaLinux
sudo dnf install -y zsh git curl
较老的 CentOS 可以使用:
sudo yum install -y zsh git curl
3. Arch Linux、Manjaro
sudo pacman -S zsh git curl
4. macOS
较新的 macOS 通常已经将 Zsh 作为默认 Shell。如果系统中缺少 Git,可先安装 Xcode Command Line Tools:
xcode-select --install
也可以通过 Homebrew 安装新版 Zsh:
brew install zsh git
5. Windows
Oh My Zsh 不能直接运行在传统的 CMD 或 PowerShell 中,推荐先安装 WSL2,再进入 Ubuntu 等 Linux 环境按本文步骤配置。
三、安装 Oh My Zsh
使用 Curl 执行官方安装脚本:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
如果没有 Curl,也可以使用 Wget:
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装程序通常会完成以下操作:
- 将 Oh My Zsh 下载到
~/.oh-my-zsh。 - 创建或更新
~/.zshrc。 - 询问是否将 Zsh 设置为默认 Shell。
- 启动一个新的 Zsh 会话。
安装后检查目录:
ls -la ~/.oh-my-zsh
检查当前 Shell:
echo $SHELL
如果结果仍然是 /bin/bash,可以手动修改默认 Shell:
chsh -s "$(command -v zsh)"
修改后需要退出当前登录会话并重新登录。仅仅新开一个子 Shell,有时不会刷新系统记录的默认 Shell。
服务器上的 root 用户和普通用户拥有各自独立的
~/.zshrc与~/.oh-my-zsh。在哪个账号下安装,就只对哪个账号生效。
四、认识 .zshrc 配置文件
使用喜欢的编辑器打开配置:
nano ~/.zshrc
或:
vim ~/.zshrc
其中最常修改的是主题和插件:
ZSH_THEME="robbyrussell"
plugins=(
git
)
plugins=(...) 中的插件名称使用空格或换行分隔,不要使用逗号。
修改完成后,建议重新启动 Zsh:
exec zsh
临时加载普通配置时也可以使用:
source ~/.zshrc
如果刚刚升级了主题或插件,使用 exec zsh 通常比反复 source ~/.zshrc 更干净。
五、安装自动建议插件 zsh-autosuggestions
这个插件会读取命令历史,并在光标后面显示灰色建议。输入命令的前几个字符时,就能看到以前执行过的完整命令。
1. 下载插件
git clone https://github.com/zsh-users/zsh-autosuggestions \
"${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions"
这里使用 ${ZSH_CUSTOM:-...} 是为了兼容自定义 Oh My Zsh 目录;没有自定义时,插件会安装到:
~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
2. 启用插件
编辑 ~/.zshrc:
plugins=(
git
zsh-autosuggestions
)
重新启动 Zsh:
exec zsh
3. 使用方法
开始输入一条以前执行过的命令,右侧会出现淡色建议:
docker compose ...
常见操作:
- 按
→接受整条建议。 - 按
End接受整条建议。 - 继续输入以缩小历史匹配范围。
- 按
Ctrl+C取消当前输入。
如果灰色提示在当前终端主题中不清楚,可以在 .zshrc 中设置颜色:
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
这行配置需要放在 Oh My Zsh 加载完成之后。多数默认配置中,放在 .zshrc 末尾即可。
六、安装语法高亮插件 zsh-syntax-highlighting
该插件会在命令执行前实时判断输入内容:可用命令通常会正常高亮,无法识别或可能错误的命令会显示为醒目的颜色。这能减少拼写错误,也能让复杂命令更容易检查。
1. 下载插件
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
"${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting"
2. 启用插件
在 ~/.zshrc 中加入插件名称:
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
)
zsh-syntax-highlighting 应尽量放在插件列表末尾,因为它需要在其他可能修改命令行编辑器行为的插件之后加载。
重启 Zsh:
exec zsh
3. 验证效果
输入一个存在的命令,但先不要回车:
git status
再输入一个不存在的命令:
gittt status
两者应该显示不同的颜色。如果完全没有变化,可以按照后文的排错步骤检查。
七、一份可直接使用的 .zshrc 示例
下面是一份简洁、适合服务器和开发环境的配置片段:
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="robbyrussell"
plugins=(
git
sudo
colored-man-pages
command-not-found
zsh-autosuggestions
zsh-syntax-highlighting
)
source "$ZSH/oh-my-zsh.sh"
# 自动建议文字颜色
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
# 常用别名
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
其中:
git:提供大量 Git 别名和补全。sudo:按两次Esc,可在当前命令前添加sudo。colored-man-pages:为man手册增加颜色。command-not-found:命令不存在时尝试提示对应软件包。
不同发行版内置插件的依赖可能不同。如果某个插件加载时报错,先从列表中移除它,再检查系统是否缺少相关命令。
八、Git 插件常用快捷命令
Oh My Zsh 默认启用的 git 插件包含大量别名。常用的有:
| 别名 | 等价命令 |
|---|---|
gst |
git status |
ga |
git add |
gaa |
git add --all |
gcmsg |
git commit -m |
gp |
git push |
gl |
git pull |
gco |
git checkout |
gcb |
git checkout -b |
gd |
git diff |
glog |
图形化查看 Git 日志 |
查看插件实际定义的所有别名:
alias | grep '^g'
不建议一开始记住所有别名。先使用 gst、gaa、gcmsg、gp 这几个高频命令即可。
九、可选:安装 Powerlevel10k 主题
如果希望提示符显示 Git 分支、命令执行状态、耗时和服务器信息,可以安装 Powerlevel10k:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
"${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"
修改 ~/.zshrc:
ZSH_THEME="powerlevel10k/powerlevel10k"
启动新会话:
exec zsh
首次启动通常会进入配置向导,也可以手动运行:
p10k configure
如果图标显示成方框或乱码,需要在本地终端软件中安装并选择 Nerd Font。字体是由本地终端渲染的,不是在远程服务器上设置。
需要注意的是,Powerlevel10k 官方目前处于有限维护状态。它仍可正常使用,但如果只追求稳定和轻量,Oh My Zsh 自带主题已经足够。
十、更新 Oh My Zsh 和插件
1. 更新 Oh My Zsh
omz update
2. 更新自动建议插件
git -C "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" pull
3. 更新语法高亮插件
git -C "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting" pull
4. 更新 Powerlevel10k
git -C "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" pull
更新后执行:
exec zsh
十一、常见问题排查
1. 出现 zsh: command not found
说明 Zsh 没有安装,或可执行文件不在 PATH 中:
command -v zsh
zsh --version
如果没有输出,请使用当前系统的软件包管理器安装 Zsh。
2. 新开终端后仍然进入 Bash
检查:
echo $SHELL
getent passwd "$USER" | cut -d: -f7
重新设置默认 Shell:
chsh -s "$(command -v zsh)"
然后完整退出 SSH 或桌面登录会话,再重新登录。
3. Oh My Zsh 提示找不到插件
检查插件目录是否存在:
ls "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins"
插件目录名必须与 .zshrc 中填写的名称完全一致。例如:
zsh-autosuggestions
zsh-syntax-highlighting
4. 修改 .zshrc 后没有效果
先检查语法:
zsh -n ~/.zshrc
没有任何输出通常表示语法检查通过,然后执行:
exec zsh
如果报错,可以临时禁用最近增加的插件,再逐项恢复。
5. 自动建议不显示
检查插件是否位于启用列表中,并确认目录存在:
test -d "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" && echo OK
还可以输入下面的命令检查插件脚本是否已加载:
typeset -f _zsh_autosuggest_start >/dev/null && echo loaded
6. 语法高亮不生效
确保 zsh-syntax-highlighting 位于插件列表最后,然后重新启动 Zsh。若与某些插件管理器或自定义 ZLE 组件冲突,可以按照项目官方建议改为手动加载,并将下面一行放在 .zshrc 最末尾:
source "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
手动加载时,应从 plugins=(...) 中移除同名插件,避免重复加载。
7. SSH 登录明显变慢
插件越多,Zsh 启动时需要执行的脚本越多。可以测量启动时间:
time zsh -i -c exit
如果启动较慢,先减少插件数量。对于服务器环境,通常保留 git、自动建议和语法高亮就足够了。
十二、备份与卸载
1. 备份配置
升级或大改配置前,先备份:
cp ~/.zshrc ~/.zshrc.backup
恢复时执行:
cp ~/.zshrc.backup ~/.zshrc
exec zsh
2. 卸载单个插件
先从 .zshrc 的 plugins=(...) 中移除插件名称,再删除对应目录:
rm -rf "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions"
删除前务必确认变量展开后的路径确实位于 Oh My Zsh 的插件目录中。
3. 卸载 Oh My Zsh
Oh My Zsh 提供卸载命令:
uninstall_oh_my_zsh
卸载后如果希望恢复 Bash:
chsh -s "$(command -v bash)"
退出当前登录会话并重新登录后生效。
总结
一套实用的 Zsh 环境并不需要安装几十个插件。对大多数开发和服务器运维场景来说,以下组合已经能够显著改善体验:
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
)
自动建议减少重复输入,语法高亮帮助提前发现错误,Git 插件则简化高频操作。配置完成后记得备份 .zshrc,以后迁移到新设备时,只需安装 Zsh、Oh My Zsh 和对应插件,就能快速恢复熟悉的终端环境。
参考资料
- Oh My Zsh 官方项目:https://github.com/ohmyzsh/ohmyzsh
- zsh-autosuggestions:https://github.com/zsh-users/zsh-autosuggestions
- zsh-syntax-highlighting:https://github.com/zsh-users/zsh-syntax-highlighting
- Powerlevel10k:https://github.com/romkatv/powerlevel10k