专栏首页运维之美让你提前体验 macOS Catalina 的 Shell — Oh My Zsh 配置指南

让你提前体验 macOS Catalina 的 Shell — Oh My Zsh 配置指南

在月初召开的 WWDC 2019 上,Apple 公布了下一代 macOS — macOS Catalina。除了全新的音乐和电视等 app、支持 iPad 作为外置显示器等显而易见的更新,macOS Catalina 还为专业用户带来了一项重大变化 — Zsh 将取代 Bash,成为操作系统的默认 Shell。

尽管 Apple 没有对这一改变作出解释,但根据 The Verge 的 猜测,这可能与 GPLv3 协议有关。macOS 目前使用的 Bash 3.2 版本基于 GPLv2 协议,但新版 Bash 已经转移到了 GPLv3 协议。 GPLv3 协议对 Apple 这样的大公司有着更严格的限制,这可能是 Apple 不再将 Bash 作为默认 Shell 的原因。

而相比 Bash 来说,Zsh 也拥有许多更强大的功能:更智能的自动补全、命令选项提示、更丰富的主题,等等。 在今秋体验到 macOS Catalina 正式版之前,我们可以先将 macOS 的默认 Shell 切换到 zsh,熟悉一下新版 Shell 的功能。

本文的目标,就是要帮你打造一个好看、好用的 Zsh 终端。

Zsh 与 Oh My Zsh

Zsh 本体有着强大的功能,但碍于其复杂的配置,对普通用户而言并不太适合。但是,一个开源项目的出现打破了这一局面 —— 它就是本文的主角:Oh My Zsh。

借助 Oh My Zsh,你只需要进行极为简单的安装配置,就可以用上 Zsh,并享受许多酷炫的功能,下面就让我们正式开始安装过程。

安装 Oh My Zsh

macOS Mojave 已经自带了 Zsh,所以我们直接安装 Oh My Zsh。安装过程极为简单,打开终端,执行一行命令即可:

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

在安装过程中会提示是否将默认 Shell 切换到 Zsh,按下 Y 并回车即可。 随后会提示 Password for xxx,输入你的用户密码并回车即可。当你看见大大的 Oh my zsh 标志时就表示 Oh My Zsh 已经安装成功了。

基本设置

安装好 Oh My Zsh 后,使用以下命令打开 Zsh 的设置文件:

vim ~/.zshrc

在 vim 编辑器下,你可以使用方向键移动光标,按 i 进入编辑模式,编辑好后按 esc 退出编辑模式,随后输入 :wq 并回车即可保存。

另外,Mac 下的 Vim 默认是没有显示行号 & 开启语法高亮的,你可以参考以下命令打开行号显示 & 语法高亮:

cp /usr/share/vim/vimrc ~/.vimrc  #复制 vim 配置模版
echo 'syntax on' >> ~/.vimrc  #开启语法高亮
echo 'set nu!' >> ~/.vimrc  #开启行号显示

Zsh 的配置文件中提供了详细的注释,你可以根据注释修改相关设置,满足自己的要求。

例如,你想关闭 Zsh 的自动更新,则定位到 DISABLE_AUTO_UPDATE 一行,根据前面的注释,删除行前的注释符号 # 即可。

保存退出之后,使用以下命令使 Zsh 的配置立即生效:

source ~/.zshrc

设置主题

Oh My Zsh 自带了大量主题文件。你可以执行以下命令查看自带的主题:

ls ~/.oh-my-zsh/themes

对于自带主题的样式和呈现效果,你可以前往 Oh My Zsh 的 官方 Wiki 查看。

在这里,我选择使用 agnoster 作为我的主题。我们需要通过编辑 zsh 配置文件来修改主题:

vim ~/.zshrc

定位到 ZSH_THEME 一行,将双引号中的内容修改为自己选择的主题名即可。

修改主题名

保存退出后,执行以下命令使 zsh 的配置立即生效:

source ~/.zshrc

安装 Powerline 字体

主题设置完成后,终端中却出现了乱码的字符:

这是由于我使用的 agnoster 主题中含有特殊字符,需要安装 Powerline 字体支持才能正常显示。打开终端,参考以下命令安装 Powerline 字体:

cd ~/Downloads && git clone https://github.com/powerline/fonts.git  #将 Powerline 字体文件下载到「下载」文件夹中
cd fonts && ./install.sh  #安装所有 Powerline 字体
cd && rm -rf ~/Downloads/fonts  #删除下载的字体文件

随后,我们按 ⌘, 打开终端偏好设置,在「描述文件 > 文本」中更改字体。

在弹出的窗口中选择一款 Powerline 字体(所有可选项请参考 Powerline 的 GitHub 页面),调整一下字体大小即可。

在这里我选择了 DejaVu Sans Mono for Powerline 字体,大小设置为 14 磅。

此时回到终端,发现表示文件目录的箭头已经可以正常显示了:

配置终端颜色方案

主题上的配置至此就差不多了,然而默认终端的黑底白字看起来还是有些不舒服。

在这里,我们不妨使用 Solarized 配色方案来进一步美化终端。首先,使用以下命令下载 Solarized 配色方案:

cd ~/Downloads && git clone git://github.com/altercation/solarized.git  #将配色方案下载到「下载」文件夹中

下载完毕后,我们按 ⌘, 打开终端偏好设置,点击「描述文件 > ⚙︎⌄ > 导入」。

在弹出的窗口中,先定位到下载的 Solarized 主题位置。这里为:Downloads > solarized > osx-terminal.app-colors-solarized。

然后再双击 Solarized Dark ansi.terminal 导入暗色的 Solarized 配色方案。

随后,我们在描述文件中选中 Solarized Dark ansi,点击「默认」将其设为默认配色方案;别忘了把字体改为 Powerline 字体并调整大小。

