程序员离不开终端,配置一个好看又好用的终端,可以提高工作效率。

本篇文章记录了使用Oh My Zsh + PowerLevel9k + zsh插件快速配置Ubuntu下默认终端的过程。

我们在Ubuntu下的默认终端如下:
十分钟配置“完美”终端-小白菜博客
十分钟后,你的终端将会变成这样:

Pre-requisites

  • 如果是Macos系统,请安装homebrew, 将本文中的apt-get 使用brew 替代
  • 本文对Windows系统不适用
  • 本文以下所有指令都是在Ubuntu20.04下完成

一些概念…

  • 终端说白了就是一个文本界面,通常用于输入命令来与计算机交互。我们可以通过输入命令的方式来操作计算机,命令它帮我们做事情。
  • Shell说白了就是一个程序,用来读取、解析、执行命令行,把我们输入的命令翻译成计算机可以理解的语言并且让计算机去执行。目前有很多这样的程序,比如bash, zsh, csh,在Ubuntu中默认使用的是bash。
  • .bashrc, .zshrc就是一个配置文件,用来配置bash, zsh。当zsh安装完成后,.zshrc文件会自动创建在~目录下。文件名前面的点号(.)表示该文件是隐藏的,除非特别指定,比如在使用ls -al 可以看到。否则不会显示。zsh程序会读取.zshrc,用于配置zsh,比如设置快捷键等。

安装

我们只需要安装完成下面四个包即可配置完成~

  1. ZSH
  2. Oh My Zsh(一个用于管理zsh配置的框架)
  3. Powerlevel9k(用于ZSH的主题引擎)
  4. Nerd-Fonts(许多ZSH主题所需的字体和字形)

安装ZSH

# 安装zsh
sudo apt-get install zsh
# 查看是否成功安装
zsh --version

如果成功输出zsh信息说明安装成功
十分钟配置“完美”终端-小白菜博客
在终端输入zsh 进入zsh

安装Oh My Zsh

# 克隆oh my zsh仓库到~/.oh-my-zsh目录
git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
# 备份当前zsh配置
cp ~/.zshrc ~/.zshrc.orig
# 使用oh-my-zsh的模板作为zsh配置
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
# 激活配置
source ~/.zshrc

如果之前在bash中配置过一些路径,现在可能会有一些程序不能执行,我们需要把.bashrc中配置的路径全部都复制到.zshrc中。
比如,把.bashrc中的路径配置(如下)复制到.zshrc中。
使用cat .bashrc 查看

安装Powerlevel9k

# 下载powerline9k并保存到oh-my-zsh/custom/themes文件夹下
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k

打开.zshrc vi .zshrc / nano .zshrc

设置zsh的主题为Powerlevel9k

# 设置zsh的主题为Powerlevel9k
ZSH_THEME="powerlevel9k/powerlevel9k"

重新激活配置文件

source ~/.zshrc

加油!还差一步就要大功告成了,因为现在的系统里还没有对应字体,现在的终端还有一些框框没有显示出来。

安装Nerd-fonts

wget https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Hack/Regular/complete/Hack%20Regular%20Nerd%20Font%20Complete.ttf

直接打开下载的文件,并点击install
十分钟配置“完美”终端-小白菜博客
安装完成后,打开终端并转到“编辑”->“配置文件首选项”。启用“自定义字体”,在列表中查找并选择“Hack Nerd Font Regular”。
十分钟配置“完美”终端-小白菜博客
打开.zshrc vi .zshrc / nano .zshrc

添加下面这行配置,激活字体

POWERLEVEL9K_MODE='nerdfont-complete’

在终端输入source ~/.zshrc

现在终端的效果如下
十分钟配置“完美”终端-小白菜博客
如果可以接受现在的样子,那你就已经有了一个好看的终端了~

不过还可以有一些customized的选项

  1. 在终端的Preference里也可以选择背景颜色等等
  2. 对.zshrc进行一些个人的配置,我的配置如下:
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon context dir newline status)
POWERLEVEL9K_OS_ICON_BACKGROUND=024 #navyblue
POWERLEVEL9K_OS_ICON_FOREGROUND=202 #orangered1

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(vcs)
POWERLEVEL9K_VCS_CLEAN_FOREGROUND=017 # navyblue
POWERLEVEL9K_VCS_CLEAN_BACKGROUND=040 # green3a
POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=017 # navyblue
POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=220 # gold1
POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=236 #grey19
POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=160 #red3a
POWERLEVEL9K_SHOW_CHANGESET=true

ZSH插件安装

zsh 还有一些好用的插件,比如高亮、自动补全等等

  1. zsh-syntax-highlighting 语法高亮工具
  2. zsh-autosuggestions 自动补全,会暗色提示之前的历史命令
# 下载zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
# 下载zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions  ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions

在 zsh 的配置文件 ~/.zshrc 中的 plugins 中加入 zsh-syntax-highlighting,zsh-autosuggestions。

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

VS code 终端乱码问题

安装完终端后,打开vs code,发现终端还是有乱码,原因也是字体问题并设置默认终端为zsh

只要ctrl + , 打开settings.json,加入
"terminal.integrated.fontFamily": "Hack Nerd Font"
"terminal.integrated.defaultProfile.linux": "zsh"
即可

大功告成

好了!大功告成!有一个好看又好用的终端了!

Reference

https://unix.stackexchange.com/questions/57105/why-there-are-multiple-shells-in-a-unix-like-system

https://medium.com/@christyjacob4/powerlevel9k-themes-f400759638c2

https://makeoptim.com/tool/terminal/#vscode-配置

https://toolspond.com/zshrc/