Oh My Zsh 是一款社区驱动的命令行工具,是基于 Zsh 命令行的一个扩展工具集,提供了丰富的扩展功能,如:主题配置,插件机制,内置的便捷操作等,可以给我们一种全新的命令行使用体验。下文对 Oh My Zsh 的安装及配置方法进行总结,只总结最佳的实践。

1. 安装 Oh My Zsh

第一步:安装 Zsh

1
2
3
4
5
6
7
# 安装 Zsh
sudo apt install zsh

# 将 Zsh 设置为默认 Shell
chsh -s /bin/zsh

# 可以通过 echo $SHELL 查看当前默认的 Shell,如果没有改为 /bin/zsh,那么需要重启 Shell。

c_001.png

第二步:安装 Oh My Zsh

1
2
3
4
5
# 安装 Oh My Zsh
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
# 以上命令可能不好使,可使用如下两条命令
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh
bash ./install.sh

2. Zsh 的配置

2.1 字体的安装

推荐在终端使用 Powerline 类型的主题,该类型主题可以使用图形表示尽可能多的信息,方便用户的使用。推荐安装用户量最大的 Powerlevel9k

Powerlevel9k 中需要使用较多的图形符号,字体大多不会自带这些符号,所以需要使用专门的 Powerline 字体。

2.2 主题及字体的配置

安装

该主题可以被 Oh-My-Zsh, Prezto, Antigen, and many others 使用。

使用 Oh-My-Zsh 安装

从 Github 上克隆项目到 Oh-My-Zsh 的主题目录下,一般都在 ~/.oh-my-zsh/theme/ 目录。

1
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k

修改 ~/.zshrc 中的 ZSH_THEME

1
ZSH_THEME="powerlevel9k/powerlevel9k"

然后重新打开终端就变成了 PowerLine 的形式了。但是由于没有安装相应的字体,导致符号显示不完全。

安装 awesome-terminal-fonts

这是一款可以在终端界面显示 awesome 图标的工具。

  1. 获取该项目
1
git clone https://github.com/gabrielelana/awesome-terminal-fonts
  1. 进入该项目,将 build/ 目录里的所有文件拷贝到 ~/.fonts/ 目录(没有就创建一个)下
1
cp -R build/* ~/.fonts/
  1. 执行以下命令让 freetype2 知道这些字体
1
fc-cache -fv ~/.fonts
  1. 自定义 config/10-symbols.conf 配置文件里的字体,改成自己喜欢的。当然不改就是默认的。

  2. 拷贝 config/10-symbols.conf 配置文件到 ~/.config/fontconfig/conf.d 目录(没有就创建一个)下

1
cp config/10-symbols.conf ~/.config/fontconfig/conf.d
  1. source 所有 .fonts 目录下的字体到你的 shell 启动脚本
1
source ~/.fonts/*.sh

至此安装完成,再重启一下终端,效果是不是跟上面一样了。

配置

powerlevel9k 提供了丰富的个性化配置功能。

两行提示符

powerlevel9k 默认只有一行提示符。

如果你想另起一行,在 ~/.zshrc 中加入以下定义即可

1
POWERLEVEL9K_PROMPT_ON_NEWLINE=true

如果你想让右边的提示符也显示到下一行,只需在以上基础上再加以下定义即可

1
POWERLEVEL9K_RPROMPT_ON_NEWLINE=true

如果你想自定义多行连接的符号,定义以下方式即可

1
2
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="↱"
POWERLEVEL9K_MULTILINE_SECOND_PROMPT_PREFIX="↳ "

命令执行完新加一行

1
POWERLEVEL9K_PROMPT_ADD_NEWLINE=true

禁用右边的提示符

1
POWERLEVEL9K_DISABLE_RPROMPT=true

浅色主题

1
POWERLEVEL9K_COLOR_SCHEME='light'

自定义左边提示符的元素

默认的元素只有提供了 context 、 root_indicator,可添加以下元素

元素 介绍
os_icon 系统标识
battery 电量
context 用户
dir 路径
dir_writable 目录读写状态
load 加载
rspec_stats 统计
status 状态
symfony2_tests 测试
user 当前用户
vcs 版本控制
vi_mode vi 模式

通过以下定义方式添加,例如:

1
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon root_indicator dir vcs)

更多

它的配置还有更多,点击进入 wiki 查看。

进入终端“首选项”,“自定义字体”里选择“meslo lg m dz regular for powerline”这个字体就可以了。

2.3 另一个字体

不推荐安装官方默认的 Powerline Fonts,理由是图形符号不全,符号处会有乱码。推荐安装 Nerd-Fonts 系列字体,因为该系列字体附带有尽可能全的符号,并且更新非常频繁,项目地址在这里。例如直接下载 Ubuntu Font Family 中的 Ubuntu Nerd Font Complete.ttf ,然后直接在Ubuntu下安装。

方法同上,还是先git clone.然后sudo mv 到字体目录,然后font-cache -fv刷新字体。然后终端改字体为Droid Sans Mono Dotted for Powerline
e_024.png

3. 插件配置

3.1 autojump

更快地切换目录,不受当前所在目录的限制。

安装:

1
sudo apt install autojump

用法:

1
2
3
4
# 跳转到目录
j dir
# 可以通过GUI文件管理器打开指定目录,执行命令:
jo dir

3.2 fasd

快速访问文件或目录,功能比前一个插件强大。

安装:

1
sudo apt install fasd

用法:

1
2
3
4
5
6
7
8
9
alias f='fasd -f'          # 文件
alias d='fasd -d' # 目录
alias a='fasd -a' # 任意
alias s='fasd -si' # 显示并选择

alias sd='fasd -sid' # 选择目录
alias sf='fasd -sif' # 选择文件
alias z='fasd_cd -d' # 跳转至目录
alias zz='fasd_cd -d -i' # 选择并跳转至目录

3.3 zsh-autosuggestions

命令行命令键入时的历史命令建议插件

按照官方文档提示,直接执行如下命令安装:

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

3.4 zsh-syntax-highlighting

命令行语法高亮插件

按照官方文档提示,直接执行如下命令安装:

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

3.5 插件最终配置

1
2
3
4
5
# autojump 功能弱,fasd 功能强,但是没 autojump 实用
# 值得注意的是,根据官方文档,zsh-syntax-highlighting 插件需放在最后
plugins=(
git extract autojump zsh-autosuggestions zsh-syntax-highlighting
)

4.「.zshrc」文件完整修改

Oh My Zsh 配置文件的完整修改结果,只有对配置文件进行如下修改,才能使上述配置生效。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 设置字体模式以及配置命令行的主题,语句顺序不能颠倒
POWERLEVEL9K_MODE='nerdfont-complete'
ZSH_THEME="powerlevel9k/powerlevel9k"

# 以下内容去掉注释即可生效:
# 启动错误命令自动更正
ENABLE_CORRECTION="true"

# 在命令执行的过程中,使用小红点进行提示
COMPLETION_WAITING_DOTS="true"

# 启用已安装的插件
plugins=(
git extract fasd zsh-autosuggestions zsh-syntax-highlighting
)

常用命令

下面总结 Oh My Zsh 配置相关的其他 bash 命令:

1
2
3
4
5
6
7
8
#  查看当前所用的 Shell
echo $SHELL

# 查看系统内已安装的 Shell
cat /etc/shells

# 用 GUI 文件管理器或编辑器打开指定的的文件或目录
xdg-open fileOrDir

参考资料

  1. Zsh + Oh My Zsh 全程指南「程序员必备」
  2. Zsh 全程指南
  3. Ubuntu 16.04 下安装 Zsh 和 Oh My Zsh