Oh My Terminal! 实用与装X齐飞记

7,629 阅读4分钟

工欲善其事,必先利其器

今天窗外雨儿淅沥,本叔心里异常平静,献上一篇如何打造我们 Mac 上好用的终端纪实。落霞与孤鹜齐飞,实用与装X并济!

注:以下的步骤我都亲身实践过,环境 macOS Sierra 10.12,我相信无论比我高或者是低版本的系统都能够正确执行,请大家放心。

最终效果图:

图片

关于 iTerm2 与 「Oh My Zsh」

iTerm2 是网上大家公认的在 Mac 上最好用的终端工具,比系统自带的 Terminal 智能和强大,详细的操作大法等大叔积累够了再出一篇文章。终端工具通俗理解就是 Windows 下的 CMD。(Emmmmm...没用过的同学就算了)

而 「Oh My Zsh」 就厉害了,不过还是要说一下 Shell。

我们都知道 Mac 的操作系统是基于 Linux/Unix 进行开发的,其实 Windows 也是,人家一开始不承认,最后面不得已才说借鉴了一部分 Linux/Unix,呵呵。言归正传,Shell是Linux/Unix的一个外壳,你理解成衣服也行。它负责外界与Linux内核的交互,接收用户或其他应用程序的命令,然后把这些命令转化成内核能理解的语言,传给内核,内核是真正干活的,干完之后再把结果返回用户或应用程序。

Linux/Unix提供了很多种Shell,为毛要这么多Shell?其实就是那些大牛程序员看到不爽的Shell,就会自己重新写一套,慢慢形成了一些标准,常用的Shell有这么几种,sh、bash、csh等,想知道你的系统有几种shell,可以通过以下命令查看:

$ cat /etc/shells

显示如下:

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

这里 Mac 会比 Linux 多预装了一份 zsh。目前常用的 Linux 系统和 OS X 系统的默认 Shell 都是 bash,但是真正强大的 Shell 是深藏不露的 zsh。但由于复杂的配置,导致很长一段时间都无人问津,直到有一天,国外有个穷极无聊的程序员开发出了一个能够让你快速上手的 zsh 项目,叫做「oh my zsh」,Github网址:github.com/robbyrussel…

步骤1:下载并安装 iTerm2

官方下载网址:www.iterm2.com/

下载好安装就行了,没有什么特别需要注意的。

注意:以下所涉及到的命令,若没有特殊声明,都是在 iTerm2 上运行的。

步骤2:下载并安装 「Oh My Zsh」

打开 iTerm2,并在该终端上执行以下命令:

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

这句命令意思就是下载该脚本并执行

步骤3:下载并安装 Powerline

Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome, i3 and Qtile.

说白了 Powerline 就是用 Python 写的可以美化终端输出的脚本,而且支持多种终端。

首先查看本机是否有安装 pip:

$ pip --version

如果没有成功输出版本信息的话,那就先安装 pip:

$ sudo easy_install pip

如果已经确认本机有安装的话,那就来正式安装 Powerline:

$ pip install powerline-status

如果在这步提示因为权限不足无法成功安装的话(一般是 macOS Sierra 以上的用户),是因为苹果官方的 SIP 安全保护策略,以下步骤可以暂时关闭,等我们安装好再重新开启,可以放心操作。

关闭 SIP 操作:

  1. 点击 Mac 电脑左上角的苹果 Logo,选择重新启动
  2. 电脑关闭后,重新启动前,按住 command+R,直到进入 「还原模式」
  3. 选择顶部菜单栏上的使用工具,然后点击 终端
  4. 输入 csrutil disable,按下回车,提示成功关闭
  5. 重启电脑

这样就将 SIP 关闭了,重启电脑后重新在 iTerm2 上执行安装 powerline 的命令

安装完后,可以出于安全性考虑,我们还是把 SIP 启动,以保护我们的电脑吧!

打开 SIP 操作:

  1. 点击 Mac 电脑左上角的苹果 Logo,选择重新启动
  2. 电脑关闭后,重新启动前,按住 command+R,直到进入 「还原模式」
  3. 选择顶部菜单栏上的使用工具,然后点击 终端
  4. 输入 csrutil enable,按下回车,提示成功关闭
  5. 重启电脑

步骤4:下载并安装 Powerline 下的字体库

字体库的 Github 仓库地址:github.com/powerline/f…

Step 1: 将仓库 git clone 下来,然后进入到 install.sh 脚本文件所在的目录;
Step 2: 执行命令安装字体库:

$ ./install.sh

