# 前言

Oh My Zsh 是一款非常流行的 zsh 配置管理工具,而 zsh 又是一款能够很好地替代 bashshell 。二者的结合能够为终端提供许多非常实用的功能。

我个人使用 Windows 系统的 WSL ,使用 Ubuntu 环境。因此下文中的命令执行环境默认都是 Ubuntu

# 安装

# 安装 zsh

要安装 Oh My Zsh ,首先必须要有一个 zsh 环境, zsh 是原始的 bash 终端 shell 的一个良好的替代品。安装 zsh 非常简单:

apt install zsh

安装完成之后,使用下列指令将默认 shell 改为 zsh

chsh -s /usr/bin/zsh

命令中的路径可能需要根据实际情况进行修改,可以使用 which zsh 命令查看 zsh 的路径。

# 安装 Oh My Zsh

安装完 zsh 之后,便可以开始 Oh My Zsh 的安装了。更详细的内容,可以参考官方链接,本文只做简要的介绍。

Oh My Zsh 安装命令
Method Command
curl sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
wget sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
fetch sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

在这一步,虽然我使用了代理,也能够 Ping 通链接域名 raw.githubusercontent.com ,但是命令仍然不能执行成功。替代方法是在浏览器中直接访问这个链接,复制其中的文件内容,在本地创建 install.sh 脚本,并运行 sh install.sh 进行安装。

安装完成之后,应该能够看到终端命令行的 prompt 会发生变化,这说明安装成功了。如果没有任何改变,可能需要重新启动终端。

# 主题和插件配置

安装完成之后可以进一步配置主题来自定义终端的样式,或者安装其他的插件来增强终端的功能,提升终端的使用体验。

# 主题配置

Oh My Zsh 的主题需要修改 ~/.zshrc 来进行配置,在其中找到 ZSH_THEME 这一变量所在的位置,根据需要将后面的主题改为自己喜欢的主题的名称,比如最经典的 robbyrussell

~/.oh-my-zsh/themes 文件夹中有许多内置的主题文件,可以根据自己的喜好进行选择。如果还想要更多的主题,可以在网上进行搜索,然后放到这个文件夹下,并修改 ~/.zshrc 中的配置。我自己基于 xiong-chiamiov-plus 主题自定义了一个主题。

修改完成后记得执行 source ~/.zshrc 指令以使得修改得到应用。

# 插件配置

插件配置需要在 ~/.zshrc 中找到 plugins 变量所在的位置,在括号中写入需要的插件的名称,注意插件名称之间使用空格进行分隔, Oh My Zsh 默认启用了对 git 插件。

~/.oh-my-zsh/plugins 路径下能找到许多其他的插件,可以根据需要进行启用。这里推荐几个我自己使用的插件。

# zsh-autosuggestions

这一插件会根据过往输入的指令历史,依照你当前输入的指令内容推测你想要输入的完整指令,在你输入了部分指令之后,会在终端上给出提示,如果是想要的指令的话,可以使用方向键右键应用这条指令。快捷键可以根据自己的需要进行修改。

执行下述命令将插件下载到 $ZSH_CUSTOM/plugins 文件夹下,默认位置在 ~/.oh-my-zsh/plugins 此处:

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

然后编辑 ~/.zshrc 中的 plugins 变量:

plugins=( 
    # other plugins...
    zsh-autosuggestions
)

使用 source ~/.zshrc 应用修改。

# zsh-syntax-highlighting

这一插件能够高亮你在命令行中的输入,具体的示例可以参看官方 GitHub 的内容。这里我个人觉得最实用的功能就是能够显示你当前输入的命令是否正确,如果输入的指令存在,那么会以绿色进行高亮,否则会以红色进行高亮,这样能够直观地判断指令是否输入正确。

和上一段的安装过程类似,执行下述命令下载插件:

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

然后修改 ~/.zshrc 中的 plugins 变量:

plugins=( [plugins...] zsh-syntax-highlighting)

使用 source ~/.zshrc 应用修改。

# autojump

这个指令会根据过往的文件访问内容为每个文件夹确定一个权重,根据权重高低选择跳转的文件夹。例如我最近经常访问某个 src 文件夹,那么我输入 j src 指令之后,便会自动跳转到该文件夹。更多的功能可以查看该项目的 GitHub 主页

执行下列指令进行安装:

apt install autojump

修改 ~/.zshrcplugins 变量:

plugins=( [plugins...] autojump)

使用 source ~/.zshrc 应用修改。

# material-colors

根据文件类型用不同颜色显示其名称。

git clone https://github.com/zpm-zsh/material-colors ~/.oh-my-zsh/custom/plugins/material-colors

修改 ~/.zshrcplugins 变量:

plugins=( [plugins...] material-colors)

# 内置插件

出了第三方插件之外, Oh My Zsh 内置了许多插件,出了最常用的 git 插件之外,还有一些插件也值得推荐。

# extract

用于解压文件,不用再去纠结 tar 一类命令的具体参数细节。

# colored-man-pages

使用 man 命令查看其他指令的说明文档时,对内容进行高亮,使得内容更加清晰。

# 其他选项设置

在某些比较到的工程项目文件夹之下, git 插件的 prompt 功能会严重影响 shell 的响应速度。尽管这一功能能够帮助我们查看 git 项目中是否有文件被修改,但是严重影响了终端的响应速度,而实际中我们经常会使用 git status 确认文件的修改情况,因此权衡之后,还是决定关闭这个功能以提升日常的使用体验。

这里去除 ~/.zshrc 中的以下内容的注释:

DISABLE_UNTRACKED_FILES_DIRTY="true"

之后使用

git config --global --add oh-my-zsh.hide-dirty 1

停用追踪文件修改的功能以提升 shell 的响应速度。

执行上述操作之后,实测 shell 的响应速度有了明显的提升。