转载

MacOS下,打造完美高效的终端(Term)

磨叽了半个月,写下这篇博文,记录一下最近对Term的改造,技巧多半来自网络,在这里做一下整理。开始写这篇博文是通宵看完WWDC那天,处于懵逼的状态时,把标题改了刚刚更名后的MacOS,其实文章内描述的还是OS X 11.11 EI Capitan。

系统自带的终端,应该说不上丑,满足日常工作来说已经足够了。不过既然是开发者,对生产力应该有极致的要求,更何况是iOS开发者,对开发工具的颜值,也是有一定要求的!

今天就来介绍一下,基于iTerm,如何打造一款属于自己的终端工具。用Linux的同学也不用担心,文中除了iTerm没有以外,其他工具都是可以在Linux上使用的。至于Windows的同学,Sorry,我救不了你们……

我们的目标

MacOS下,打造完美高效的终端(Term)

我们的目标当然不仅仅是没有蛀牙,上面的截图只能展示出ZSH强大的冰山一角。先简单介绍一下ZSH能给我们带来哪些便利吧……

  • tab 键自动补全路径时,不区分大小写(终于不用纠结Linux和Mac系统文件夹的大小写差异了)
  • 自动补全命令参数,目前我用到的git、adb、npm都有很好的支持,不爱记指令参数的我,爱死这功能了
  • 灵活的配色配置—颜值担当
  • 跨session的历史指令记忆—懒人必备
  • ​单命令历史记忆,输完一个指令后,按方向键,可以检索出这个指令的历史使用记录,这玩意太方便了!
  • 更强大的tab补全功能,支持方向键直接选择tab候选
  • …………还有很多很多我都还没挖掘出的功能,你们自己去深挖吧

让我们开始把自己的Mac武装起来吧……

iTerm2

首先,可以前往iTerm2的官网下载 http://www.iterm2.com/ 。笔者撰稿时机器上装的是目前最新的iTerm2 v3.0.4(都已经到v3了,还叫iTerm2,感觉一定有故事)。

iTerm2是一款专为Mac打造的终端工具,公认的Mac下最强大的终端工具,没有之一。这里的话不细聊,要展开说可以说一整个系列。有兴趣的同学可以自己Google一下相关的介绍,或者等我下一个猴年马月再写一篇介绍iTerm2的博文……:smile:。

ZSH

Shell是Linux/Unix的一个外壳,你理解成衣服也行。它负责外界与Unix内核的交互,接收用户或其他应用程序的命令,然后把这些命令转化成内核能理解的语言,传给内核,内核是真正干活的,干完之后再把结果返回用户或应用程序。

Mac默认使用的Shell是bash。除此之外系统还默认安装了多款Shell可供选择:

  • csh
  • ksh
  • sh
  • tcsh
  • zsh

可以查看 /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查看一下效果。

oh-my-zsh

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主题的乱码的解决方法

用笔者推荐的 agnoster 主题,还有一个天坑,在Mac上不支持主题要求的字体,在iTerm2显示的是一串乱码,而不是笔者截图中的箭头。

解决方案是安装 Powerline ,clone这个项目以后,执行根目录的install.sh,把PL字体安装进系统。然后在iTerm的 Preferences->Profils->Default->Text 中将 TextNon-ASCII Font 都修改为Powerline字体,比如笔者选用的 Roboto Mono for Powerline

原文  http://zhengxu.tk/2016/07/22/iTerm2_ZSH_oh-my-zsh_agnoster/
正文到此结束
Loading...