安装完成后,会提示所有字体安装到了 ~/Library/Fonts 文件夹下

步骤5:设置 iTerm2 的 Regular Font 和 Non-ASCII Font

如下图所示,把 iTerm2 的设置里的 Profile 中的 Text 选项卡中里的 Regular FontNon-ASCII Font 的字体都设置成 Powerline 的字体。(可以注意到,Powerline 字体名称后面都有加 powerline 字样,很好区分)

图片

步骤6:下载并安装终端配色方案

配色方案的 Github 仓库地址:github.com/altercation…

Step 1: 将仓库 git clone 下来,然后进入到文件夹;
Step 2: 双击 Solarized Dark.itermcolorsSolarized Light.itermcolors 两个文件就可以把配置文件导入到 iTerm2 的配色方案列表里;
Step 3: 设置 iTerm2 的配色方案;

图片

步骤7:下载并安装终端 agnoster 主题

主题有很多种,这里选择了 agnoster 主题,大家熟悉操作之后,可以自己寻找主题并安装

agnoster 主题的 Github 仓库:github.com/fcamblor/oh…

Step 1: 将仓库 git clone 下来,然后进入到文件夹;
Step 2: iTerm2 上运行 install 文件,主题将安装到 ~/.oh-my-zsh/themes 目录下
Step 3: 为 zsh 设置该主题

$ vim ~/.zshrc
# 找到 ZSH_THEME 字段,并修改成:ZSH_THEME="agnoster"

步骤8:使用 zsh-syntax-highlighting 增加指令高亮效果

使用该工具的作用是当我们在终端上输入正确或成功执行的命令时,会绿色提示;相反不成功或错误命令时,会有红色警告提示。

zsh-syntax-highlighting 的 Github 仓库地址:github.com/zsh-users/z…

Step 1: 进入 ~/.oh-my-zsh/custom/plugins/ 目录;
Step 2: 将仓库 git clone 到当前目录;
Step 3: 在 .zshrc 文件中追加如下内容

plugins=(zsh-syntax-highlighting)
source ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

Step 4: 最后重载配置文件

$ source ~/.zshrc

这样就同时配置好了zsh和oh-my-zsh。

至此,所有配置操作已经结束。可以酷炫地使用属于你的 iTerm2 了!

优化步骤:配置 Finder 当前目录打开 iTerm2

有时候我们想在 Finder 的当前目录下打开 iTerm2,以避免在 iTerm2 手动进入相应路径,网上有介绍使用 Go2Shell 插件的用法,在这里我推荐使用 Mac 自带的 Automator 创建 AppleScript 以执行完成我们的需求。

在 Launchpad 中打开 Automator:

图片

选择 文件 -> 新建 -> 服务

图片

选择 AppleScript 并粘贴进脚本代码:

图片

代码如下:

on run {input, parameters}

    tell application "Finder"
        set pathList to (quoted form of POSIX path of (folder of the front window as alias))
        set command to "clear; cd " & pathList
    end tell

    tell application "System Events"
        -- some versions might identify as "iTerm2" instead of "iTerm"
        set isRunning to (exists (processes where name is "iTerm")) or (exists (processes where name is "iTerm2"))
    end tell

    tell application "iTerm"
        activate
        set hasNoWindows to ((count of windows) is 0)
        if isRunning and hasNoWindows then
            create window with default profile
        end if
        select first window

        tell the first window
            if isRunning and hasNoWindows is false then
                create tab with default profile
            end if
            tell current session to write text command
        end tell
    end tell

end run

粘贴完后,按 command+s 以保存,在弹出的提示框内输入该服务的名字,自定义就好。

接下来设置一下直接调用该服务的键盘快键键:

图片

完成!

相关设置

  1. 启动 iTerm2 默认使用 bash 改用 zsh 解决方法:$ chsh -s /bin/zsh
  2. 如果想切换回原来的 bash:$ chsh -s /bin/bash
  3. ⌘+Q 关闭 iTerm2 时每次弹窗提示问题: iTerm 2 中,进入 Preference-General-Closing 栏目,将 Confirm "Quit iTerm2(⌘Q)" command选项勾选去掉就行
  4. 路径前缀的XX@XX太长,缩短问题: 在 ~/.oh-my-zsh/themes 路径下找到 agnoster.zsh-theme 文件,可使用文本工具打开,将里面的 build_prompt 下的 prompt_context 字段在前面加#注释掉即可。

结语

工作和兴趣上努力让自己变得酷一点,生活上努力让自己变得更温暖一点。

另外,很感谢你阅读完了本文,我相信你与众不同。


微信公众号