目前使用的终端和 Shell 配置


终端模拟器

不是程序员,不做开发,那么我为什么要用终端?

因为 macOS 上那个访达太难用了,难用到我更愿意在终端里敲 mv、cp、mkdir 这些命令。

最初是想找个东西替代访达,偶然间发现了一个终端里的文件管理器:yazi,看上去还挺好用的,就装上试了试。但很快就发现一个问题,yazi 的图片预览功能并不能在 macOS 自带的终端上使用。

于是就开始了终端模拟器的折腾。

Kitty

最开始使用的是 Kitty,主要是在网上搜索终端模拟器关键字,出现的 Kitty 相关评价总是非常正面的,于是就下载了。

做了一些简单的配置。

首先是主题,Kitty 可以直接使用命令 kitty +kitten themes 进入主题选择页面,目前我使用的是 Catppuccin 主题。

因为 yazi 需要用 Nerd Font 字体,于是我就在 Nerd Font 官网 下载了排在最前面的 0xProto Nerd Font 字体,但是设置成 Kitty 的默认字体后,立刻就发现了个问题,yazi 里那些 Nerd 符号似乎都有些偏小

在网上搜寻了一翻后得知,Kitty 似乎有强制使用等宽字体的要求,我看了一下配置文件里的设置:

# ~/.config/kitty/kitty.conf
font_family      0xProto Nerd Font mono

这个字体的 mono 版本里,Nerd 符号就是要比文字小一些的。

如果把 0xProto Nerd Font mono 强行改成 0xProto Nerd Font 的话,Kitty 的字体就会变回默认的 Menlo-Regular (13pt) 。而且 Kitty 有个查询可选字体的命令kitty list-fonts --psnames ,输入这个命令后出现的可选字体基本上也都带有“mono”字样。

其实我也不是非得用 0xProto 这个字体,我确实可以选择别的,但我在 Nerd Font 官网看到的那些字体我基本都不太喜欢,我又懒得去搜别的 Nerd Font,而此时的关键点在于,我以为所有的 Nerd Font mono 字体都有这个问题,所以暂时先将就着用了

但用着用着感觉还是特别不舒服,我习惯性的把终端的字体设置比较小,只要保证我自己能看得清就行了,但原本就比文字小的 Nerd 图标这下更小了。

于是我准备换个支持使用非等宽字体的终端。

Tabby

Tabby 这个玩意其实我不太懂该怎么称呼它,它其实是我去年发现的一个很好用的 SSH 工具,我一般只会用它来远程到 Linux 服务器,但它确实可以当本地终端模拟器来使用。

也正是我将 Tabby 的默认字体设置为 0xProto Nerd Font 之后,我才确信了 yazi 中 Font 符号偏小,是 Kitty 只允许使用这款字体的等宽版本的关系。

不过我其实不打算常用 Tabby,我觉得还是继续拿它做 SSH 工具比较好。

Ghostty

Ghostty 是我在一个 Kitty 视频底下评论区里找到的,这个终端模拟器似乎才发布一年多,此前是需要邀请内测的。

一开始用的是跟 Kitty 一样的 Catppuccin Mocha 主题,但用了几天后发现深蓝色背景其实看着并不舒服。于是就换成了 0x96f

但这次在字体方面不同的是,我同时启用了两个字体:

# ~/.config/ghostty/config
font-family = 0xProto Nerd Font
font-family = Maple Mono NF CN

0xProto 我直接使用的就是非 mono 版本了,解决了 yazi 中 Nerd 符号太小的问题。

而下面的 Maple Mono NF CN 则是我找到的一个中文挺好看的字体,而且这个字体也带有完整的 Nerd 符号。

这样设置的好处是,Nerd 符号和英文字体使用的是 0xProto,中文字体使用的是 Maple Mono。

Maple Mono NF CN 字体单独设置上去的话其实也能用,但是我比较挑剔,我觉得 Maple Mono 的英文字符有点窄了。

