颜值即效率 - Mac命令行工具亲民化改造

(转自台湾网友文章,部分补充)

身为程式开发者,很大一部分的时间是在用command line 做事,如果能把command line 调整成好用又酷炫的模样,不只是效率提升非常多,用起来爽度也比较高

像下面这样子的command line 是不是比内建的有意思多了?

过去总觉得设定command line 很麻烦,但其实如果不是要客制化很多细节,其实是非常简单的。这篇文章教大家如何用很简单的设定方式,就可以做到很酷炫的程度。没试过的人照着这篇的步骤跑,十多分钟就可以搞定了~

这篇的做法会依循以下两个原则,让不熟自订zsh 的人可以最轻松的入门:

1、避免搞乱你的开发环境:尽可能使用homebrew 来安装需要的套件

2、尽可能简化需要理解的概念。除了oh-my-zsh,不引入其他进阶的zsh 套件管理工具以及复杂的自订功能

最后的结果大概会是长这样:

本教程会带你来到这里

安装、设定方式

總共有以下步驟:

1、安裝 iTerm2

2、修改 iTerm2 的 color scheme

3、安裝 powerline font

4、安裝 zsh

5、安裝 oh-my-zsh

6、安裝 zsh theme: powerlevel9k

7、設定 powerlevel9k

步驟看似很多,但是每一步都很簡單!


安装iTerm2:

虽然不是必要,内建的Terminal app 也可以,不过iTerm2 还是比较好用,下面的示范也全都是用iTerm2

安装方式:

brew install iterm2

安装好以后,打开iTerm2 检查Report Terminal Type 的设定,设定路径:Preferences > Profiles > Terminal > Report Terminal Type

設為 xterm-256color,等等在 terminal 才能看得到漂亮的顏色

iTerm2 Report Terminal Type 選單

修改iTerm2 的color scheme

这步骤很重要,预设的很丑,想要自己的command line 看起来赏心悦目就绝对要换掉预设的

设定路径:Preferences > Profiles > Colors > Color Presets...

內建已經幾個選則可以用,不過幾乎都很難看,iTerm2 Color Schemes 有超多可以選,先把整個 repo 下載到自己的電腦後,然後 import 到 iTerm2:

剛才下載下來的 iTerm2-Color-Schemes 有很多個資料夾,從 schemes 資料夾裡面選一個喜歡的 color scheme

这边要注意的是点选了档案import 以后并不会生效,还要再去color preset 点选你刚import 的scheme 才会生效

我自己是用 Tomorrow Night Eighties,優點是對比不會太強比較不刺眼,螢幕盯久了不會不舒服,顏色飽和度也適中,看起來質感比較好。不曉得要選哪一個的人可以試試看

https://github.com/mbadolato/iTerm2-Color-Schemes 上的 Tomorrow Night Eighties 截圖

这篇文章后面的command line 截图都是用这个color scheme,如果你发现按照我的安装步骤来做看起来颜色却不太一样,那就是你的iTerm2 color scheme 和我不同


安装powerline font

因为我们要用的theme 会用到很多的特殊icon,所以iTerm2 选用的字型必需要支援这种特殊icon font。这类型的字体统称为powerline font(另外还有加强版支援更多特殊icon 的叫的nerd font)

没有安装的话画面会长这样,遇到icon 会变框框问号

非powerline font😭

装完并设定新字型后的效果:

powerline font😊

支援 powerline 的字型很多,我推薦 Sauce Code Pro Nerd Font Complete

安裝方式推薦直接用 brew 安裝比較快又好管理

安装指令:

brew install font-sauce-code-pro-nerd-font

如果想要装别的,brew 上面也有很多字型可以挑。关键字是nerd

brew search nerd

这么多字型够挑了吧~

装完后,记得修改iTerm2 字型设定否则不会生效。请改成SauceCodePro Nerd Font 或你自己下载的字型

设定路径:Preferences > Profiles > Text > Change Font

修改iTerm2 字型设定

若你切換字型後,發生 iTerm2 無法正常運作,有可能是遇到同一字型有複數版本的問題,請按照以下流程修復:

打開 Font Book.app -> 選擇該字體 -> 選擇自動解決版本問題


安装zsh:

zsh 是个取代bash 的强大shell,比bash 好用几百倍。这篇文章介绍的command line 设定一定要跑在zsh。没用过的一定要试一下

一样用homebrew 安装:

brew install zsh

并把zsh 设定为你的预设shell:

sudo sh -c "echo $(which zsh) >> /etc/shells"

chsh -s $(which zsh)


安装oh-my-zsh

上一步装完zsh 后,就可以开始调整我们想要的command line 外观设定了,但是原始的zsh 因为设定太难搞,所以多年前刚出现的时候没有受到太多关注,直到有人写了一套叫 现在几乎所有zsh 好用的工具都有支援oh-my-zsh,所以当然是要装这东西

安装指令:

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

注:这会直接执行oh-my-zsh 的 install.sh

有疑慮的人可以先稍微研究一下 oh-my-zsh github 上的 install.sh,覺得放心再執行

执行完以后如果没有出现什么错误讯息就代表成功了,同时会发现多了oh-my-zsh 的资料夹 ~/.oh-my-zsh


重头戏!!安装zsh theme powerlevel9k

剛裝完 oh-my-zsh 以後,預設是使用內建的 theme robbyrussell,多了 git 資訊,顏色也看起來比原生 bash 好一些:

