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

本文首发于我的个人博客 Sui Xin’s Blog
原文: https://suixinblog.cn/2019/09/beautify-terminal.html  作者: Sui Xin

写在前面

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

除了 iTerm2,本文同样适用于大多数 Linux 终端和 WSL (Windows Subsystem for Linux),通过以下步骤可以实现同样的效果。

先上两种配置结果:
Classic Prompt Style:

image

Rainbow Prompt Style:
image

安装 iTerm2

对于 Linux 和 WSL 用户,可以略过本步骤。Linux 使用默认的终端,WSL 使用 Windows Terminal 实现相同的效果。

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

安装 zsh

查看是否已安装

zsh --version

安装

# macOS
brew install zsh zsh-completions

# Ubuntu
sudo apt-get install zsh

# CentOS
sudo yum -y install zsh

切换为默认 shell

chsh -s /bin/zsh

安装 Oh My Zsh

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

# 使用 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 的配置,也可以直接使用它提供的菜单化配置脚本,简单回答一些问题就可以生成美观的配置。

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

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

安装 Nerd Font 字体

完成上述操作之后,你可能会发现终端出现了乱码,这是因为你的电脑不支持那么多字体,需要安装扩展字体。

Nerd 字体是支持 icon 最多的,可以直接在 nerd-fonts GitHub 或者官网下载 Hack Nerd Font。Powerlevel10k 作者推荐使用 Meslo Nerd Font 字体,但发现在 iTerm2 下 Hack Nerd Font 更好看一点,其他系统还是下载 Meslo Nerd Font 比较保险。

对于 macOS 和 WSL 来说,直接双击下载的 ttf 文件即可安装。对于 Linux 来说,需要将文件放入指定目录并刷新缓存,请看这里

安装之后,对于 iTerm2 来说,在 Preferences-Profiles-Text-Font 设置为对应字体。Windows Terminal 在 settings.json 配置中加入 "fontFace": "MesloLGS NF" 即可。

配置 Powerlevel10k

配置分为两步,首先使用自动化配置脚本,其次根据个人喜好进行个性化设置。

自动配置脚本

Powerlevel10k 提供了一个配置脚本,运行脚本后只需回答几个简单的问题即可完成配置。

直接输入 p10k configure 即可进入配置问答界面,完成后会生成一个配置文件 ~/.p10k.zsh,并且在 ~/.zshrc 中自动加入了

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

在配置过程中需要注意的是,Instant Promt Mode 尽量选择打开,可以加快终端启动速度,详情请见这里

个性化设置

在 Powerlevel10k 新生成的配置文件 ~/.p10k.zsh 中根据个人喜好进行个性化设置。

每次修改配置文件后重启终端或者新开一个 tab 即可显示。
vim 中可以通过 :/str 来执行搜索,通过 Nn 键来跳转到上一个结果或下一个结果。

左右栏图标显示

左栏图标修改 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS 中内容,右栏图标修改 POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS 中内容。作者写了比较详细的注释,按需修改即可,也可以调整显示顺序。全部可配置内容请见这里,也可以自己实现一个。

左右分隔符号

也就是文首第二张图像火一样的分隔符号,实际上用到了两个 Unicode 字符 \uE0C0\uE0C2。还有其他形状的字符,请在 Nerd Font Cheat Sheet 搜索 E0

# Separator between different-color segments on the left.
typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0C0'
# Separator between different-color segments on the right.
typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0C2'
# The right end of left prompt.
typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0C0'
# The left end of right prompt.
typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0C2'

长路径折叠

Powerlevel10k 默认将长路径折叠到只显示最上层和最底层,多少有些不方便,可以通过如下进行更改,推荐 2 或者 3。

# Don't shorten this many last directory segments. They are anchors.
typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=2

命令成功提示符

命令成功提示符(即右边栏最左边的对号)有时候会被遮挡住,可能是一个小 bug 吧,希望作者后续能修复它,现在可以通过在前面加一个空格来避免:

typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION=' ✔'

typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION=' ✔'

颜色配置

查看所有可用颜色:

for i in {0..255}; do print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done

修改目录颜色为黑色字:

##################################[ dir: current directory ]##################################
# Current directory background color.
# typeset -g POWERLEVEL9K_DIR_BACKGROUND=4
# Default current directory foreground color.
typeset -g POWERLEVEL9K_DIR_FOREGROUND=0

# Color of the shortened directory segments.
typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=238
# Color of the anchor directory segments. Anchor segments are never shortened. The first
# segment is always an anchor.
typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=0
# Display anchor directory segments in bold.
typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true

修改时间显示块颜色使得不那么刺眼:

typeset -g POWERLEVEL9K_TIME_BACKGROUND=255

其实在 ~/.p10k.zsh 中,所有的颜色几乎都可以修改,作者注释也写的很清楚,可以自己根据喜好配置。

Oh My Zsh 插件

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

plugins=(
  git
  github
  autojump
  zsh-syntax-highlighting
  zsh-autosuggestions
)

git

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

github

github plugin
提供几个快捷的函数。

autojump

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

安装方式

zsh-syntax-highlighting

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

# 克隆
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# ~/.zshrc 中配置
plugins=(zsh-syntax-highlighting)

zsh-autosuggestions

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

# 克隆
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# ~/.zshrc 中配置
plugins=(zsh-autosuggestions)

修改 VSCode 的终端

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

image

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 144,481评论 1 305
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 61,908评论 1 258
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 95,710评论 0 214
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 41,372评论 0 183
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 49,216评论 1 262
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 38,949评论 1 178
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,558评论 2 275
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,308评论 0 168
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 29,183评论 7 237
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 32,675评论 0 214
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,416评论 2 217
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 30,757评论 1 232
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 24,314评论 1 33
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,215评论 2 213
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 31,682评论 3 214
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,665评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,091评论 0 170
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 33,687评论 2 233
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 33,830评论 2 237