zzxworld

Zsh 安装配置指南

作为一个终端界面的重度使用者,Linux 系统下默认的 Bash 无法满足我的折腾欲。Zsh 则是一个非常易用,支持功能扩展的 Shell 程序。不仅有漂亮的主题,还有各种插件来实现更多个性化的功能。

所以不论是之前用 macOS 和 Ubuntu 的时候,还是现在刚接触的 Arch Linux,我在安装好系统后要做的第一件事就是把 Shell 换成 Zsh。

安装 Zsh

Zsh 的安装过程非常简单,使用各大系统的包管理工具就能轻松完成。

比如 Arch Linux:

sudo pacman -S zsh

或者是 Ubuntu:

sudo apt-get install zsh

至于 macOS,默认就自带了 Zsh,不过也可以通过 brew 命令来安装最新版本的 Zsh:

brew install zsh

完成安装后,就可以直接输入 zsh 命令来体验 Zsh 。首次运行 Zsh 会出现这个创建默认配置文件的向导界面:

Screenshort 1

按一下键盘上的 0 就会在当前用户主目录下创建一个空 .zshrc 文件。 这是 Zsh 的配置文件。如果准备长期使用 Zsh,建议做了任何修改后都随时备份,可以方便自己工作环境的迁移。

每次进入 Zsh 都输入一下 zsh 命令的步骤实在很多余,可以通过下面的命令把 Zsh 作为当前用户的默认 Shell:

chsh -s /bin/zsh

这样每次登陆系统后使用的就是 Zsh。

使用 Oh My Zsh

默认安装好的 Zsh 和 Bash 一样,平平无奇。还需要继续丰富一下样式和插件才能发挥出 Zsh 真正的能力。

如果是刚接触 Zsh,又或者是图省事,不想花太多精力在 Zsh 的配置工作上。Oh My Zsh 就绝对是一个值得一用的「一键套餐包」。

安装

输入下面这条命令:

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

执行后会自动下载好各种样式和一大堆常用插件,并创建好一个立马可以体验 Zsh 魅力的 .zshrc 配置文件。

不过目前在国内网络环境下,输入以上安装命令大概率会返回以下结果:

Screenshort 2

具体原因,懂得都懂。所以针对这个安装命令,需要使用一下 Github 加速服务。比如替换成下面这样:

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

另外差点忘了,需要提前安装好 Git 软件包,Arch Linux 下通过这条命令安装:

sudo pacman -S git

然后再次执行安装 Zsh 的命令,一切正常的话,就能看到以下安装成功的画面了。

Screenshort 3

配置

看起来好像还是平平无奇。先别走,稍微还有一点细活儿没完成。

打开 ~/.zshrc 文件,找到里面的 ZSH_THEME 这行,改成如下的配置:

ZSH_THEME="agnoster"

然后安装一下 Powerline 字体,这在 Arch Linnux 上只需要输入下面的命令:

sudo pacman -S powerline-fonts

然后重启一下系统,使新安装的字体生效。再次进入系统后,给终端选一个看起来舒服一点的配色,再看看效果:

Screenshort 4

上面这张图彰显了 Zsh 的三个亮点:

  1. 配合特殊字体,实现了命令提示的个性化样式。
  2. 我在进入 .oh-my-zsh 目录时,没有使用 cd 命令,这是由 Zsh 插件提供的跳转功能。
  3. .oh-my-zsh 是由 git 命令克隆下来的,可以看到,Zsh 会通过图标和分支名称的方式来提示当前进入的是一个 Git 源码控制目录,并且提示了当前使用的分支名称。如果随意改动一下这个目录下的代码,分支名称的背景色变成另外一种颜色。这是 Zsh 的 git 插件提供的功能。

以上只是默认安装好 Oh My Zsh 后所展现出来的 Zsh 特性。

如果想要尝试一下更多样式,可以看看 ~/.oh-my-zsh/themes/ 目录,这里面都是各种可用的样式。把名称设置到上面 .zshrc 文件中的 ZSH_THEME 配置项中,重新打开终端就能看到效果了。

如果想要体验更多插件功能,可以看看 ~/.oh-my-zsh/plugins/ 目录,同样是把文件名复制到 .zshrc 文件中的 plugins 配置项中,就能启用并体验相关插件的功能。

不使用 Oh My Zsh

Oh My Zsh 是一个适合大多数人的选择,降低了 Zsh 的使用门槛。我从接触到使用 Zsh,也一直都是使用的 Oh My Zsh。在之前的一篇文章《Intel NUC 安装 Arch Linux 历险记》中,我分享了自己切换到 Arch Linux 的经历。趁着这次尝试新系统的机会,我也顺便体验了一下不依赖于 Oh My Zsh,自己从头配置 Zsh 的过程。如果你也正有此意,可以作为参考,来衡量一下 Oh My Zsh 是不是真的很有必要。

回到最开始安装好 Zsh 的状态。~/.zshrc 文件空空如也。先来完成一下配色。

搞定主题

Zsh 最具人气的一个主题样式就是 powerlevel10k。我们来尝试安装一下这个主题。

先把主题的代码通过 git 命令克隆到本地:

git clone https://github.com/romkatv/powerlevel10k.git ~/.zsh/powerlevel10k

接下来就只需要在 ~/.zshrc 文件中添加下面的配置项:

source ~/.zsh/powerlevel10k/powerlevel10k.zsh-theme

关闭终端程序后重新打开,就会出现这个问答交互式的自定义配置界面:

Screenshort 5

都是些选择自己喜欢什么样式细节的选项,根据提示和效果操作就行了。

也不必担心会选错,因为这个主题软件还提供了 p10k configure 命令,可以随时重新操作一遍。

另外操作的过程中,可能会发现一些无法显示的方块符号:

Screenshort 6

这是还缺少一些特殊的字体。p10k 样式有推荐的字体,可以通过下面这个地址来查阅:

Meslo Nerd Font patched for Powerlevel10k

安装好字体后,再执行 p10k configure 配置命令重新选择各选项,就会有更加丰富的样式特征了。

我最终选择的终端样式如下:

Screenshort 7

安装插件

除了样式,接下来的就是功能插件了。这需要根据自己的需要来选择。我以 zsh-autosuggestinions 命令提示插件为例,演示一下 Zsh 插件的安装方法。

同样先在 Github 上找到插件的源码地址,用 git 命令克隆到本地:

git clone https://github.com/zsh-users/zsh-autosuggestions.git ~/.zsh/zsh-autosuggestions

然后在 ~/.zshrc 文件中添加下面的配置项:

source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh

关于这个插件的效果,只需要重新打开终端程序,随便输入几条命令,再次输入命令的前几个字符时,后面就会出现相关的提示:

Screenshort 8

此时按一下右方向键,就会自动完成这条命令的输入。

除了补充历史输入命令,插件还支持通过配置 ZSH_AUTOSUGGEST_STRATEGY 参数来扩展命令的补充范围。这可以参考一下插件的 Github 主页:

除了 zsh-autosuggestinions,还有下面这个推荐值得一试的 ZSH 插件:

总结

一个好看且能提升命令操作效率的 Shell 会让终端的使用体验提升不少。Zsh 目前在我看来说是能满足两个要求的不二之选。

至于要不要使用 Oh My Zsh,我在体验过不使用它的方式后,觉得还是很有必要使用的。Oh My Zsh 不经提供了开箱即用的配置,而且默认就配置好了一些诸如命令自动补全这些提升易用性的配置。除此之外,不仅是切换样式,在启用插件时也会方便不少。虽然这会额外占用一点系统资源,但我认为这是值得的。