不過 oh-my-zsh 內建很多 theme,在它的 github wiki 上有很多截圖可以參考

切換內建的 theme 很簡單,直接修改你的 ~/.zshrc,把原本 ZSH_THEME=”robbyrussell” 改成你想要的:

# 编辑 ~/.zshrc

ZSH_THEME=”agnoster” # 試試看把 robbyrussell 改成 agnoster

任何的zsh 设定修改过后,还要执行以下指令才会生效

exec $SHELL

agnoster 看起来是不是比robbyrussell 漂亮多了?

这边推荐一个超强的theme,powerlevel9k!

文章开头的图片就是撷取自powerlevel9k 的 github

圖片來源:https://github.com/bhilburn/powerlevel9k

powerlevel9k 不只是像上面的示范图显示一些基本的资讯,还可以做到很屌的事情,比如像下图那样,显示WiFi 讯号强度、笔电电池电力、CPU loading、system free memory 等等资讯在command line

圖片擷取自 powerlevel9k github

powerlevel9k 安装方式:

1. powerlevel9k 不是 oh-my-zsh 內建的 theme ,必須另外下載

指令:

git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k

2. 編輯你的 ~/.zshrc ,把 ZSH_THEME 設為 powerlevel9k,並設定要顯示哪些東西在 command line 上:

ZSH_THEME="powerlevel9k/powerlevel9k"

# command line 左邊想顯示的內容

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir) # <= left prompt 設了 "dir"

# command line 右邊想顯示的內容

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(time) # <= right prompt 設了 "time"

上面的例子我們把左邊設了一個 dir,右邊設了 time,代表左邊想顯示當前資料夾路徑,右邊顯示時間。(译注:不设定,默认也有这些,下同)

設定完後 command line 看起來會像這樣 (記得執行 exec $SHELL,設定才會生效):

左边显示当前资料夹路径,右边显示时间

如果想要有版本控制的資訊,可以在 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS 加上 vcs(vcs 為 version control system 的縮寫)

# 編輯 ~/.zshrc

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir vcs) # 加上 "vcs"

command line 会变这样:

多了git branch 以及git status 资讯

当你进入了一个没有写入权限的资料夹时还可以给你提醒:

# 加上"dir_writable"

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_writable vcs)

/etc 没有写入权限,多出一个锁头提醒你

如果你的command line 是设成vi mode ,相信你一定碰过这个困扰,就是不晓得自己是处在normal mode 还是insert mode。没关系,powerlevel9k 可以帮你解决这个问题:

# 加上"vi_mode"

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_writable vcs vi_mode)

结果如下:

上图告诉我们现在在insert mode

按下 ESC

告诉你变normal mode 啦~赞吧!


我自己习惯左侧的设定放一些常用基本资讯

右邊放一些好用但不是每次下指令都要看的東西

command line 右边的设定放在 POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS

例如显示上一个指令的return code:

# 加上"status" 显示上一个指令的return code:

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status time)

如果指令没出错,linux return code 为0 时会有个绿色小勾勾:

指令正确执行,return code 为 0

如果打了错误指令会出现相对应的return code,并且用红色底色提醒你

指令执行错误,return code 为127

还可以显示目前电脑的free memory:

# 加上ram,显示目前的free memory

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(statusramtime)

还有4.61G 的记忆体可用

上圖的最左方有個資料夾 icon,且 git 資訊多顯示了幾個 icon,這用原本的設定是看不到的,需要加上這行:

POWERLEVEL9K_MODE='nerdfont-complete'

powerlevel9k 的 wiki 有解釋這個設定的作用,請大家使用時注意一下別忘記加上去


加上CPU load average:

# 加上load 显示CPU 忙碌程度

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status ram load time)

CPU 忙碌程度2.45,还行

显示电量:

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(battery)

还可以用6 小时又11 分

示范了不少,但还有非常非常多东西可以用,请参考这个列表自己玩玩看 https://github.com/bhilburn/powerlevel9k#available-prompt-segments

不过有些东西中看不中用,放太多东西也会让command line 反应变慢,试了各种设定一阵子后,只留下了一些我觉得比较有用的,给大家参考:

# 左側

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir dir_writable vcs vi_mode)

# 右側

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs history ram load time)

# 若當前登入的帳號為你的帳號 xxx,就不用特別顯示出來

DEFAULT_USER="xxx"

# 使用 nerd font 時可以顯示更多 icon。詳情請參考 powerlevel9k wiki POWERLEVEL9K_MODE='nerdfont-complete'


最后…

这篇文章介绍了怎么样把自己的command line 替换成zsh,并且使用很厉害的powerlevel9k theme,不过zsh 不只是可以换酷炫的theme 而已,更重要的是还有很多比bash 好用的功能可以大幅提升工作效率,又可以装各种方便的plugin,就留待有机会时再介绍啰

最后的最后…

你可能会好奇为什么叫做 powerlevel9k (power level 9000)


Its Over 9000~~~~~~~~

补充:zsh缺少自动补全功能的,需要安装插件,推荐安装zsh-autosuggestions。可以参考tianyu_f 的教程

1. 下载该插件到.oh-my-zsh的插件目录

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

2. 编辑.zshrc文件

找到plugins=(git)这一行,如果没有添加。更改为如下

plugins=(git zsh-autosuggestions)

3.更改颜色

zsh-autosuggestions默认颜色在本文推荐的Tomorrow Night Eighties 主题中显示不明显,需要自行在.zshrc文件中设定,如:

ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#808080"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容