截止到写这篇文章时修改过的配置都在这了:

# ~/.config/ghostty/config

# 字体
font-family = 0xProto Nerd Font
font-family = Maple Mono NF CN

# 字体大小
font-size = 13

# 主题设置
theme = 0x96f

# 窗口透明度
background-opacity = 0.95
# 窗口模糊度
background-blur = 10
# 窗口大小
window-height = 32
window-width = 110
# 窗口水平内边距(左右)
window-padding-x = 17
# 窗口垂直内边距(上下)
window-padding-y = 17
# 隐藏窗口标题栏
# window-decoration = false

# 光标样式
cursor-style = block

那么我遇到的问题基本上等于是解决了。

然后我想着顺便给 Kitty 设置成 Maple Mono NF CN 字体试试看,发现可以正常使用,并且 yazi 界面下的 Nerd Font 符号大小也正常了。这个时候我才知道,不是所有 mono 字体的 Nerd 符号都存在偏小的问题。

Shell 美化和插件

接下来就是开始折腾美化和插件了。

首先 macOS 不知从哪个版本之后就把默认的 Shell 从 bash 换成了 zsh。

zsh 的话有个很有名气的插件,叫 oh my zsh

本来是想 oh my zsh 配合 powerlevel10k 美化的,毕竟这俩放在一起介绍的教学视频在网上还挺多,但 powerlevel10k 实在太花里胡哨了,虽然我不是极简主义,但太花哨了我觉得还是不妥。

所以直至写这篇文章,我也只是启用了 oh my zsh 而已。

输入框美化

我看上了好几个 oh my zsh 主题,都放在了 .zshrc 文件中备注着,目前只启用了这一个主题:

# 超简洁主题,只显示当前目录
ZSH_THEME="robbyrussell"

这个主题其实我不是特别喜欢,但它显示的字符实在太简洁了。

我用字符描述一下就是这个效果:→ ~ _

我听说这个主题其实就是 oh my zsh 的默认主题,不过我已经不记得刚安装 oh my zsh 时的样子了。

期间还尝试过 Starship,还让 Ai 帮我改过 Starship 的主题,不过没用多久就关掉了。

目前就是暂时先用 robbyrussell 这个自带的主题,等后续有什么想法了,就切换到 Starship,然后让 Ai 帮我把这个设计想法实现出来。

oh my zsh 插件

要不是我卸载过一次 oh my zsh,不然我还真不知道 zsh 的命令补全只能补第一级,例如我想要输入 docker pull,如果我只输入 dock,按下 Tab 后 zsh 确实会帮我补全第一级到 docker,但接下来的第二级 pull,如果我只输入到 docker pu 的话,再怎么按 Tab 也都是没反应的,而在装好了 oh my zsh 的情况下,docker pu 按下 Tab 就会显示出 pull 和 push 这两个候选项。

所以我感觉 oh my zsh 这个插件,即便是不想用里边的主题功能,也可以安装一个,毕竟 oh my zsh 官网也写着:

It comes bundled with thousands of helpful functions, helpers, plugins, themes

它捆绑了成千上万的实用函数、辅助工具、插件、主题

fish

我并没有使用 fish shell,只是安装上去体验了一下。

说实话 fish 给我的感觉真就跟官网说的那样,能“开箱即用”。要不是我不想换 macOS 的默认 Shell,我可能真的直接用 fish 了,都不用另外装插件了。

而且 fish 有个点我很喜欢,就是它有个可视化的自定义界面,输入fish_config 就会弹出一个网页,可以直接在网页里选择配色方案,选择输入框字符。只是目前可选项有点少。

补全建议插件

自从试了一下 fish shell,它的补全建议命令语法高亮让我感觉非常好用,所以我在想,zsh 或者 oh my zsh 有没有相同的功能?

查了一下还真有,甚至直接写明了它是类 fish 的功能:

Fish-like fast/unobtrusive autosuggestions for zsh.

类似 Fish 的快速/不显眼的自动建议,适用于zsh。

