Using zsh as the best alternative to bash

Using zsh as the best alternative to bash

Notice: This article is only available in Chinese. :(


先放上效果图

好像是挺精致的;(心情好)功能强大效率也许会高那么一些😊。

  • 使用 /U/t/Doc/Pro + -> 代替 /U + ->/t + ->/Doc + ->/Pro + -> 来切换到 /User/twikor/Documents/Projects
  • 随时观察到当前时间、当前项目使用的nodejs、PHP、Laravel等的版本(居然没有python、Flask)、服务器载荷...
  • 当前目录项目git状态指示(真的不能再方便)
  • 自动补全(✌️)
  • ls目录下不同类型颜色区分
  • 观察命令执行时长
  • 可高度自定义主题与插件,增加额外的功能

安装zsh

macos升级到catalina后系统默认就已经从bash换成了zsh。下面主要以ubuntu为例给Linux更换默认解释器。

直接root身份安装zsh:

sudo apt install zsh

然后再以普通用户的身份给单个账户更改默认终端:

chsh -s $(which zsh) #如果想要更改回来,zsh换成bash即可

退出后重新登录一次,就会发现熟悉的 #$ 消失了,转而被 % 所替代。

安装oh-my-zsh

据说zsh的配置异常复杂,有了这个著名的配置管理框架,zsh才真正成为了效率主流。
oh-my-zsh当然是以单个账户的身份给自己安装:

wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

脚本执行完毕后,最好退出并重新登录一次,使环境变量生效(当然,如果只有这一个活动会话,也可以直接使用source命令重新加载文件以刷新环境变量)然后会自动进入oh-my-zsh的配置向导,根据提示输入选项以复制初始配置文件.zshrc

现在你又会发现,用户名、主机名连同zsh的标志 % 被替换成了 -> ~ ,真是非常的简洁。
用户主目录下的 .oh-my-zsh 隐藏目录用以存放插件、主题、工具和配置文件等,大都不用去触碰;.zshrc 则是存放用户自定义配置的地方。

安装自定义主题、插件

默认oms已经自带了许多的主题与插件。而这里我选用的是 powerlevel10k 主题和 zsh-autosuggestions 自动命令补全插件。
主题主要是选择诸如git、nodejs版本等插件的显示方式,颜色是可以在终端软件上更改的。

安装都非常简单,一行git命令将仓库拉至 ~/.oh-my-zsh/custom/theme/主题名~/.oh-my-zsh/custom/plugin/插件名 目录中即可。

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

如果出现了/theme/...权限不足之类的错误,是环境变量未生效,登出并重新登入即可。
修改.zshrc以启用主题和插件:

ZSH_THEME="powerlevel10k/powerlevel10k" #外部下载的自定义主题,使用内置主题只需要主题名称
plugins=(git zsh-autosuggestions) #不同插件之间以空格分隔

插件安装完退出并重新登入后可使用。主题安装完成后便可使用命令 p10k configure 来自定义主题的方案,他可能会提示你下载主题使用的配套字体 MesloLGS NF ,就选择第一个(recommanded)推荐项下载,然后卡在这里直到你想手动结束为止。
下载并双击安装完成后在 Preferences/Profiles/Text 中启用字体。

注意:若果你选择跳过或者下载安装字体后没有在iterm2配置中启用,那么 部分 使用该字体实现的分割符号、github图标等均为乱码,在继续的配置中也会体现。
继续配置主题可以自定义状态条的显示风格、是否折行显示、有无分割线等。

高度自定义

.p10k.zsh 中可以添加删除片段/更改片段顺序,就像下图:

内置片段规则有各种语言版本、系统状态等等,用户还可以编写自己的规则(有空再来挖这个坑😁)

(👇条件翻桌)

注意片段和插件都不能开启太多,毕竟你不愿意切个目录终端都要反应半天吧。

给终端换点颜色瞧瞧

iTerm2-Color-Schemes 这个仓库可能是迄今为止包含终端、调色盘最全面的终端个性化仓库了。solarized,github,sunrise,onedark,dracula耳熟能详,选一个和你的编辑器相配的就可以了。(对我来说solarized-dark,github-light就是暗色、亮色中最好看的)

(👆像这个配色不香吗?)

在terminal文件夹内找到并下载color-presets文件后双击即可直接添加至macos终端中;若要添加至iterms2,需先将其扩展名更为 itermcolors
可能值得一提的是solarized-dark中的暗色文字强调色和背景颜色冲突了(😂,这。。),而自动补全使用的就是这个强调色,然后就会像下面一样:

最开始我还以为是自动补全的锅(这也能叫自动补全?),然而用鼠标选择了那片区域使文字反色才发现。。。改了就好👌

虽然大家都推荐功能更多的iterm2,但如果还是想要继续使用macos自带的终端,当然也是可以的。

突然发现其实终端自带的Homebrew也挺不错的,不会是错觉吧?