记录一下我的 zsh 配置

记录一下我的 zsh 配置
背景
最近想写点东西记录一下自己折腾这些工具的经历,之前一直没想到具体写什么。今年实验室服务器迁移,刚好需要重新配一遍 zsh,干脆顺手把整套方案写下来,省得下次换机器再翻一堆旧博客。
什么是 Zsh
Zsh 也是一种 shell,可以看成是一个更好用的 Bash——完全兼容 Bash 的语法,但补全、插件、主题方面强了不止一个量级。目前 macOS 的默认 shell 已经是 Zsh 了。配上插件之后,用起来在 Linux 下能省一大堆敲键盘的功夫。
Zsh 通过大部分主流 Linux 发行版的包管理器都能直接装。要是在没 sudo 权限的服务器上,也可以用 conda 装一份用户级别的,绕开权限问题。
oh-my-zsh
Zsh 固然好用,但初始时只有白板没有任何插件,离理想的使用体验还差点意思,这里就轮到 oh-my-zsh 登场了。
oh-my-zsh 是社区为 zsh 收集的一个第三方插件和主题合集,国内可以通过南京大学镜像站快速安装:
git clone https://mirror.nju.edu.cn/git/ohmyzsh.git
cd ohmyzsh/tools
REMOTE=https://mirror.nju.edu.cn/git/ohmyzsh.git sh install.sh
通过这三条指令可以在境内快速装好 oh-my-zsh,安装过程中也会问你要不要把 zsh 设为默认 shell。要是当时手抖没设置,事后用 chsh -s $(which zsh) 也能补救。
Powerlevel10k
oh-my-zsh 自带的主题我感觉还是不够美观、不够能折腾,于是这里再引入一个 Powerlevel10k 主题。在众多主题中,Powerlevel10k 因为美观和高度可定制脱颖而出,截至 2026 年 4 月 28 日,它在 GitHub 上已累计收获 54k 个 star。
国内安装可以用 gitee 的镜像:
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"
之后修改 ~/.zshrc,把 ZSH_THEME 改成 powerlevel10k/powerlevel10k:
ZSH_THEME="powerlevel10k/powerlevel10k"
source ~/.zshrc 或者重启终端后,会自动进入 Powerlevel10k 的配置向导,跟着选自己喜欢的风格就行。后面想再调,随时 p10k configure 就能重来一遍。
为了能完整显示主题里的图标,建议装一款 Nerd Font 字体。我个人用的是 0xProto Nerd Font,大家也可以挑别人推荐的字体,比如 FiraCode、JetBrainsMono、MesloLGS 之类的都行。装完之后记得在终端模拟器(iTerm2 / Windows Terminal / Alacritty / Kitty 等)的设置里把字体切换过去。
插件设置
主题搞定了,下一步就是装上几个真正能帮我们提高生产力的插件。
zsh-autosuggestions
非常有用的一个插件,根据历史记录和补全信息在你输入时实时给出灰色提示,按 → 就能接受补全,能省下不少重复敲键盘的功夫。
安装指令:
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
zsh-syntax-highlighting
提供指令和文件路径的高亮显示,方便你在按下回车之前就检查指令和路径有没有写错,相当于给终端加了层"实时校对"。
安装指令:
git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
小坑提醒:
zsh-syntax-highlighting必须放在plugins=(...)列表的 最后一项,否则可能会和其他插件打架。
git
oh-my-zsh 自带的插件,把大量常用 git 指令简化成了别名,具体怎么用可以参考 $ZSH/plugins/git/git.plugin.zsh 这个文件。

如图所示,alias 表示别名,等号左边是缩写指令,右边是原指令,比如用 gst 就能代替 git status,用 gco 代替 git checkout。
启用插件
最后别忘了在 ~/.zshrc 里把上面三个插件加到 plugins 列表里,然后 source ~/.zshrc 让配置生效:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
Kitty
kitty 是一个基于 OpenGL 的可编程终端模拟器,适用于 Linux 与 macOS,具有真彩色,连字支持,键盘输入和图像渲染的协议扩展。它还提供了类似于 GNU Screen 或 tmux 的平铺功能。
kitty 在 ~/.config/kitty/kitty.conf 中存储配置,可以调整字体,颜色,光标,透明度和回滚行为。

我的项目结构如图所示,接下来会放出我的配置文件:
kitty.conf
include themes/matugen.conf
window_padding_width 5
hide_window_decorations no
background_opacity 0.8
font_family JetBrains Maple Mono
font_size 13.5
remember_window_size no
confirm_os_window_close 0
shell /bin/zsh --login
cursor_trail 1
cursor_shape block
shell_integration no-cursor
# BEGIN_KITTY_THEME
# Matugen
include current-theme.conf
# END_KITTY_THEME
current-theme.conf
cursor #e0e2e8
cursor_text_color #c2c7ce
foreground #e0e2e8
background #101418
selection_foreground #23323f
selection_background #b8c8da
url_color #99ccfa
# black
color8 #8c9198
color0 #4c4c4c
# red
color1 #ac8a8c
color9 #c49ea0
# green
color2 #8aac8b
color10 #9ec49f
# yellow
color3 #aca98a
color11 #c4c19e
# blue
/* color4 #8f8aac */
color4 #99ccfa
color12 #a39ec4
# magenta
color5 #ac8aac
color13 #c49ec4
# cyan
color6 #8aacab
color14 #9ec3c4
# white
color15 #e7e7e7
color7 #f0f0f0
themes/matugen.conf
cursor #e0e2e8
cursor_text_color #c2c7ce
foreground #e0e2e8
background #101418
selection_foreground #23323f
selection_background #b8c8da
url_color #99ccfa
# black
color8 #8c9198
color0 #4c4c4c
# red
color1 #ac8a8c
color9 #c49ea0
# green
color2 #8aac8b
color10 #9ec49f
# yellow
color3 #aca98a
color11 #c4c19e
# blue
/* color4 #8f8aac */
color4 #99ccfa
color12 #a39ec4
# magenta
color5 #ac8aac
color13 #c49ec4
# cyan
color6 #8aacab
color14 #9ec3c4
# white
color15 #e7e7e7
color7 #f0f0f0
一些软件
nvm
非常好用的 node.js 版本管理器,无需 sudo 权限,能解决系统级 node 下 npm install -g 安装时各种权限问题。
参考 https://github.com/nvm-sh/nvm 安装。
conda
无需多言。
fastfetch
获取本机发行版和硬件信息,比较酷炫,装逼使用。
可以进行美化,参考指令:
cd $HOME/.config
# 下载并解压然后删除
wget https://github.com/sqlsec/fastfetch/releases/download/v0.1/fastfetch-for-Linux.zip
unzip fastfetch-for-Linux.zip && rm fastfetch-for-Linux.zip
效果如图:

onefetch
获取当前 git 项目信息,使用时需保证当前目录已经 git 初始化(即包含 .git 目录)。
效果如图:
