Featured image of post 美化 zsh 终端篇

美化 zsh 终端篇

- 让你的 zsh 更加实用

前言

安装 zsh 以后,我们可以通过安装 Oh My Zsh 来美化终端。Oh My Zsh 是一个开源的 zsh 配置管理框架,它提供了很多主题和插件,可以让我们的终端更加美观和实用。

对我以及一部分人而言,Oh My Zsh 带来的惊喜并没有那么大。虽然它的自动补全、主题、插件确实非常实用,但我还是对它有更高的期待,希望增加一些有利于提升工作效率的插件、主题样式以及实用功能。

本文会持续更新,贴出自己的配置、经验等等。如果你有好的建议,欢迎在评论区留言。

安装 Oh My Zsh

不再赘述,参考我之前的一篇文章中的“配置及美化 zsh”章节:为 Windows Terminal 配置 zsh + Oh My Zsh![非 WSL]。

Linux / macOS 上直接执行官方安装脚本即可:

1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

美化

暂时分为两部分:功能性、实用性美化(改提示符),以及外观美化(主题与插件)。

功能 / 实用性美化

首先是对默认主题 robbyrussell 进行的一些美化。

在默认情况下,robbyrussell 主题的显示效果如下:

1
➜  hugo-blog git:(main) ✗ command here

每一段的含义如下:

robbyrussell 提示符拆解

详细解释:

  • ➜ 符号:可以通过它的颜色简单判断上一条命令是否执行成功。绿色表示成功(退出码为 0),红色表示失败。
  • hugo-blog:当前所在目录的名称(只显示最后一级)。
  • git:(main):只有当前目录位于 Git 仓库中时才会出现,由 Oh My Zsh 内置的 git_prompt_info 函数生成(不依赖 git 插件):
    • git:(main) 中的 main 是当前分支名称。
  • ✗:表示工作区有未提交的改动,显示为黄色的 ✗;工作区干净时不显示任何符号。

以下是个人对该主题的一些见解

由于我经常进行一些远程 SSH / 开发等操作,本机也同样安装了 zsh + Oh My Zsh,所以我希望能够在终端左侧显示当前的用户名和主机名,这样就可以很方便地知道当前是在哪台主机上操作……没注意标题栏的主机名,混淆本地 / 远程 / 多个远程导致误操作的这种事我干了好几次了……

就像这个样子:

本地和多个远程终端难以区分

这咋分清嘛……除了本地的前面有个 ⭕️,其他的都一样……稍不留神 ohhhhhh

所以我对 robbyrussell 主题进行了一些修改,使其显示效果如下:

实际 zsh 效果图

这样就会显示当前的用户名和主机名,方便我们进行区分。

具体实现方法

修改 robbyrussell 主题的文件,文件路径为 ~/.oh-my-zsh/themes/robbyrussell.zsh-theme,或者直接用 VS Code 打开:

1
code $ZSH/themes/robbyrussell.zsh-theme

作出如下操作:

修改 robbyrussell 主题

主要的代码如下,你只需要把下面的代码插入到上图中指定的位置:

1
%(!.%{%F{yellow}%}.)%n@%m

这段代码用的是 zsh 的提示符转义序列,含义如下:

提示符转义序列说明

小提示:直接修改 $ZSH/themes/ 下的文件,执行 omz update 时可能产生冲突或被覆盖。更稳妥的做法是复制一份到自定义目录,Oh My Zsh 会优先加载 $ZSH_CUSTOM/themes/ 下的同名主题:

1
2
3
mkdir -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:

1
2
3
4
5
# 查看自带的主题
ls $ZSH/themes

# 编辑 ~/.zshrc,例如换成 agnoster
ZSH_THEME="agnoster"
  • 官方 Wiki 有所有自带主题的截图:Themes。
  • agnoster 这类主题使用了 Powerline 特殊字符,需要终端字体支持,否则会显示成方块。安装一款 Nerd Fonts 字体并在终端里选用即可。
  • 设置 ZSH_THEME="random" 每次打开终端会随机一个主题,适合挑选阶段使用。

外观美化:实用插件

两个几乎人手必备的第三方插件:

  • zsh-autosuggestions:根据历史命令给出灰色的输入建议,按 → 采纳;
  • zsh-syntax-highlighting:命令输入时实时高亮,命令不存在会显示为红色,回车前就能发现拼写错误。

安装:

1
2
git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

然后在 ~/.zshrc 中启用(zsh-syntax-highlighting 官方建议放在列表最后):

1
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

执行 source ~/.zshrc 生效。

更新进度

  • 2024-04-18:完成了对 robbyrussell 主题的修改,使其显示当前的用户名和主机名。
  • 2026-11-01:补充主题切换和常用插件。

引用

为了尊重原作者的版权,特此引用原作者的链接,如有侵权,请联系我删除。

由 Hugo 强力驱动