iTerm2 + zsh + Oh My Zsh + Powerlevel10k 打造 Mac 下最强终端

写在前面

对于开发人员来说,每天打交道最多的两类应用即代码编辑器与终端,一个好的代码编辑器和终端可以使效率飞速提升。代码编辑器有 VSCode,那也应有如此酷炫的终端:
Powerlevel10k 默认界面

我的界面

安装 iTerm2

对于 macOS 用户来说,iTerm2 是一个代替系统自带终端的好方案,它有很多快捷的小功能可以大幅提高效率,也拥有漂亮且个性化自由度较大的界面。
对于 Linux 用户,可跳过本部分,不影响后面的步骤。

安装 zsh

查看是否已安装

1
zsh --version

安装

1
2
3
4
5
6
7
8
# macOS
brew install zsh zsh-completions

# CentOS
sudo yum -y install zsh

# Ubuntu
sudo apt-get install zsh

切换为默认 shell

1
chsh -s /bin/zsh

安装 Oh My Zsh

Oh My Zsh 可以做很多的定制化内容,包括丰富的主题与插件,让你直呼 AMAZING!!
两种方式选择一种即可:

1
2
3
4
5
# 使用 curl 命令
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

# 或者使用 wget 命令
sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

安装 Powerlevel10k

Oh My Zsh 有许许多多的主题/外部主题,个人觉得比较好用的是 Powerlevel9k,使用了大约一年的时间,但响应时间却越变越慢,遂转到了它的更新版 Powerlevel10k,它可以直接兼容 Powerlevel9k 的配置,也可以直接使用它提供的菜单化配置脚本,简单回答一些问题就可以生成美观的配置。

1
git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k

克隆下来之后,在 zsh 的配置文件 ~/.zshrc 中设置 ZSH_THEME=powerlevel10k/powerlevel10k 即可。

安装 Nerd Font 字体

完成上述操作之后,你可能会发现终端出现了乱码,这是因为你的电脑不支持那么多字体,需要安装扩展字体。
Nerd 字体是支持 icon 最多的,可以直接在 nerd-fonts GitHub 或者官网下载 Hack Nerd Font。
对于 macOS 来说,直接双击下载的文件即可安装,然后就可以在字体册 APP 中找到已经安装的字体了。

配置 Powerlevel10k

在 zsh 的配置文件 ~/.zshrc 中,修改 POWERLEVEL9K_MODE='nerdfont-complete' 即可正常显示 icon。
在该配置文件中,还可以修改终端每行左边和右边现实的内容等,完整可用的配置请见这里。不宜设置过多,够用即可,我的配置:

1
2
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_writable vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs command_execution_time virtualenv ip battery time)

.zshrc 中有关 Powerlevel10k 的所有配置:

1
2
3
4
5
6
7
8
9
10
11
ZSH_THEME="powerlevel10k/powerlevel10k"

POWERLEVEL9K_MODE='nerdfont-complete'
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0C0'
POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0C2'
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_writable vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs command_execution_time virtualenv ip battery time)
POWERLEVEL9K_SHORTEN_DIR_LENGTH=5
POWERLEVEL9K_SHORTEN_DELIMITER=..
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=$'\n'
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="\uF460%F{073}\uF460%F{109}\uF460%f "

注:每次修改配置文件后需要 source .zshrc 才可以起作用,有时甚至需要重启终端。
完整的配置过程到这里就结束了,如果你完全按照上述的配置过程,那么一定可以实现文章开头的效果。后面是插件与其他内容。

Oh My Zsh 插件

Oh My Zsh 有非常丰富的插件,使用插件可以使得在终端的效率翻倍,下面介绍 5 个我常用的插件。
插件均需在配置文件 .zshrc 中写出,如下:

1
2
3
4
5
6
7
plugins=(
git
github
autojump
zsh-syntax-highlighting
zsh-autosuggestions
)

git

git plugin
提供丰富的 git 别名与几个有用的函数。

github

github
提供几个快捷的函数。

autojump

autojump
可以记录下来你之前 cd 到访过的所有目录,下次要去那个目录时不需要输入完整的路径,直接 j somedir 即可到达,甚至那个目标目录的名称只输入开头也可以。

zsh-syntax-highlighting

zsh-syntax-highlighting
终端命令语法高亮。

zsh-autosuggestions

zsh-autosuggestions
终端命令自动推荐,会记录下来之前使用过的命令,当你输入开头时,会暗色提示之前的历史命令供你选择,可直接按右方向键选中该命令。

Powerlevel10k 默认界面

实际上,Powerlevel10k 提供了一个配置脚本,运行脚本后只需回答几个简单的问题即可完成配置,如文章开头那样,但比较适合终端底色设置为浅色,不然真有点费眼睛。
直接输入 p10k configure 即可进入配置问答界面,完成后会生成一个配置文件 ~/.p10k.zsh,并且在 zsh 配置文件中自动加入了

1
2
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ -f ~/.p10k.zsh ]] && source ~/.p10k.zsh

修改 VSCode 的终端

VSCode 带的终端界面也可保持一致,只需简单设置字体即可。
打开 VSCode 的设置,搜索 terminal font,做如下修改: