磨叽了半个月,写下这篇博文,记录一下最近对Term的改造,技巧多半来自网络,在这里做一下整理。开始写这篇博文是通宵看完WWDC那天,处于懵逼的状态时,把标题改了刚刚更名后的MacOS,其实文章内描述的还是OS X 11.11 EI Capitan。
系统自带的终端,应该说不上丑,满足日常工作来说已经足够了。不过既然是开发者,对生产力应该有极致的要求,更何况是iOS开发者,对开发工具的颜值,也是有一定要求的!
今天就来介绍一下,基于iTerm,如何打造一款属于自己的终端工具。用Linux的同学也不用担心,文中除了iTerm没有以外,其他工具都是可以在Linux上使用的。至于Windows的同学,Sorry,我救不了你们……
我们的目标当然不仅仅是没有蛀牙,上面的截图只能展示出ZSH强大的冰山一角。先简单介绍一下ZSH能给我们带来哪些便利吧……
tab
键自动补全路径时,不区分大小写(终于不用纠结Linux和Mac系统文件夹的大小写差异了) 让我们开始把自己的Mac武装起来吧……
首先,可以前往iTerm2的官网下载 http://www.iterm2.com/ 。笔者撰稿时机器上装的是目前最新的iTerm2 v3.0.4(都已经到v3了,还叫iTerm2,感觉一定有故事)。
iTerm2是一款专为Mac打造的终端工具,公认的Mac下最强大的终端工具,没有之一。这里的话不细聊,要展开说可以说一整个系列。有兴趣的同学可以自己Google一下相关的介绍,或者等我下一个猴年马月再写一篇介绍iTerm2的博文……:smile:。
Shell是Linux/Unix的一个外壳,你理解成衣服也行。它负责外界与Unix内核的交互,接收用户或其他应用程序的命令,然后把这些命令转化成内核能理解的语言,传给内核,内核是真正干活的,干完之后再把结果返回用户或应用程序。
Mac默认使用的Shell是bash。除此之外系统还默认安装了多款Shell可供选择:
可以查看 /etc/shells
文件来查看本机已装的Shell。
接下来,我们就来体验一下传说中的『终极的Shell』— ZSH
。
虽然系统已经自带了ZSH,但是通常版本较旧,无法直接更新,笔者建议用HomeBrew安装最新版的ZSH,来替代系统默认的ZSH。如果对版本没追求的同学可以跳过这步。
$ brew install zsh
没有安装Homebrew,或者提示找不到brew命令的,可以现在iTerm2中执行一下代码,安装Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
都安装好以后需要先编辑 /etc/shells
,把新安装的 /usr/local/bin/zsh
添加进去,注意编辑时需要加 sudo
$ sudo vim /etc/shells
现在就可以把终端默认的Shell从bash切换到ZSH了。
# 切换默认Shell为brew安装新版的zsh
$ chsh -s /usr/local/bin/zsh
# 如果是,刚刚选择使用系统默认ZSH的同学注意,你们的路径是系统默认路径/bin/zsh
执行后,输入Mac登录密码,就完成了切换。可以重启iTerm2查看一下效果。
ZSH作为强大的shell,来自于它丰富的可配置功能。不过过于灵活的配置,造成ZSH的配置极其复杂,从而出现了ZSH的快速配置工具oh-my-zsh。它的官方网站是 http://ohmyz.sh/ 。推荐使用CURL安装
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
重启iTerm2就可以直接看到效果。
oh-my-zsh的默认主题是 robbyrussell
而文章开头处截图的是笔者选用的 agnoster
主题,oh-my-zsh在安装时就已经提供了几十套主题候选,可以在 ~/.oh-my-zsh/themes/
下查看。修改主题的方法是编辑 ~/.zshrc
,修改
ZSH_THEME=="agnoster"
依旧是重启后生效。如果要对主题样式进行自定义,可以编辑 ~/.oh-my-zsh/themes/agnoster.zsh-theme
文件,达到自己想要的效果。
用笔者推荐的 agnoster
主题,还有一个天坑,在Mac上不支持主题要求的字体,在iTerm2显示的是一串乱码,而不是笔者截图中的箭头。
解决方案是安装 Powerline ,clone这个项目以后,执行根目录的install.sh,把PL字体安装进系统。然后在iTerm的 Preferences->Profils->Default->Text
中将 Text
和 Non-ASCII Font
都修改为Powerline字体,比如笔者选用的 Roboto Mono for Powerline
。