Mac的终端美化

这是关于使用 oh-my-zsh + iTerm2 + powerlevel10k 美化 Mac 平台 Terminal 的介绍

废话不多说先上成品

成品.png

虽然有点过于花里胡哨,不过把背景的二小姐去了改成单纯的高糊也不错,如下图所示

成品2.png
图中随便敲的一些命令是用来展示oh-my-zsh中代码高亮和自动补全功能的。

接下来的内容就是打造这一花里胡哨终端的步骤。

  • 环境: MacOS 10.15.4
  • 工具: 自带Terminal oh-my-zsh iTerm2 powerlevel10k 主题
    其中,oh-my-zsh为终端优化工具,iTerm2为终端替代品,而powerlevel10k为oh-my-zsh的一个优质第三方主题
  • 一些其他可能用到的工具/环境: curl/wget,git等

oh-my-zsh的安装与使用

oh-my-zsh的下载

oh-my-zsh是非常优秀的终端优化工具,它是基于zsh命令行的一个扩展工具集,提供了丰富的扩展功能。但它和Iterm2不同,并不提供命令行窗口,更不是一个独立的APP。
其在官网给出的下载方式有如下两个

  • 使用 curl

    1
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  • 使用 wget

    1
    sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

    我的电脑自带了curl,但是没有自带wget,你可以自行选择合适的方案安装
    当然,很可能会出现类似连接失败之类的错误,而且尝试科学上网或终端科学上网可能均无效。这时我们可以注意到连接失败的是 https://raw.githubusercontent.com 这一网址,上网查询后可以得知这一网站常年被dns污染。于是可以按照如下步骤修改HOSTS文件解决。

  • 在终端中输入以下命令,使用vim修改hosts文件

    1
    sudo vim /etc/hosts
  • 按 i 键(英文输入法)进入编辑模式

  • 使用方向键将光标移到文本尾部,添加如下文本。其中151.101.72.133 可能会发生变化,如距文章发表日期较久,不保证有效,可以搜索引擎查询较新的解决方案

    1
    151.101.72.133 raw.githubusercontent.com
  • 按esc键退出编辑模式,然后输入 :wq! (需要输入冒号!),再按一下回车退出

  • 重启终端重复下载步骤,dns污染的问题就解决了!

下载成功界面大致如下

1
2
3
4
5
6
7
8
9
10
  ____  / /_     ____ ___  __  __   ____  _____/ /_  
/ __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \
/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / /
\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/
/____/ ....is now installed!
Please look over the ~/.zshrc file to select plugins, themes, and options.

p.s. Follow us at https://twitter.com/ohmyzsh.

p.p.s. Get stickers and t-shirts at http://shop.planetargon.com.

oh-my-zsh的主题

oh-my-zsh 有许多官方主题第三方主题,如果看中了某一款官方主题,就可以通过简单的设置切换成所需的主题,其中默认主题为robbyrussell。待会要提到的powerlevel10则是一款第三方主题。
例如,如果觉得下面这款agnoster主题不错,也是官方主题中和我的配置最相近的一款(虽然有字体相关的坑) ,便可以通过下列步骤设置为自己的主题。
agnoster.png

  • 首先,vim打开配置文件
    1
    vim ~/.zshrc
  • 接下来使用上面讲过的vim操作找到ZSH_THEME项并改成主题名字”agnoster”,保存退出
    1
    ZSH_THEME="agnoster"
  • 再使用以下命令使刚才更改的配置生效
    1
    $ source ~/.zshrc   
    重启终端后,如果你较为幸运,就能看到类似上面的效果了。
    如果你和我一样悲惨地出现了乱码(例如箭头显示为问号),
    也可以尝试下载安装powerline字体并尝试修改上述.zshrd设置文件将字体改为powerline字体。如果幸运的话,你同样能看到类似上面的效果。
    但是,如果你和我一样仍然悲惨地出现了乱码并且不愿意更换其他风格主题,
    (注意:接下来介绍的powerlevel10k主题中如果选择使用复杂符号 (例如我的成品中的苹果符号) 或类似的彩色箭头 同样会出现这个问题)
    也可以采取我的邪道解决方案,也就是使用iterm2设置字体并将其作为新的终端,完全放弃自带的terminal。
    具体的步骤稍后讲到iTerm2再说。
    如果有人用其他方式解决了这一问题,也欢迎联系我。

除此之外,也可以使用随机主题,只需如下设置,即可在每次开启命令行时随机挑选一个默认主题

1
ZSH_THEME="random"

