【Linux】Linux/Mac 配置 zsh + oh-my-zsh

安装 zsh

查看当前Shell

1
echo $SHELL

查看自己操作系统上都安装了哪些shell:

1
$ cat /etc/shells

显示如下:

1
2
3
4
5
6
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh # 默认没有

安装 zsh

https://www.jianshu.com/p/57acb275806c

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

# Ubuntu
$ sudo apt-get install zsh

# CentOS
$ sudo yum -y install zsh

注意:默认安装的zsh为旧版本,不支持powerlevel10k等主题,需要手动安装最新版的zsh:https://blog.csdn.net/weixin_42000303/article/details/106027827

切换为默认 shell

1
$ chsh -s /bin/zsh

切换后重新打开终端

安装 Oh My Zsh

https://www.mintimate.cn/2021/02/05/configZsh/

官方安装

Linux/Mac 打开终端,输入官方提供的脚本:

1
2
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Copy

为了保证脚本能顺利运行,你的 Linux/Mac 服务器需要:

  • 提前安装gitcurl
  • 可以成功连接GitHub
  • 如果有~/.zshrc文件,最好提前备份

官方方法安装

脚本安装

若连接 Github 超时,可以使用作者@Mintimate配置的脚本安装:

1
zsh -c "$(curl -fsSL 'https://host.mintimate.cn/fileHost/download/MTM1NjkzNzI1OTIxMDg0NjIwOQ==')"

为了保证脚本能顺利运行,你的Linux/Mac服务器需要:

  • 提前安装curlunzip
  • 如果有~/.zshrc文件,最好提前备份,否则本脚本自动更改原本的.zshrc文件为zshrcBak

配置插件

Oh My ZSH 支持许多插件,例如:

  • zsh-autosuggestions:命令自动补全
  • autojump:自动跳转
  • zsh-syntax-highlighting:命令高亮

~/.zshrc文件中添加这些插件:

1
plugins=(zsh-autosuggestions autojump zsh-syntax-highlighting)

插件安装方法

将第三方插件 git clone$ZSH_CUSTOM/plugins/ ,再配置到 ~/.zshrc 文件中即可

zsh-autosuggestions插件:

1
$ git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

zsh-syntax-highlighting插件:

1
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

autojump插件:

1
2
3
4
5
6
7
8
# 下载插件autojump到/.oh-my-zsh/custom/plugins目录中
$ git clone git://github.com/joelthelion/autojump.git $ZSH_CUSTOM/plugins/autojump

# cd到目录autojump中
$ cd $ZSH_CUSTOM/plugins/autojump

# 执行install.py
$ ./install.py

之后根据提示在.zshrc文件中添加:

1
[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh

安装主题

若想安装第三方主题,只需先将对应主题从 Github 上clone到本地,再将clone得到的xxx-.zsh-theme文件拷贝到~/.oh-my-zsh/themes/下即可。(个别主题可能需要将lib文件下的配置文件也拷贝到~/.oh-my-zsh/themes/lib/下)

使用技巧

https://michael728.github.io/2018/03/11/tools-zsh-tutorial/

  • 连按两次Tab会列出所有的补全列表并直接开始选择,补全项可以使用 ctrl+n/p/f/b上下左右切换
  • 智能跳转,安装了 autojump 之后,zsh 会自动记录你访问过的目录,通过 j 目录名 可以直接进行目录跳转,而且目录名支持模糊匹配和自动补全,例如你访问过 hadoop-1.0.0 目录,输入j hado 即可正确跳转。j –stat 可以看你的历史路径库。
  • 命令选项补全。在zsh中只需要键入 tar - 就会列出所有的选项和帮助说明
  • 在当前目录下输入 … 或 … ,或直接输入当前目录名都可以跳转,你甚至不再需要输入 cd 命令了。在你知道路径的情况下,比如 /usr/local/bin 你可以输入cd /u/l/b 然后按进行补全快速输入
  • 目录浏览和跳转:输入 d,即可列出你在这个会话里访问的目录列表,输入列表前的序号,即可直接跳转。
  • 命令参数补全。键入kill <tab> 就会列出所有的进程名和对应的进程号
  • 更智能的历史命令。在用或者方向上键查找历史命令时,zsh支持限制查找。比如,输入ls,然后再按方向上键,则只会查找用过的ls命令。而此时使用则会仍然按之前的方式查找,忽略 ls
  • 多个终端会话共享历史记录
  • 通配符搜索:ls -l **/*.sh,可以递归显示当前目录下的 shell 文件,文件少时可以代替 find。使用 **/ 来递归搜索
  • 扩展环境变量,输入环境变量然后按 就可以转换成表达的值
  • 在 .zshrc 中添加 setopt HIST_IGNORE_DUPS 可以消除重复记录,也可以利用sort -t ";" -k 2 -u ~/.zsh_history | sort -o ~/.zsh_history手动清除

安装 Powerlevel10k 主题

https://www.jianshu.com/p/57acb275806c

注意:使用 Powerlevel10k 需要ZSH版本在5.1以上

Powerlevel10k 主题安装:

1
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-fonts GitHub 安装:

1
2
3
4
5
git clone https://github.com/ryanoasis/nerd-fonts.git --depth 1
cd nerd-fonts
./install.sh
cd ..
rm -rf nerd-fonts

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

配置 Powerlevel10k

配置分为两步,首先使用自动化配置脚本,其次根据个人喜好进行个性化设置。Powerlevel10k 提供了一个配置脚本,运行脚本后只需回答几个简单的问题即可完成配置。

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

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

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

安装 zplug

zplug用于管理zsh的各种插件,可以使用zplug结合powerlevel9k定制化自己的主题图标:

安装 Dracula 主题

https://juejin.cn/post/6844904071359545352

https://blog.csdn.net/daiyuhe/article/details/88667875