我的终端配置与 Zsh 主题定制

引言

说出来你可能不信,我每天在终端里待的时间比在浏览器里还长。作为一个天天跟代码打交道的人,终端就是我的第二个家。之前一直用 macOS 自带的 bash,觉得凑合能用就行,直到有一天被朋友安利了 zsh,才发现原来终端还能这么好用、这么好看。今天就把我的终端配置和主题定制过程分享给大家,纯属个人经验,谈不上什么教程,就是想跟同好者们聊聊。

终端环境的选择与基础配置

首先得说清楚,我主力机是 MacBook Pro,所以下面分享的很多经验都是基于 macOS 的。不过 Linux 用户应该也能直接参考,毕竟原理都差不多。

我选择 zsh 的原因很简单——它对插件的支持太友好了。bash 也能装插件,但体验完全不在一个级别。zsh 的生态非常成熟,尤其是 Oh My Zsh 这个社区,简直是手把手教你把终端玩出花来。

macOS 默认其实已经装了 zsh,你可以打开终端输入 zsh --version 看看版本。如果显示的版本比较低,建议升级一下,新版本有一些性能优化。升级方法也很简单:

# 安装最新版本的 zsh

brew install zsh

把 zsh 设置为默认 shell

chsh -s /opt/homebrew/bin/zsh

这里有个小坑提醒一下,Apple Silicon Mac 的 Homebrew 安装路径是 /opt/homebrew/bin/zsh,如果是 Intel 芯片则是 /usr/local/bin/zsh,别搞混了。

Oh My Zsh 安装与插件推荐

装好 zsh 后,第一件事就是安装 Oh My Zsh。这玩意的安装简单到令人发指,一条命令搞定:

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

安装完成后,你的 ~/.zshrc 文件会被自动创建。以后所有的个性化配置都写在这个文件里就行。

接下来就是重头戏——插件。我目前常用的插件有这几个:

- zsh-autosuggestions:根据你的历史输入自动提示命令,用习惯了真的回不去

- zsh-syntax-highlighting:语法高亮,命令拼写错误会显示红色

- z:快速跳转目录,记录你最近访问过的文件夹,输入关键词就能跳转

- git:git 插件,提供一堆实用的 git 快捷别名

安装插件也很简单,以 zsh-autosuggestions 为例:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

然后在 ~/.zshrc 里找到 plugins=(...) 这一行,把插件名加进去:

plugins=(

git

zsh-autosuggestions

zsh-syntax-highlighting

z

)

我的建议是别装太多插件,装多了加载速度会变慢,而且很多功能其实根本用不上。挑几个真正能提升效率的就行。

主题定制的美学追求

说完插件聊聊主题。Oh My Zsh 自带了很多主题,够你挑花眼的。我之前试过好几个,最后用的是 powerlevel10k,这个主题真的特别火,几乎成了标配。

安装 powerlevel10k 也很简单:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

然后在 ~/.zshrc 里把主题改成 ZSH_THEME="powerlevel10k/powerlevel10k"

第一次启动终端的时候,powerlevel10k 会自动进入配置向导,问你一堆问题让你选择提示符的样式。这个向导非常直观,你只需要按自己的喜好一路点下去就行。配置完会生成一个 .p10k.zsh 文件,以后的微调可以改这个文件。

我之所以喜欢 powerlevel10k,主要是因为它支持分段的提示符,信息展示很清晰。左边的部分显示当前目录、git 分支、git 状态,右边可以显示时间、命令执行时间等。而且它对中文的支持也很好,不会出现乱码问题。

如果你不想用 powerlevel10k,Oh My Zsh 自带的 robbyrussell 主题也不错,简洁清爽,适合喜欢简约风格的朋友。

打造个性化提示符

光有一个好看的主题还不够,我闲来无事还会自己微调提示符的样式。powerlevel10k 的配置选项已经非常丰富了,但有时候还是想加一些自己的小创意。

比如我给提示符加了一个自定义段,显示当前 Python 虚拟环境的名字。因为我经常在不同的项目之间切换,每个项目有自己的虚拟环境,如果不清楚当前在哪个环境,很容易搞错依赖版本。

实现方法是在 .p10k.zsh 文件里添加自定义段。简单来说就是定义一个函数,然后在 POWERLEVEL9K_LEFT_PROMPT_ELEMENTSPOWERLEVEL9K_RIGHT_PROMPT_ELEMENTS 里加上这个段的名字。

# 定义函数

function prompt_python_venv() {

if [[ -n $VIRTUAL_ENV ]]; then

local venv_name=$(basename "$VIRTUAL_ENV")

p10k segment -b blue -f white "⬡ $venv_name"

fi

}

在右侧提示符中添加

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(... python_venv ...)

这样终端右侧就会显示当前激活的虚拟环境名字,一目了然。类似的思路可以添加任何你想显示的信息,比如 Docker 容器名、K8s 上下文等等。

日常使用的小技巧

最后分享几个我日常使用终端的小技巧,都是些不起眼但能提升体验的东西。

自动补全:zsh 的智能补全比 bash 强太多了。你输入命令后按 Tab 会自动补全文件名、参数等。如果你同时按 TabOption(Alt),它会列出所有可能的选项供你选择。 历史搜索:按 Ctrl + R 可以搜索命令历史,输入关键词就能找到之前执行过的命令。找到后按 Enter 重新执行,按左右方向键可以编辑后再执行。 快速目录跳转:前面提到的 z 插件真的好用。你不需要输入完整路径,只要输入目录名的关键词,它就能帮你跳转。比如你之前访问过 /Users/me/projects/awesome-app,下次想回去只需要输入 z awesome 就行。 复用上一个命令的参数:这个技巧很多人不知道。用 !$ 可以获取上一个命令的最后一个参数,比如你刚 cat 了一个文件,想用 vim 打开它,只需要 vim !$ 就行,省得再打一遍路径。

总结

好啦,以上就是我的终端配置和 Zsh 主题定制的全部分享。总的来说,zsh 加上几个好用的插件和主题,能让终端的体验提升好几个档次。一套好的终端环境不仅看着舒服,关键是能实实在在提高工作效率。

如果你之前一直用的是默认终端,不妨花点时间折腾一下我相信你一定会爱上它的。有什么问题欢迎评论区交流,咱们一起探讨!