前言
安装 zsh 以后,我们可以通过安装 Oh My Zsh 来美化终端。Oh My Zsh 是一个开源的 zsh 配置管理框架,它提供了很多主题和插件,可以让我们的终端更加美观和实用。
对我以及一部分人而言,Oh My Zsh 带来的惊喜并没有那么大。虽然它的自动补全、主题、插件确实非常实用,但我还是对它有更高的期待,希望增加一些有利于提升工作效率的插件、主题样式以及实用功能。
本文会持续更新,贴出自己的配置、经验等等。如果你有好的建议,欢迎在评论区留言。
安装 Oh My Zsh
不再赘述,参考我之前的一篇文章中的“配置及美化 zsh”章节:为 Windows Terminal 配置 zsh + Oh My Zsh![非 WSL]。
Linux / macOS 上直接执行官方安装脚本即可:
| |
美化
暂时分为两部分:功能性、实用性美化(改提示符),以及外观美化(主题与插件)。
功能 / 实用性美化
首先是对默认主题 robbyrussell 进行的一些美化。
在默认情况下,robbyrussell 主题的显示效果如下:
| |
每一段的含义如下:
详细解释:
➜符号:可以通过它的颜色简单判断上一条命令是否执行成功。绿色表示成功(退出码为 0),红色表示失败。hugo-blog:当前所在目录的名称(只显示最后一级)。git:(main):只有当前目录位于 Git 仓库中时才会出现,由 Oh My Zsh 内置的git_prompt_info函数生成(不依赖git插件):git:(main)中的main是当前分支名称。
✗:表示工作区有未提交的改动,显示为黄色的✗;工作区干净时不显示任何符号。
以下是个人对该主题的一些见解
由于我经常进行一些远程 SSH / 开发等操作,本机也同样安装了 zsh + Oh My Zsh,所以我希望能够在终端左侧显示当前的用户名和主机名,这样就可以很方便地知道当前是在哪台主机上操作……没注意标题栏的主机名,混淆本地 / 远程 / 多个远程导致误操作的这种事我干了好几次了……
就像这个样子:

这咋分清嘛……除了本地的前面有个 ⭕️,其他的都一样……稍不留神 ohhhhhh
所以我对 robbyrussell 主题进行了一些修改,使其显示效果如下:

这样就会显示当前的用户名和主机名,方便我们进行区分。
具体实现方法
修改 robbyrussell 主题的文件,文件路径为 ~/.oh-my-zsh/themes/robbyrussell.zsh-theme,或者直接用 VS Code 打开:
| |
作出如下操作:

主要的代码如下,你只需要把下面的代码插入到上图中指定的位置:
| |
这段代码用的是 zsh 的提示符转义序列,含义如下:
小提示:直接修改
$ZSH/themes/下的文件,执行omz update时可能产生冲突或被覆盖。更稳妥的做法是复制一份到自定义目录,Oh My Zsh 会优先加载$ZSH_CUSTOM/themes/下的同名主题:
1 2 3mkdir -p $ZSH_CUSTOM/themes cp $ZSH/themes/robbyrussell.zsh-theme $ZSH_CUSTOM/themes/ code $ZSH_CUSTOM/themes/robbyrussell.zsh-theme
改完后执行 source ~/.zshrc 或新开一个终端即可看到效果。
外观美化:主题
Oh My Zsh 自带了大量主题,切换主题只需修改 ~/.zshrc 中的 ZSH_THEME:
| |
- 官方 Wiki 有所有自带主题的截图:Themes。
agnoster这类主题使用了 Powerline 特殊字符,需要终端字体支持,否则会显示成方块。安装一款 Nerd Fonts 字体并在终端里选用即可。- 设置
ZSH_THEME="random"每次打开终端会随机一个主题,适合挑选阶段使用。
外观美化:实用插件
两个几乎人手必备的第三方插件:
zsh-autosuggestions:根据历史命令给出灰色的输入建议,按 → 采纳;zsh-syntax-highlighting:命令输入时实时高亮,命令不存在会显示为红色,回车前就能发现拼写错误。
安装:
| |
然后在 ~/.zshrc 中启用(zsh-syntax-highlighting 官方建议放在列表最后):
| |
执行 source ~/.zshrc 生效。
更新进度
- 2024-04-18:完成了对
robbyrussell主题的修改,使其显示当前的用户名和主机名。 - 2026-11-01:补充主题切换和常用插件。
引用
为了尊重原作者的版权,特此引用原作者的链接,如有侵权,请联系我删除。