如果在使用随机主题的过程中发现了不错的主题,想要得知它的名字,也可以调用如下命令获取

1
echo $ZSH_THEME

powerlevel10k主题的使用

在成功尝试了agnoster或其他主题后,你可能觉得它们还算不错,但是自定义空间不够大/不够花里胡哨什么的,这时,就需要powerlevel10k出场了。
powerlevel10k是一款优秀的第三方主题,也不仅仅是一款主题。事实上,它的个性化程度极高,仅需通过简单的配置即可达到其他主题的效果。安装了这一主题也就相当于安装了所有主题!
prompt-styles-high-contrast.png
想要使用这一主题
只需从 github 下载该主题到 oh-my-zsh 目录

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

再类似地修改 ZSH_THEME 为 powerlevel10k 并使配置生效即可。

重启终端之后,powerlevel10k的导航界面就会出现了。在这一阶段,powerlevel10k 先会询问一些问题以判断你的电脑是否安装了合适的字体。例如会展示一些符号,询问你是否出现乱码。再根据你的回答展示可用的个性化选项,只要简单的配置就能达成所需的个性主题。
configuration-wizard.gif
如果以后需要重新设置,也可以通过

1
p10k configure

命令再次进入这一导航。
当然,悲惨的我再次出现了大量乱码,使用了刚才介绍agnoster中提到的邪道方案才勉强能够使用。

oh-my-zsh的插件

oh-my-zsh不仅能让你的终端更加花哨,也能让它更加高效。类似主题,oh-my-zsh有许多增强终端功能的官方插件,也可以在/.oh-my-zsh/plugins目录中查看插件列表。第三方插件由于我没有使用过,不加赘述。
插件的设置同样在
/.zshrc 文件中,为plugins项。默认情况下仅启用了git插件。

1
plugins=(git)

如果想要使用更多插件可以在括号中添加,例如想要使用代码高亮插件zsh-syntax-highlighting和自动补全插件zsh-autosuggestions,就可以改成

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

其中自动补全插件可以在输入时使用tab查找可能的命令或是右方向键直接键入灰色的提示命令。

iTerm2的安装与使用

虽然powerlevel10k的个性化程度很高,但是只是一个主题而已。如果想修改命令行的背景颜色/字体颜色等属性,或是想要在背景中添加图片/半透明/高斯模糊,实现终端分屏,添加快捷键等效果,就需要iTerm2了。
iTerm2是一个独立的app,可以完全替代终端的使用,具有丰富的个性化选项。
iTerm2的安装较为友好,直接在官网下载地址下载安装包解压安装即可 .
也可以使用Homebrew安装

1
brew cask install iterm2

安装iTerm2后你就可以放弃原本的Terminal了!
对于刚才的字体问题,邪道解决方案就是使用iTerm2方便的修改字体功能。

  • 下载合适的字体,这里可以选择Nerd-Fonts,官网download界面中选择一款字体下载安装即可。这里我使用的是其中的Hack字体。
  • 使用command + ,键或上方菜单栏进入Preferences 配置界面
  • Profiles -> Text -> Font -> Chanage Font,选择刚才安装的合适字体。

另一个问题是IDE的终端并不能使用iTerm2,所以它会和自带终端一样出现乱码。当然这个问题也很好解决,搜索一下你的IDE的命令行修改字体方法,类似的改成合适字体即可。效果如下图所示。

截屏2020-05-11 上午2.18.06.png
这样就能在iTerm2中使用花里胡哨的powerlevel10k了。虽然原本的终端里还是用不了,不过问题不大。大不了不用了
iTerm2中还有许多其他的个性化选项。其中外观相关主要在 Profiles -> Colors 和 Profiles -> Window中。字体/背景/光标的颜色,窗口毛玻璃效果/窗口背景图片等都在这两个选项卡中调整。其他的功能拓展就不赘述了。值得一提的是可以在Profiles -> Keys -> Hotkey左下角设置快速打开/隐藏终端的快捷键。

我的配置

这是我本人目前使用的配置,有兴趣的可以参考一下。要提醒一下iTerm2背景图的缩放不算自由,寻找背景图时建议注意一下比例和背景颜色,必要时可以使用PS等工具进行处理。比如我这张就把白色部分更改成了灰色。

截屏2020-05-11 上午2.06.36.png

截屏2020-05-11 上午2.06.21.png

其他

虽然是看起来简单的美化,不过也有一大堆乱七八糟的坑,一晚上才搞好。花里胡哨的代价还是挺大的。