这是一个 zsh 的自动补全建议,就跟 fish 一样,能搜索历史命令,然后在输入命令的时候给出建议,还能直接用左右方向键来直接完成填充,GitHub 地址:zsh-users/zsh-autosuggestions

能直接 brew 安装,记得当时安装好后 brew 还会教我写 .zshrc 来启用该功能:

# 启用类 Fish 的历史补全功能
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh

命令语法高亮

另一个命令语法高亮则是使用 zsh-syntax-highlighting 实现的。

这个跟上面的 zsh-autosuggestions 一样,也是直接 brew 安装,装好后写进 .zshrc 里就行了。

# 启用命令高亮功能
source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

这个功能其实对我来说就一个用处,就是在我输入一长串命令的时候输错了,整行都会显示为红色,以此为提醒。

另外,zsh-autosuggestions 和 zsh-syntax-highlighting 这两个插件是 zsh 的插件,不需要依赖 oh my zsh,为什么这里我要提一嘴呢?因为之前重装 oh my zsh 的时候我还准备先把这俩卸了,想了半天才想明白这俩跟 oh my zsh 没关系。

yazi 相关

yazi 官方的安装文档里,如果使用的是 brew 安装,那么命令里应该会附带安装一个名为 font-symbols-only-nerd-font 的 Nerd Font,但是这个 Font 就跟名字上写的一样,仅只有 Nerd。

其实到这我就在想,既然有些终端模拟器里可以设置多个 Font family,那么最开始在 Kitty 里遇到 Nerd 符号太小的问题时,我是不是可以把这个仅只有 Nerd 符号的字体添加进去,然后放在 Font family 的第一位,相当于是告诉终端模拟器,首先调用 Symbols Nerd 字体,里边没有英文字符就调用 0xProto Nerd 的英文字符。

理论上是这样的,但我写这篇文章之前在 Kitty 里尝试了一下,并不行……也不知道是哪里有问题,不深究了,反正我已经决定不用 Kitty 了。

其实终端模拟器和 Shell 折腾到现在,yazi 我几乎已经不怎么使用了,主要还是因为习惯上更偏向于使用终端的文件管理命令。

这样就很奇怪,明明是因为默认终端下的 yazi 体验不佳所以才开始了终端的折腾,最终却没有把 yazi 投入使用

当然我这里还是记录一下我做过的改动。

首先是 keymap.toml 文件,可以通过这个文件修改 yazi 的快捷键,但其实这个文件里 desc = 后面的值就是通过按 ~ 进入的帮助页里的文字,所以我把他们全都汉化了,汉化之后的帮助页阅读起来确实顺畅不少。

然后就是主题,目前选用的是官方库里的 catppuccin-mocha 主题。我感觉 yazi 主题都大差不差,我这不过是随便选了一个而已。

然后就是 Linux 版本 yazi 的问题了。

我想把 yazi 也装到我服务器里使用,但我云服务器用的系统是 Debian,Debian 正式发行版本的 GLIBC 未能跟上 Yazi 所需版本,所以我找了个社区打包版的 yazi:yazi-debian

下载对应包名,然后使用命令安装:

apt-get install ./包名.deb
# 不能忽略 ./

Debian 版本的配置文件目录在 root 目录的 .config 下,但我初次安装的时候不知道为什么目录是 /root/.local/state/yazi/,系统重启后恢复正常了。

其实搞到现在,我不过只是给 zsh 里装了一堆插件实现了 fish 自带的功能罢了。听说 zsh 还有一些自带的插件,需要在配置文件里自行启用,但我看了一下没有我感兴趣的,所以暂时就先放着不管了。

目前终端和 Shell 的配置就是这样了,后续如果有其他的改动或者装了别的什么插件,我也不会特意更新到这里。这篇文章只是记录目前的配置状态。


目前使用的终端和 Shell 配置
https://vi.diipx.com/2026/Terminal_Shell
作者
晚空
发布于
2026年01月25日
许可协议