配色细节修改

重启一下终端,到这里,我们漂亮的终端已经基本完成了,但是现在的配色让人有些看不清字:

因此我们按 ⌘, 打开终端偏好设置,点击「描述文件 > Solarized Dark ansi」,对配色进行进一步的自定义。单击你想要更改的颜色,在弹出的小窗口中点选拾色器(像吸管一样的东西)。

随后,你可以参考下图把颜色一项一项吸过去。这里我的配置综合了 iTerm 2 的配色和个人的少量修改。

还有一项让我不爽的地方 —— 文件目录前那个长长的 demo@Stevens-MacBook-Pro。通过修改主题配置文件,我们就能去掉它。使用以下命令编辑 agnoster 主题的配置文件:

vim ~/.oh-my-zsh/themes/agnoster.zsh-theme

定位到以下内容:

# Context: user@hostname (who am I and where am I)
prompt_context() {
  if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
    prompt_segment black default "%(!.%{%F{yellow}%}.)%n@%m"
  fi
}

在 prompt_segment black default "%(!.%{%F{yellow}%}.)%n@%m" 前面加一个注释符号 #,保存退出,执行 source ~/.zshrc 使配置立即生效即可。

配置插件

Oh My Zsh 支持许多强大的插件,可以实现语法高亮、命令自动补全等功能。你可以执行以下命令查看自带的插件:

ls ~/.oh-my-zsh/plugins/

对于自带插件的功能及使用,你可以前往 Oh My Zsh 官方 Wiki 查看。

要启用某个插件,只需要用 vim ~/.zshrc 编辑 zsh 配置文件,定位到 plugins 一行,在括号中添加需要的插件名称,以空格分隔。保存退出后,别忘了执行 source ~/.zshrc 使配置立即生效。

我使用的插件

  • git

默认启用的插件,提供了各种 git 命令的缩写。其官方说明提供了所有缩写的参考。

  • z

自带插件,添加到配置文件中即可启用,可以帮助你快速跳转到访问过的文件夹。具体使用方法请自行 Google 或参考 GitHub 文档。

  • zsh-syntax-highlighting

输入正确的常用命令会以绿色高亮显示,输入错误则会显示其他的颜色。使用以下命令安装:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

下载完成后,别忘了把 zsh-syntax-highlighting 添加到配置文件的 plugins 中,并执行 source ~/.zshrc 使配置生效。

  • zsh-autosuggestions

输入命令时,会用浅色字体给出建议的命令,按 → 即可自动补全。使用以下命令安装:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

下载完成后,别忘了把 zsh-autosuggestions 添加到配置文件的 plugins 中,并执行 source ~/.zshrc 使配置生效。

为了让提示的字体颜色正确显示,我们还需要执行:

echo "export TERM=xterm-256color" >> ~/.zshrc  #声明终端类型
echo "ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=10'" >> ~/.zshrc  #设置建议命令的文字颜色

你可以修改 fg= 后的数字来指定建议命令的文字颜色,数字与颜色的对应表请参考这里。

小结

至此,你已经完成了 Oh My Zsh 在 macOS 下的基本配置。现在你获得了一个更漂亮、更强大的终端,相信这能让你在终端下进行操作时事半功倍。

来源:Steven's Blog 原文:http://t.cn/AiNzPqzY 题图:来自谷歌图片搜索 版权:本文版权归原作者所有 投稿:欢迎投稿,投稿邮箱: editor@hi-linux.com

本文分享自微信公众号 - 运维之美(Hi-Linux),作者:Steven

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 只需 2 条指令,轻松实现 SSH 反向隧道!

    假设我有两台电脑,一台办公 (A) 的一台家用 (B) 的,因为都是台式机所以呢就很不方便携带,当然了,作为一名开发,用的都是 Linux OS 了,这个时候有...

    iMike
  • 你有普通用户使用特权端口 (1024 以下) 的需求吗,或许这篇文章能帮你彻底解决!

    众所周知,在 Linux 系统下,只允许 Root 用户运行的程序才可以使用特权端口 ( 1024 以下的端口 )。如果在普通用户下使用特权端口将会报错。

    iMike
  • 你也想用上这别具一格的网站 Logo 吗,赶紧进来手把手教会你!

    有时我们会在网络上或日常生活中看到一些模仿各大知名网站风格 Logo 的图标 ,但对于没有平面设计能力的普通网友来说,想制作出类似效果的 Logo 门槛还是有点...

    iMike
  • K8S学习笔记

    k8s进行管理应用的时候,基本步骤是:创建集群,部署应用,发布应用,扩展应用,更新应用。

    千往
  • Laravel 7 正式发布,一起来看看有哪些重要更新吧

    Laravel 7 版本于 2020 年 3 月 3 日正式发布,本次版本更新包含了很多新特性:

    学院君
  • 微生活时光机:去项目中挖掘JS模块化简史

    让我们把眼光投向微生活各个时期项目中的 JS 代码,看一看时代在其中投下的烙印,也许只是管中窥豹、走马观花,但通过其组织形式的异同,或可一瞥 JS 模块化层面的...

    江米小枣
  • logistic regression一点理解为什么用sigmoid函数?为什么要用交互熵做损失函数?

    关于logistic regression一些常见问题,整理出来,方便大家应对各种坑爹的面试官。

    sladesal
  • logistic regression一点理解

    关于logistic regression一些常见问题,整理出来,方便大家应对各种坑爹的面试官。

    用户1332428
  • 命名函数表达式

    好文章,可惜中文译文已经无法访问了。不过在cssrain上找到一篇:www.cssrain.cn/demo/named%20function%20express...

    meteoric
  • Wolfram 在线文档

    WolframChina

扫码关注云+社区

领取腾讯云代金券